\n"
@@ -37,7 +37,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -74,7 +74,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -103,152 +103,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -373,7 +402,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -433,27 +462,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -510,8 +539,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -523,19 +552,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -543,13 +571,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -590,13 +619,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -605,13 +636,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -650,7 +681,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -658,8 +689,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -670,14 +701,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -696,15 +726,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -712,12 +741,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -765,7 +795,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -773,7 +803,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -781,16 +811,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -798,7 +828,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -809,9 +839,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -822,34 +852,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -882,11 +911,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -900,8 +929,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -913,9 +942,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -937,12 +966,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -994,7 +1023,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1006,9 +1035,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1058,14 +1087,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1149,7 +1178,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1173,9 +1202,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1185,16 +1214,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1202,7 +1231,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1226,7 +1255,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1239,8 +1268,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1289,8 +1318,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1299,48 +1328,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1373,7 +1402,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1502,9 +1531,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1540,7 +1569,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1557,546 +1586,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2124,7 +2201,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2155,7 +2232,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2170,244 +2247,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2421,7 +2503,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2436,7 +2518,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2461,16 +2543,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2491,8 +2573,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2500,106 +2582,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2610,17 +2692,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2635,9 +2717,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2650,8 +2732,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2660,8 +2742,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2677,7 +2759,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2694,18 +2776,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2718,41 +2800,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2776,13 +2858,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2790,11 +2872,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2818,8 +2900,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2828,7 +2910,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2930,6 +3012,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2979,11 +3065,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2992,7 +3078,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3024,7 +3110,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3032,150 +3118,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3228,14 +3346,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3337,7 +3453,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3370,7 +3486,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3387,7 +3503,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3426,9 +3542,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3437,49 +3553,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3487,18 +3560,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3512,7 +3585,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3541,7 +3614,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3564,71 +3637,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3815,12 +3919,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3880,7 +4000,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3924,391 +4044,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4318,17 +4438,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4375,33 +4495,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4436,7 +4557,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4450,7 +4571,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4471,26 +4592,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4534,7 +4659,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4555,7 +4680,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4564,10 +4689,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4587,7 +4712,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4603,8 +4728,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4612,8 +4737,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4645,50 +4770,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4702,19 +4827,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4722,195 +4847,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4920,7 +5054,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4964,53 +5098,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5018,8 +5152,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5033,10 +5167,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5117,51 +5251,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5267,17 +5401,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5289,51 +5423,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5385,258 +5519,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5769,7 +5911,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5796,7 +5938,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5826,7 +5968,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5976,7 +6118,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6040,7 +6182,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6060,7 +6202,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6172,11 +6314,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6241,7 +6383,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6258,7 +6400,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6333,16 +6475,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6359,6 +6501,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6437,65 +6580,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6516,1358 +6663,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index bfad560e33..b66b45bb37 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -36,7 +36,7 @@ msgstr "Ingrese la fecha"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Confirmar"
@@ -71,16 +71,16 @@ msgstr "Seleccionar Categoría"
#: InvenTree/helpers.py:401
#, python-brace-format
msgid "Duplicate serial: {n}"
-msgstr ""
+msgstr "Número de serie duplicado: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Cantidad proporcionada no válida"
#: InvenTree/helpers.py:411
msgid "Empty serial number string"
-msgstr ""
+msgstr "No se ha proporcionado un número de serie"
#: InvenTree/helpers.py:433 InvenTree/helpers.py:436 InvenTree/helpers.py:439
#: InvenTree/helpers.py:464
@@ -91,7 +91,7 @@ msgstr "Grupo no válido: un {g}"
#: InvenTree/helpers.py:469
#, python-brace-format
msgid "Duplicate serial: {g}"
-msgstr ""
+msgstr "Número de serie duplicado: {g}"
#: InvenTree/helpers.py:477
msgid "No serial numbers found"
@@ -100,168 +100,197 @@ msgstr "Numeros de serie no encontrados"
#: InvenTree/helpers.py:481
#, python-brace-format
msgid "Number of unique serial number ({s}) must match quantity ({q})"
-msgstr ""
+msgstr "El número de números de serie únicos ({s}) debe coincidir con la cantidad ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
-msgstr ""
+msgstr "Archivo adjunto"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
-msgstr ""
+msgstr "Seleccionar archivo para adjuntar"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Comentario"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
-msgstr ""
+msgstr "Comentario del archivo"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Usuario"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
-msgstr ""
+msgstr "fecha de subida"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr "El nombre del archivo no debe estar vacío"
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr "Directorio de archivos adjuntos no válido"
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr "El nombre del archivo contiene el carácter ilegal '{c}'"
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr "Falta el nombre de extensión del archivo"
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr "Ya existe un archivo adjunto con este nombre"
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr "Error al cambiar el nombre del archivo"
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
-msgstr ""
+msgstr "Selección no válida"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Nombre"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Descripción"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
-msgstr ""
+msgstr "Descripción (opcional)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
-msgstr ""
+msgstr "padre"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
-msgstr ""
+msgstr "Debe ser un numero valido"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr "Nombre de Archivo"
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Alemán"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
-msgstr ""
+msgstr "Griego"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Inglés"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
-msgstr ""
+msgstr "Español"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Francés"
-#: InvenTree/settings.py:523
-msgid "Hebrew"
-msgstr ""
-
-#: InvenTree/settings.py:524
-msgid "Italian"
-msgstr ""
-
-#: InvenTree/settings.py:525
-msgid "Japanese"
-msgstr ""
-
-#: InvenTree/settings.py:526
-msgid "Korean"
-msgstr ""
-
-#: InvenTree/settings.py:527
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/settings.py:528
-msgid "Norwegian"
-msgstr ""
+msgid "Hebrew"
+msgstr "Hebreo"
#: InvenTree/settings.py:529
+msgid "Italian"
+msgstr "Italiano"
+
+#: InvenTree/settings.py:530
+msgid "Japanese"
+msgstr "Japonés"
+
+#: InvenTree/settings.py:531
+msgid "Korean"
+msgstr "Coreano"
+
+#: InvenTree/settings.py:532
+msgid "Dutch"
+msgstr "Holandés"
+
+#: InvenTree/settings.py:533
+msgid "Norwegian"
+msgstr "Noruego"
+
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polaco"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
-msgstr ""
+msgstr "Ruso"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
-msgstr ""
+msgstr "Sueco"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
-msgstr ""
+msgstr "Tailandés"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
-msgstr ""
+msgstr "Vietnamita"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
-msgstr ""
+msgstr "Chino"
#: InvenTree/status.py:94
msgid "Background worker check failed"
-msgstr ""
+msgstr "Falló la comprobación en segundo plano del worker"
#: InvenTree/status.py:98
msgid "Email backend not configured"
-msgstr ""
+msgstr "No se ha configurado el backend de correo"
#: InvenTree/status.py:101
msgid "InvenTree system health checks failed"
-msgstr ""
+msgstr "Las comprobaciones de estado del sistema InvenTree fallaron"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:145
#: InvenTree/status_codes.py:314
@@ -289,7 +318,7 @@ msgstr "Perdida"
#: InvenTree/status_codes.py:109 InvenTree/status_codes.py:149
#: InvenTree/status_codes.py:192
msgid "Returned"
-msgstr ""
+msgstr "Devuelto"
#: InvenTree/status_codes.py:146
#: order/templates/order/sales_order_base.html:126
@@ -318,7 +347,7 @@ msgstr "Rechazado"
#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "Entrada antigua de rastreo de stock"
#: InvenTree/status_codes.py:274
msgid "Stock item created"
@@ -350,39 +379,39 @@ msgstr "Ubicación cambiada"
#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
-msgstr ""
+msgstr "Instalado en el ensamblaje"
#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
-msgstr ""
+msgstr "Retirado del ensamblaje"
#: InvenTree/status_codes.py:288
msgid "Installed component item"
-msgstr ""
+msgstr "Artículo del componente instalado"
#: InvenTree/status_codes.py:289
msgid "Removed component item"
-msgstr ""
+msgstr "Elemento de componente eliminado"
#: InvenTree/status_codes.py:291
msgid "Split from parent item"
-msgstr ""
+msgstr "Separar del elemento principal"
#: InvenTree/status_codes.py:292
msgid "Split child item"
-msgstr ""
+msgstr "Dividir elemento secundario"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
-msgstr ""
+msgstr "Enviar al cliente"
#: InvenTree/status_codes.py:295
msgid "Returned from customer"
-msgstr ""
+msgstr "Devolución del cliente"
#: InvenTree/status_codes.py:297
msgid "Build order output created"
-msgstr ""
+msgstr "Trabajo de ensamblaje creado"
#: InvenTree/status_codes.py:298
msgid "Build order output completed"
@@ -398,143 +427,142 @@ msgstr "Producción"
#: InvenTree/validators.py:22
msgid "Not a valid currency code"
-msgstr ""
+msgstr "No es un código de moneda válido"
#: InvenTree/validators.py:50
msgid "Invalid character in part name"
-msgstr ""
+msgstr "Carácter no válido en el nombre del artículo"
#: InvenTree/validators.py:63
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
-msgstr ""
+msgstr "El IPN debe coincidir con la expresión regular {pat}"
#: InvenTree/validators.py:77 InvenTree/validators.py:91
#: InvenTree/validators.py:105
#, python-brace-format
msgid "Reference must match pattern {pattern}"
-msgstr ""
+msgstr "La referencia debe coincidir con la expresión regular {pattern}"
#: InvenTree/validators.py:113
#, python-brace-format
msgid "Illegal character in name ({x})"
-msgstr ""
+msgstr "Carácter ilegal en el nombre ({x})"
#: InvenTree/validators.py:132 InvenTree/validators.py:148
msgid "Overage value must not be negative"
-msgstr ""
+msgstr "El valor excedente no debe ser negativo"
#: InvenTree/validators.py:150
msgid "Overage must not exceed 100%"
-msgstr ""
+msgstr "El excedente no debe superar el 100%"
#: InvenTree/validators.py:157
msgid "Overage must be an integer value or a percentage"
-msgstr ""
+msgstr "El excedente debe ser un valor entero o un porcentaje"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Eliminar elemento"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
-msgstr ""
+msgstr "Marque la casilla para confirmar la eliminación del artículo"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
-msgstr ""
+msgstr "Editar datos del usuario"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Configurar Contraseña"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
-msgstr ""
+msgstr "Los campos de contraseña deben coincidir"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Información del sistema"
#: barcodes/api.py:53 barcodes/api.py:150
msgid "Must provide barcode_data parameter"
-msgstr ""
+msgstr "Debe proporcionar el parámetro barcode_data"
#: barcodes/api.py:126
msgid "No match found for barcode data"
-msgstr ""
+msgstr "No se encontró ninguna coincidencia para los datos del código de barras"
#: barcodes/api.py:128
msgid "Match found for barcode data"
-msgstr ""
+msgstr "Coincidencia encontrada para datos de códigos de barras"
#: barcodes/api.py:153
msgid "Must provide stockitem parameter"
-msgstr ""
+msgstr "Debe proporcionar el parámetro stockitem"
#: barcodes/api.py:160
msgid "No matching stock item found"
-msgstr ""
+msgstr "No se ha encontrado ningún artículo de stock que coincida"
#: barcodes/api.py:190
msgid "Barcode already matches StockItem object"
-msgstr ""
+msgstr "El código de barras ya corresponde al objeto de inventario"
#: barcodes/api.py:194
msgid "Barcode already matches StockLocation object"
-msgstr ""
+msgstr "El código de barras ya corresponde a la ubicación de almacenamiento de existencias"
#: barcodes/api.py:198
msgid "Barcode already matches Part object"
-msgstr ""
+msgstr "El código de barras ya corresponde a la parte"
#: barcodes/api.py:204 barcodes/api.py:216
msgid "Barcode hash already matches StockItem object"
-msgstr ""
+msgstr "El código de barras ya está asignado a un objeto de inventario"
#: barcodes/api.py:222
msgid "Barcode associated with StockItem"
-msgstr ""
+msgstr "Código de barras asignado al objeto de inventario"
#: build/forms.py:37
msgid "Build Order reference"
-msgstr ""
+msgstr "Número de orden de construcción"
#: build/forms.py:38
msgid "Order target date"
-msgstr ""
+msgstr "Fecha objetivo de pedido"
#: build/forms.py:42 build/templates/build/build_base.html:146
#: build/templates/build/detail.html:124
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
-msgstr ""
+msgstr "Fecha objetivo"
#: build/forms.py:43 build/models.py:277
msgid "Target date for build completion. Build will be overdue after this date."
-msgstr ""
+msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha."
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1402
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,23 +570,24 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Cantidad"
#: build/forms.py:49
msgid "Number of items to build"
-msgstr ""
+msgstr "Número de elementos para construir"
#: build/forms.py:91
msgid "Enter quantity for build output"
-msgstr ""
+msgstr "Ingrese la cantidad para la producción de la construcción"
#: build/forms.py:95 order/forms.py:114 stock/forms.py:83
msgid "Serial Numbers"
@@ -566,69 +595,71 @@ msgstr "Números de serie"
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
-msgstr ""
+msgstr "Introduzca los números de serie de salidas de construcción"
#: build/forms.py:103
msgid "Confirm creation of build output"
-msgstr ""
+msgstr "Confirmar la creación de salida de construcción"
#: build/forms.py:124
msgid "Confirm deletion of build output"
-msgstr ""
+msgstr "Confirmar eliminación de salida de construcción"
#: build/forms.py:145
msgid "Confirm unallocation of stock"
-msgstr ""
+msgstr "Confirmar la desasignación de stock"
#: build/forms.py:169
msgid "Confirm stock allocation"
-msgstr ""
+msgstr "Confirmar asignación de stock"
#: build/forms.py:186
msgid "Mark build as complete"
-msgstr ""
+msgstr "Marcar como construcción completa"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Unicación"
#: build/forms.py:211
msgid "Location of completed parts"
-msgstr ""
+msgstr "Ubicación de las partes completadas"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Estado"
#: build/forms.py:216
msgid "Build output stock status"
-msgstr ""
+msgstr "Generar estado de stock de salida"
#: build/forms.py:223
msgid "Confirm incomplete"
-msgstr ""
+msgstr "Confirmar incompleta"
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
-msgstr ""
+msgstr "Confirmar la finalización con una asignación de stock incompleta"
#: build/forms.py:227
msgid "Confirm build completion"
-msgstr ""
+msgstr "Confirmar la terminación de construcción"
#: build/forms.py:252
msgid "Confirm cancel"
@@ -636,47 +667,46 @@ msgstr "Confirmar cancelación"
#: build/forms.py:252 build/views.py:65
msgid "Confirm build cancellation"
-msgstr ""
+msgstr "Confirmar la cancelación de construcción"
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
-msgstr ""
+msgstr "Seleccione la cantidad de stock para asignar"
#: build/models.py:113
msgid "Invalid choice for parent build"
-msgstr ""
+msgstr "Opción no válida para la construcción padre"
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
-msgstr ""
+msgstr "Construir órden"
#: build/models.py:118 build/templates/build/index.html:8
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
msgid "Build Orders"
-msgstr ""
+msgstr "Construir órdenes"
#: build/models.py:178
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referencia"
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Parte"
@@ -750,11 +780,11 @@ msgstr ""
#: build/models.py:244
msgid "Build Quantity"
-msgstr ""
+msgstr "Cantidad a crear"
#: build/models.py:247
msgid "Number of stock items to build"
-msgstr ""
+msgstr "Número de objetos existentes a construir"
#: build/models.py:251
msgid "Completed items"
@@ -762,111 +792,110 @@ msgstr "Elementos completados"
#: build/models.py:253
msgid "Number of stock items which have been completed"
-msgstr ""
+msgstr "Número de productos en stock que se han completado"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
-msgstr ""
+msgstr "Estado de la construcción"
#: build/models.py:261
msgid "Build status code"
-msgstr ""
+msgstr "Código de estado de construcción"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
-msgstr ""
+msgstr "Numero de lote"
#: build/models.py:269
msgid "Batch code for this build output"
-msgstr ""
+msgstr "Número de lote de este producto final"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
-msgstr ""
+msgstr "Fecha límite de finalización"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
-msgstr ""
+msgstr "Fecha de finalización"
#: build/models.py:286
msgid "completed by"
-msgstr ""
+msgstr "terminado por"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
-msgstr ""
+msgstr "Emitido por"
#: build/models.py:295
msgid "User who issued this build order"
-msgstr ""
+msgstr "El usuario que emitió esta orden"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Responsable"
#: build/models.py:304
msgid "User responsible for this build order"
-msgstr ""
+msgstr "Usuario responsable de esta orden"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
-msgstr ""
+msgstr "Link externo"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
-msgstr ""
+msgstr "Enlace a URL externa"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Notas"
#: build/models.py:315
msgid "Extra build notes"
-msgstr ""
+msgstr "Notas adicionales de construcción"
#: build/models.py:792
msgid "No build output specified"
-msgstr ""
+msgstr "No se ha especificado salida de construcción"
#: build/models.py:795
msgid "Build output is already completed"
-msgstr ""
+msgstr "La construcción de la salida ya está completa"
#: build/models.py:798
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "La salida de la construcción no coincide con el orden de construcción"
#: build/models.py:1208
msgid "BuildItem must be unique for build, stock_item and install_into"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr "Número de serie"
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "Progreso"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1072,7 +1101,7 @@ msgstr ""
#: build/templates/build/detail.html:101
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
-msgstr ""
+msgstr "Emitido por"
#: build/templates/build/build_base.html:214
msgid "Incomplete Outputs"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr "Destinación"
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Lote"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr "Completados"
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Detalles"
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "días"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr "Página web"
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr "Teléfono"
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr "Teléfono de contacto"
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr "Email"
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr "Contacto"
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr "Fabricante"
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr "Proveedor"
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr "Nota"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr "Teléfono"
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr "Cliente"
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr "Opciones"
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr "Eliminar"
@@ -2659,8 +2741,8 @@ msgstr "Eliminar"
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr "Fabricantes"
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr "Exportar"
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index 253f75aa39..a44d04150e 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -36,7 +36,7 @@ msgstr "Entrer la date"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Confirmer"
@@ -73,7 +73,7 @@ msgstr "Sélectionnez une catégorie"
msgid "Duplicate serial: {n}"
msgstr "Dupliquer le numéro de série: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Quantité fournie invalide"
@@ -102,152 +102,181 @@ msgstr "Aucun numéro de série trouvé"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Le nombre de numéros de série uniques ({s}) doit correspondre à la quantité ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Pièce jointe"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Sélectionnez un fichier à joindre"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Commentaire"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Commentaire du fichier"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Utilisateur"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "date de chargement"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Nom"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Description"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Description (facultative)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "parent"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Allemand"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Anglais"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Français"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polonais"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turc"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr "Séparer de l'élément parent"
msgid "Split child item"
msgstr "Fractionner l'élément enfant"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Envoyé au client"
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Supprimer cet élément"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Modifier les informations utilisateur"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Informations système"
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Quantité"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Emplacement des pièces terminées"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Référence"
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Pièce"
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr "Date de création"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Lien Externe"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Notes"
@@ -881,11 +910,11 @@ msgstr "L'élément de construction doit spécifier une sortie de construction,
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr "L'article en stock sélectionné n'a pas été trouvé dans la BOM pour la pièce '{p}'"
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "Commander les pièces requises"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Commander des pièces"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Pieces jointes"
@@ -1298,48 +1327,48 @@ msgstr "Pieces jointes"
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Détails"
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr "Disponible"
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr "{name.title()} Fichier"
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr "Télécharger depuis l'URL"
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr "Regex IPN"
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr "Expression régulière pour la correspondance avec l'IPN de la Pièce"
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr "Autoriser les IPN dupliqués"
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr "Permettre à plusieurs pièces de partager le même IPN"
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr "Autoriser l'édition de l'IPN"
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr "Permettre de modifier la valeur de l'IPN lors de l'édition d'une pièce"
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "jours"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce"
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr "IPN"
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr "A un IPN"
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 46b94951af..fc12e2bd83 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index 95d97efc15..55af0d653e 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 66b6042cf2..fa012e8d93 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -36,7 +36,7 @@ msgstr "Inserisci la data"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Conferma"
@@ -73,7 +73,7 @@ msgstr "Selezione una categoria"
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Tedesco"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Greco"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Inglese"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Spagnolo"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Francese"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Ebraico"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Giapponese"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Olandese"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norvegese"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polacco"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Russo"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Svedese"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Thailandese"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Cinese"
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Quantità"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index 9c938bc212..60ece0791e 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -36,7 +36,7 @@ msgstr "日付を入力する"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "確認"
@@ -73,7 +73,7 @@ msgstr "カテゴリの選択"
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "数量コードが無効です"
@@ -102,152 +102,181 @@ msgstr "シリアル番号が見つかりません"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "添付ファイル"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "添付ファイルを選択"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "コメント:"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "ファイルコメント"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "ユーザー"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "アップロード日時"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "無効な選択です"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "お名前"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "説明"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "説明 (オプション)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "親"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "有効な数字でなければなりません"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "ドイツ語"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "英語"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "フランス語"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "ポーランド語"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "トルコ語"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "完了したパーツの場所"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "パーツ"
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr "パーツを割り当てるためにビルドする"
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "注文必須パーツ"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "パーツの注文"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr "テンプレート"
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr "パーツはデフォルトのテンプレートです"
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr "アセンブリ"
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr "コンポーネント"
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr "購入可能"
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr "パーツはデフォルトで購入可能です"
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr "パーツはデフォルトで販売可能です"
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr "追跡可能"
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr "パーツはデフォルトで追跡可能です"
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr "メーカー・パーツ"
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr "新しいサプライヤー・パーツを作成"
msgid "New Supplier Part"
msgstr "新しいサプライヤー・パーツ"
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr "新しいサプライヤー・パーツ"
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr "パーツの注文"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr "パーツを削除"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr "パーツを削除"
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr "メーカー・パーツ"
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr "新しいメーカー・パーツを作成"
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr "新しいメーカ―・パーツ"
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr "パーツの注文"
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr "メーカー・パーツの編集"
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr "メーカー・パーツを削除"
@@ -2634,9 +2716,9 @@ msgstr "内部パーツ"
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr "メーカー・パーツの在庫"
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr "メーカー・パーツの注文"
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
-msgstr "%(order)s - %(desc)s の未処理のパーツを受け取る"
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "パーツ"
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "メーカー・パーツの編集"
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr "メーカー・パーツを削除"
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 900a659884..c0b31fe815 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index 13d7b460c0..8a14f3628d 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -19,7 +19,7 @@ msgstr ""
#: InvenTree/api.py:64
msgid "API endpoint not found"
-msgstr ""
+msgstr "API eindpunt niet gevonden"
#: InvenTree/api.py:110
msgid "No action specified"
@@ -36,7 +36,7 @@ msgstr "Voer datum in"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Bevestigen"
@@ -71,16 +71,16 @@ msgstr "Categorie selecteren"
#: InvenTree/helpers.py:401
#, python-brace-format
msgid "Duplicate serial: {n}"
-msgstr ""
+msgstr "Dubbel serienummer: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Ongeldige hoeveeldheid ingevoerd"
#: InvenTree/helpers.py:411
msgid "Empty serial number string"
-msgstr ""
+msgstr "Leeg serienummer"
#: InvenTree/helpers.py:433 InvenTree/helpers.py:436 InvenTree/helpers.py:439
#: InvenTree/helpers.py:464
@@ -91,7 +91,7 @@ msgstr "Ongeldige groep: {g}"
#: InvenTree/helpers.py:469
#, python-brace-format
msgid "Duplicate serial: {g}"
-msgstr ""
+msgstr "Dubbel serienummer: {g}"
#: InvenTree/helpers.py:477
msgid "No serial numbers found"
@@ -102,152 +102,181 @@ msgstr "Geen serienummers gevonden"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Aantal unieke serienummer ({s}) moet overeenkomen met de hoeveelheid ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Bijlage"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Bestand als bijlage selecteren"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Opmerking"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Bijlage opmerking"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Gebruiker"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "uploaddatum"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr "Bestandsnaam mag niet leeg zijn"
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr "Fout bijlagemap"
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr "Bestandsnaam bevat illegale teken '{c}'"
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr "Bestandsnaam mist extensie"
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr "Bijlage met deze bestandsnaam bestaat al"
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr "Fout bij hernoemen bestand"
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Ongeldige keuze"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Naam"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Omschrijving"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Omschrijving (optioneel)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "overkoepelend"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Moet een geldig nummer zijn"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr "Bestandsnaam"
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Duits"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Grieks"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Engels"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Spaans"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Frans"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Hebreeuws"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Italiaans"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japans"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Koreaans"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Nederlands"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Noors"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Pools"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Zweeds"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Thais"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turks"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Vietnamees"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Chinees"
@@ -261,168 +290,168 @@ msgstr "E-mailbackend niet geconfigureerd"
#: InvenTree/status.py:101
msgid "InvenTree system health checks failed"
-msgstr ""
+msgstr "Inventree gezondsheidscheck faalt"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:145
#: InvenTree/status_codes.py:314
msgid "Pending"
-msgstr ""
+msgstr "Bezig"
#: InvenTree/status_codes.py:105
msgid "Placed"
-msgstr ""
+msgstr "Geplaatst"
#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:317
msgid "Complete"
-msgstr ""
+msgstr "Voltooid"
#: InvenTree/status_codes.py:107 InvenTree/status_codes.py:147
#: InvenTree/status_codes.py:316
msgid "Cancelled"
-msgstr ""
+msgstr "Geannuleerd"
#: InvenTree/status_codes.py:108 InvenTree/status_codes.py:148
#: InvenTree/status_codes.py:190
msgid "Lost"
-msgstr ""
+msgstr "Kwijt"
#: InvenTree/status_codes.py:109 InvenTree/status_codes.py:149
#: InvenTree/status_codes.py:192
msgid "Returned"
-msgstr ""
+msgstr "Retour"
#: InvenTree/status_codes.py:146
#: order/templates/order/sales_order_base.html:126
msgid "Shipped"
-msgstr ""
+msgstr "Verzonden"
#: InvenTree/status_codes.py:186
msgid "OK"
-msgstr ""
+msgstr "OK"
#: InvenTree/status_codes.py:187
msgid "Attention needed"
-msgstr ""
+msgstr "Aandacht nodig"
#: InvenTree/status_codes.py:188
msgid "Damaged"
-msgstr ""
+msgstr "Beschadigd"
#: InvenTree/status_codes.py:189
msgid "Destroyed"
-msgstr ""
+msgstr "Verwoest"
#: InvenTree/status_codes.py:191
msgid "Rejected"
-msgstr ""
+msgstr "Afgewezen"
#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "Verouderde trackingscode"
#: InvenTree/status_codes.py:274
msgid "Stock item created"
-msgstr ""
+msgstr "Voorraaditem gemaakt"
#: InvenTree/status_codes.py:276
msgid "Edited stock item"
-msgstr ""
+msgstr "Bewerken voorraaditem"
#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
-msgstr ""
+msgstr "Serienummer toegewezen"
#: InvenTree/status_codes.py:279
msgid "Stock counted"
-msgstr ""
+msgstr "Voorraad geteld"
#: InvenTree/status_codes.py:280
msgid "Stock manually added"
-msgstr ""
+msgstr "Voorraad handmatig toegevoegd"
#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
-msgstr ""
+msgstr "Voorraad handmatig verwijderd"
#: InvenTree/status_codes.py:283
msgid "Location changed"
-msgstr ""
+msgstr "Locatie veranderd"
#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
-msgstr ""
+msgstr "Gemonteerd"
#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
-msgstr ""
+msgstr "Gedemonteerd"
#: InvenTree/status_codes.py:288
msgid "Installed component item"
-msgstr ""
+msgstr "Gemonteerd item"
#: InvenTree/status_codes.py:289
msgid "Removed component item"
-msgstr ""
+msgstr "Gedemonteerd item"
#: InvenTree/status_codes.py:291
msgid "Split from parent item"
-msgstr ""
+msgstr "Splits van bovenliggend item"
#: InvenTree/status_codes.py:292
msgid "Split child item"
-msgstr ""
+msgstr "Splits onderliggende item"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
-msgstr ""
+msgstr "Naar klant verzonden"
#: InvenTree/status_codes.py:295
msgid "Returned from customer"
-msgstr ""
+msgstr "Geretourneerd door klant"
#: InvenTree/status_codes.py:297
msgid "Build order output created"
-msgstr ""
+msgstr "Montageopdracht gecreëerd"
#: InvenTree/status_codes.py:298
msgid "Build order output completed"
-msgstr ""
+msgstr "Montageopdracht voltooid"
#: InvenTree/status_codes.py:300
msgid "Received against purchase order"
-msgstr ""
+msgstr "Ontvangen tegen inkoopopdracht"
#: InvenTree/status_codes.py:315
msgid "Production"
-msgstr ""
+msgstr "Productie"
#: InvenTree/validators.py:22
msgid "Not a valid currency code"
-msgstr ""
+msgstr "Foute valutacode"
#: InvenTree/validators.py:50
msgid "Invalid character in part name"
-msgstr ""
+msgstr "Foute letter in onderdeelnaam"
#: InvenTree/validators.py:63
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
-msgstr ""
+msgstr "IPN moet overeenkomen met regex-patroon {pat}"
#: InvenTree/validators.py:77 InvenTree/validators.py:91
#: InvenTree/validators.py:105
#, python-brace-format
msgid "Reference must match pattern {pattern}"
-msgstr ""
+msgstr "Refernetie moet overeenkomen met patroon {pattern}"
#: InvenTree/validators.py:113
#, python-brace-format
msgid "Illegal character in name ({x})"
-msgstr ""
+msgstr "Illegale letter in naam ({x})"
#: InvenTree/validators.py:132 InvenTree/validators.py:148
msgid "Overage value must not be negative"
-msgstr ""
+msgstr "Overschrijdingswaarde mag niet negatief zijn"
#: InvenTree/validators.py:150
msgid "Overage must not exceed 100%"
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
-msgstr ""
+msgstr "Verwijder item"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
-msgstr ""
+msgstr "Selectievakje aanvinken om de verwijdering van items te bevestigen"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
-msgstr ""
+msgstr "Gebruikersgegevens bewerken"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
-msgstr ""
+msgstr "Wachtwoord instellen"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
-msgstr ""
+msgstr "Wachtwoordvelden komen niet overeen"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Systeeminformatie"
@@ -498,7 +527,7 @@ msgstr "Barcode gekoppeld aan StockItem"
#: build/forms.py:37
msgid "Build Order reference"
-msgstr ""
+msgstr "Bouwopdracht referentie"
#: build/forms.py:38
msgid "Order target date"
@@ -509,8 +538,8 @@ msgstr "Order streefdatum"
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Streefdatum"
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Aantal"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Markeer build als voltooid"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Locatie"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Locatie van voltooide onderdelen"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Status"
@@ -649,34 +680,33 @@ msgstr "Ongeldige keuze voor bovenliggende build"
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
-msgstr ""
+msgstr "Bouwopdracht"
#: build/models.py:118 build/templates/build/index.html:8
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
msgid "Build Orders"
-msgstr ""
+msgstr "Bouwopdrachten"
#: build/models.py:178
msgid "Build Order Reference"
-msgstr ""
+msgstr "Bouwopdracht referentie"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referentie"
@@ -687,7 +717,7 @@ msgstr "Korte beschrijving van de build"
#: build/models.py:199 build/templates/build/build_base.html:163
#: build/templates/build/detail.html:80
msgid "Parent Build"
-msgstr ""
+msgstr "Bovenliggende bouw"
#: build/models.py:200
msgid "BuildOrder to which this build is allocated"
@@ -695,15 +725,14 @@ msgstr "BuildOrder waaraan deze build is toegewezen"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr "BuildOrder waaraan deze build is toegewezen"
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Onderdeel"
@@ -746,11 +776,11 @@ msgstr "Bestemmings Locatie"
#: build/models.py:240
msgid "Select location where the completed items will be stored"
-msgstr ""
+msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen"
#: build/models.py:244
msgid "Build Quantity"
-msgstr ""
+msgstr "Bouwkwaliteit"
#: build/models.py:247
msgid "Number of stock items to build"
@@ -758,21 +788,21 @@ msgstr ""
#: build/models.py:251
msgid "Completed items"
-msgstr ""
+msgstr "Voltooide voorraadartikelen"
#: build/models.py:253
msgid "Number of stock items which have been completed"
-msgstr ""
+msgstr "Aantal voorraadartikelen die zijn voltooid"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
-msgstr ""
+msgstr "Bouwstatus"
#: build/models.py:261
msgid "Build status code"
-msgstr ""
+msgstr "Bouwstatuscode"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,93 +810,92 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
-msgstr ""
+msgstr "Aanmaakdatum"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
-msgstr ""
+msgstr "Verwachte voltooiingsdatum"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
-msgstr ""
+msgstr "Voltooiingsdatum"
#: build/models.py:286
msgid "completed by"
-msgstr ""
+msgstr "voltooid door"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
#: build/models.py:295
msgid "User who issued this build order"
-msgstr ""
+msgstr "Gebruiker die bouwopdracht heeft gegeven"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
-msgstr ""
+msgstr "Verantwoordelijke"
#: build/models.py:304
msgid "User responsible for this build order"
-msgstr ""
+msgstr "Gebruiker verantwoordelijk voor deze bouwopdracht"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
-msgstr ""
+msgstr "Externe Link"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
-msgstr ""
+msgstr "Link naar externe URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
-msgstr ""
+msgstr "Opmerkingen"
#: build/models.py:315
msgid "Extra build notes"
-msgstr ""
+msgstr "Opmerkingen over de bouw"
#: build/models.py:792
msgid "No build output specified"
-msgstr ""
+msgstr "Geen bouwuitvoer opgegeven"
#: build/models.py:795
msgid "Build output is already completed"
-msgstr ""
+msgstr "Bouwuitvoer is al voltooid"
#: build/models.py:798
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "Bouwuitvoer komt niet overeen met bouwopdracht"
#: build/models.py:1208
msgid "BuildItem must be unique for build, stock_item and install_into"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -896,96 +925,96 @@ msgstr ""
#: build/models.py:1312
#, python-brace-format
msgid "Selected stock item not found in BOM for part '{p}'"
-msgstr ""
+msgstr "Geselecteerde voorraadartikel niet gevonden in stuklijst voor onderdeel '{p}'"
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
-msgstr ""
+msgstr "Product"
#: build/models.py:1373
msgid "Build to allocate parts"
-msgstr ""
+msgstr "Bouw om onderdelen toe te wijzen"
#: build/models.py:1389 stock/templates/stock/item_base.html:8
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
-msgstr ""
+msgstr "Voorraadartikel"
#: build/models.py:1390
msgid "Source stock item"
-msgstr ""
+msgstr "Bron voorraadartikel"
#: build/models.py:1403
msgid "Stock quantity to allocate to build"
-msgstr ""
+msgstr "Voorraad hoeveelheid te alloceren aan bouw"
#: build/models.py:1411
msgid "Install into"
-msgstr ""
+msgstr "Installeren in"
#: build/models.py:1412
msgid "Destination stock item"
-msgstr ""
+msgstr "Bestemming voorraadartikel"
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
-msgstr ""
+msgstr "Serienummer"
#: build/templates/build/auto_allocate.html:9
msgid "Automatically Allocate Stock"
-msgstr ""
+msgstr "Automatisch voorraad toewijzen"
#: build/templates/build/auto_allocate.html:10
msgid "The following stock items will be allocated to the specified build output"
-msgstr ""
+msgstr "De volgende voorraadartikelen zullen worden toegewezen aan het opgegeven product"
#: build/templates/build/auto_allocate.html:37
msgid "No stock items found that can be automatically allocated to this build"
-msgstr ""
+msgstr "Geen voorraadartikelen gevonden die automatisch aan dit product toegewezen kunnen worden"
#: build/templates/build/auto_allocate.html:39
msgid "Stock items will have to be manually allocated"
-msgstr ""
+msgstr "Voorraad items zullen handmatig moeten worden toegewezen"
#: build/templates/build/build_base.html:18
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
-msgstr ""
+msgstr "Deze bouwopdracht is toegewezen aan verkooporder %(link)s"
#: build/templates/build/build_base.html:25
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
-msgstr ""
+msgstr "Deze bouwopdracht is een onderdeel van bouwopdracht %(link)s"
#: build/templates/build/build_base.html:32
msgid "Build Order is ready to mark as completed"
-msgstr ""
+msgstr "Bouwopdracht is gereed om te markeren als voltooid"
#: build/templates/build/build_base.html:37
msgid "Build Order cannot be completed as outstanding outputs remain"
-msgstr ""
+msgstr "Bouwopdracht kan niet worden voltooid omdat openstaande outputs blijven"
#: build/templates/build/build_base.html:42
msgid "Required build quantity has not yet been completed"
-msgstr ""
+msgstr "Vereiste bouwhoeveelheid is nog niet bereikt"
#: build/templates/build/build_base.html:47
msgid "Stock has not been fully allocated to this Build Order"
-msgstr ""
+msgstr "Voorraad is niet volledig toegewezen aan deze bouwopdracht"
#: build/templates/build/build_base.html:75
#: company/templates/company/company_base.html:40
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr "Beheerder weergave"
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Achterstallig"
@@ -1039,7 +1068,7 @@ msgstr "Annuleer Build"
#: build/templates/build/build_base.html:114
msgid "Delete Build"
-msgstr ""
+msgstr "Verwijder bouw"
#: build/templates/build/build_base.html:124
#: build/templates/build/detail.html:15
@@ -1049,7 +1078,7 @@ msgstr "Build details"
#: build/templates/build/build_base.html:150
#, python-format
msgid "This build was due on %(target)s"
-msgstr ""
+msgstr "Deze bouw was verwacht op %(target)s"
#: build/templates/build/build_base.html:157
#: build/templates/build/detail.html:67
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "Voortgang"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr "Verkoop Order"
@@ -1076,15 +1105,15 @@ msgstr "Uitgegeven door"
#: build/templates/build/build_base.html:214
msgid "Incomplete Outputs"
-msgstr ""
+msgstr "Onvolledige bouwuitvoer"
#: build/templates/build/build_base.html:215
msgid "Build Order cannot be completed as incomplete build outputs remain"
-msgstr ""
+msgstr "Bouwopdracht kan niet worden voltooid omdat onvolledige bouwuitvoer blijft bestaan"
#: build/templates/build/build_output_create.html:7
msgid "The Bill of Materials contains trackable parts"
-msgstr ""
+msgstr "De stuklijst bevat traceerbare onderdelen"
#: build/templates/build/build_output_create.html:8
msgid "Build outputs must be generated individually."
@@ -1096,27 +1125,27 @@ msgstr ""
#: build/templates/build/build_output_create.html:15
msgid "Trackable parts can have serial numbers specified"
-msgstr ""
+msgstr "Traceerbare onderdelen kunnen een serienummer hebben"
#: build/templates/build/build_output_create.html:16
msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
+msgstr "Voer serienummers in om meerdere bouw-outputs te genereren"
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
-msgstr ""
+msgstr "Weet je zeker dat je de bouw wilt annuleren?"
#: build/templates/build/complete.html:8
msgid "Build Order is complete"
-msgstr ""
+msgstr "Bouwopdracht is voltooid"
#: build/templates/build/complete.html:12
msgid "Build Order is incomplete"
-msgstr ""
+msgstr "Bouwopdracht is onvolledig"
#: build/templates/build/complete.html:15
msgid "Incompleted build outputs remain"
-msgstr ""
+msgstr "Onvoltooide bouw outputs blijven"
#: build/templates/build/complete.html:18
msgid "Required build quantity has not been completed"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1166,15 +1195,15 @@ msgstr ""
#: build/templates/build/detail.html:38
msgid "Stock Source"
-msgstr ""
+msgstr "Voorraadbron"
#: build/templates/build/detail.html:43
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,24 +1213,24 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
-msgstr ""
+msgstr "Batch"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
-msgstr ""
+msgstr "Gecreëerd"
#: build/templates/build/detail.html:130
msgid "No target date set"
-msgstr ""
+msgstr "Geen doeldatum ingesteld"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1223,26 +1252,26 @@ msgstr ""
#: build/templates/build/detail.html:173
msgid "Auto Allocate"
-msgstr ""
+msgstr "Automatisch toewijzen"
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
-msgstr ""
+msgstr "Niet toegewezen voorraad"
#: build/templates/build/detail.html:176 build/views.py:318 build/views.py:638
msgid "Unallocate Stock"
-msgstr ""
+msgstr "Niet toegewezen voorraad"
#: build/templates/build/detail.html:179
msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
-msgstr ""
+msgstr "Bestel onderdelen"
#: build/templates/build/detail.html:186
msgid "Untracked stock has been fully allocated for this Build Order"
@@ -1288,58 +1317,58 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
-msgstr ""
+msgstr "Bijlagen"
#: build/templates/build/detail.html:257
msgid "Build Notes"
-msgstr ""
+msgstr "Bouw notities"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
-msgstr ""
+msgstr "Notities Bewerken"
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
-msgstr ""
+msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
-msgstr ""
+msgstr "Waarde van de instelling"
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
-msgstr ""
+msgstr "Moet een geheel getal zijn"
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
-msgstr ""
+msgstr "Waarde moet een booleaanse waarde zijn"
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
-msgstr ""
+msgstr "Waarde moet een geheel getal zijn"
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
-msgstr ""
+msgstr "Sleutelreeks moet uniek zijn"
+
+#: common/models.py:509
+msgid "InvenTree Instance Name"
+msgstr "Inventree Instantie Naam"
+
+#: common/models.py:511
+msgid "String descriptor for the server instance"
+msgstr "String-beschrijving voor de server instantie"
+
+#: common/models.py:515
+msgid "Use instance name"
+msgstr "Gebruik de instantie naam"
+
+#: common/models.py:516
+msgid "Use the instance name in the title-bar"
+msgstr "Gebruik de naam van de instantie in de titelbalk"
+
+#: common/models.py:522 company/models.py:99 company/models.py:100
+msgid "Company name"
+msgstr "Bedrijfsnaam"
#: common/models.py:523
-msgid "InvenTree Instance Name"
-msgstr ""
+msgid "Internal company name"
+msgstr "Interne bedrijfsnaam"
-#: common/models.py:525
-msgid "String descriptor for the server instance"
-msgstr ""
+#: common/models.py:528
+msgid "Base URL"
+msgstr "Basis URL"
#: common/models.py:529
-msgid "Use instance name"
-msgstr ""
+msgid "Base URL for server instance"
+msgstr "Basis URL voor serverinstantie"
-#: common/models.py:530
-msgid "Use the instance name in the title-bar"
-msgstr ""
+#: common/models.py:535
+msgid "Default Currency"
+msgstr "Standaard valuta"
-#: common/models.py:536 company/models.py:97 company/models.py:98
-msgid "Company name"
-msgstr ""
-
-#: common/models.py:537
-msgid "Internal company name"
-msgstr ""
+#: common/models.py:536
+msgid "Default currency"
+msgstr "Standaard valuta"
#: common/models.py:542
-msgid "Base URL"
-msgstr ""
+msgid "Download from URL"
+msgstr "Download van URL"
#: common/models.py:543
-msgid "Base URL for server instance"
-msgstr ""
+msgid "Allow download of remote images and files from external URL"
+msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan"
#: common/models.py:549
-msgid "Default Currency"
-msgstr ""
+msgid "Barcode Support"
+msgstr "Barcode ondersteuning"
#: common/models.py:550
-msgid "Default currency"
-msgstr ""
+msgid "Enable barcode scanner support"
+msgstr "Barcodescanner ondersteuning inschakelen"
#: common/models.py:556
-msgid "Download from URL"
-msgstr ""
+msgid "IPN Regex"
+msgstr "IPN Regex"
#: common/models.py:557
-msgid "Allow download of remote images and files from external URL"
-msgstr ""
-
-#: common/models.py:563
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:564
-msgid "Enable barcode scanner support"
-msgstr ""
-
-#: common/models.py:570
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:571
msgid "Regular expression pattern for matching Part IPN"
-msgstr ""
+msgstr "Reguliere expressiepatroon voor het corresponderen van deel IPN"
+
+#: common/models.py:561
+msgid "Allow Duplicate IPN"
+msgstr "Dubbele IPN toestaan"
+
+#: common/models.py:562
+msgid "Allow multiple parts to share the same IPN"
+msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken"
+
+#: common/models.py:568
+msgid "Allow Editing IPN"
+msgstr "Bewerken IPN toestaan"
+
+#: common/models.py:569
+msgid "Allow changing the IPN value while editing a part"
+msgstr "Sta het wijzigen van de IPN toe tijdens het bewerken van een onderdeel"
#: common/models.py:575
-msgid "Allow Duplicate IPN"
-msgstr ""
-
-#: common/models.py:576
-msgid "Allow multiple parts to share the same IPN"
-msgstr ""
-
-#: common/models.py:582
-msgid "Allow Editing IPN"
-msgstr ""
-
-#: common/models.py:583
-msgid "Allow changing the IPN value while editing a part"
-msgstr ""
-
-#: common/models.py:589
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
-msgstr ""
+msgstr "Interne prijzen"
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
-msgstr ""
+msgstr "Foutopsporingsmodus"
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
-msgstr ""
+msgstr "Paginagrootte"
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
-msgstr ""
+msgstr "Testrapport"
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
-msgstr ""
+msgstr "Verlopen voorraad"
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
-msgstr ""
+msgstr "Verlopen voorraad functionaliteit inschakelen"
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
-msgstr ""
+msgstr "Verkoop verlopen voorraad"
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
-msgstr ""
+msgstr "Verkoop verlopen voorraad toestaan"
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
-msgstr ""
+msgstr "dagen"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,16 +3345,14 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
-msgstr ""
+msgstr "Nieuwe locatie"
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
-msgstr ""
+msgstr "Maak nieuwe voorraadlocatie"
#: order/templates/order/order_cancel.html:8
msgid "Cancelling this order means that the order and line items will no longer be editable."
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
-msgid "Default Location"
+#: part/api.py:700
+msgid "Must be greater than zero"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
+msgid "Default Location"
+msgstr "Standaard locatie"
+
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,13 +3999,13 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
-msgstr ""
+msgstr "Selecteer bovenliggend onderdeel om stuklijst van te kopiëren"
#: part/forms.py:103
msgid "Clear existing BOM items"
@@ -3923,411 +4043,411 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
-msgstr ""
+msgstr "Standaard locatie voor onderdelen in deze categorie"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/bom.html:6
msgid "You do not have permission to edit the BOM."
-msgstr ""
+msgstr "U heeft geen toestemming om de stuklijst te bewerken."
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4344,7 +4464,7 @@ msgstr ""
#: part/templates/part/bom.html:38
msgid "New BOM Item"
-msgstr ""
+msgstr "Nieuw stuklijstitem"
#: part/templates/part/bom.html:41
msgid "Finish Editing"
@@ -4352,7 +4472,7 @@ msgstr ""
#: part/templates/part/bom.html:46
msgid "Edit BOM"
-msgstr ""
+msgstr "Bewerk stuklijst"
#: part/templates/part/bom.html:50
msgid "Validate Bill of Materials"
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4584,9 +4709,9 @@ msgstr ""
#: part/templates/part/detail.html:90
msgid "Sales Order Allocations"
-msgstr ""
+msgstr "Toewijzingen verkoopopdracht"
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4630,7 +4755,7 @@ msgstr ""
#: part/templates/part/detail.html:274
msgid "Build Order Allocations"
-msgstr ""
+msgstr "Toewijzingen bouwopdracht"
#: part/templates/part/detail.html:283
msgid "Part Suppliers"
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
-msgstr ""
+msgstr "QR-code weergeven"
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
-msgstr ""
+msgstr "Label afdrukken"
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
-msgstr ""
+msgstr "Voorraad acties"
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
-msgstr ""
+msgstr "Voorraadlocatie"
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5645,7 +5787,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:84 templates/stock_table.html:31
msgid "Scan to Location"
-msgstr ""
+msgstr "Scan naar locatie"
#: stock/templates/stock/item_base.html:91
msgid "Printing actions"
@@ -5658,7 +5800,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:108
#: stock/templates/stock/location.html:69 templates/stock_table.html:57
msgid "Count stock"
-msgstr ""
+msgstr "Voorraad tellen"
#: stock/templates/stock/item_base.html:111 templates/stock_table.html:55
msgid "Add stock"
@@ -5675,7 +5817,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:121
#: stock/templates/stock/location.html:75
msgid "Transfer stock"
-msgstr ""
+msgstr "Voorraad overzetten"
#: stock/templates/stock/item_base.html:124
msgid "Assign to customer"
@@ -5768,9 +5910,9 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
-msgstr ""
+msgstr "Geen Locatie ingesteld"
#: stock/templates/stock/item_base.html:310
msgid "Barcode Identifier"
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5871,11 +6013,11 @@ msgstr ""
#: stock/templates/stock/location.html:20
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
-msgstr ""
+msgstr "U staat niet in de lijst van eigenaars van deze locatie. Deze voorraadlocatie kan niet worden bewerkt."
#: stock/templates/stock/location.html:37
msgid "All stock items"
-msgstr ""
+msgstr "Alle voorraadartikelen"
#: stock/templates/stock/location.html:55
msgid "Check-in Items"
@@ -5883,19 +6025,19 @@ msgstr ""
#: stock/templates/stock/location.html:83
msgid "Location actions"
-msgstr ""
+msgstr "Locatie acties"
#: stock/templates/stock/location.html:85
msgid "Edit location"
-msgstr ""
+msgstr "Bewerk locatie"
#: stock/templates/stock/location.html:87
msgid "Delete location"
-msgstr ""
+msgstr "Verwijder locatie"
#: stock/templates/stock/location.html:99
msgid "Location Details"
-msgstr ""
+msgstr "Locatiegegevens"
#: stock/templates/stock/location.html:104
msgid "Location Path"
@@ -5903,35 +6045,35 @@ msgstr ""
#: stock/templates/stock/location.html:109
msgid "Location Description"
-msgstr ""
+msgstr "Locatieomschrijving"
#: stock/templates/stock/location.html:114
#: stock/templates/stock/location.html:155
#: stock/templates/stock/location_navbar.html:11
#: stock/templates/stock/location_navbar.html:14
msgid "Sublocations"
-msgstr ""
+msgstr "Sublocaties"
#: stock/templates/stock/location.html:124
msgid "Stock Details"
-msgstr ""
+msgstr "Voorraadgegevens"
#: stock/templates/stock/location.html:129 templates/InvenTree/search.html:279
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
-msgstr ""
+msgstr "Voorraadlocaties"
#: stock/templates/stock/location.html:162 templates/stock_table.html:37
msgid "Printing Actions"
-msgstr ""
+msgstr "Afdrukacties"
#: stock/templates/stock/location.html:166 templates/stock_table.html:41
msgid "Print labels"
-msgstr ""
+msgstr "Labels afdrukken"
#: stock/templates/stock/location.html:251
msgid "Create new location"
-msgstr ""
+msgstr "Maak nieuwe locatie"
#: stock/templates/stock/location_delete.html:7
msgid "Are you sure you want to delete this stock location?"
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -5992,7 +6134,7 @@ msgstr ""
#: stock/views.py:181
msgid "Edit Stock Location"
-msgstr ""
+msgstr "Bewerk voorraadlocatie"
#: stock/views.py:288 stock/views.py:911 stock/views.py:1033
#: stock/views.py:1398
@@ -6001,7 +6143,7 @@ msgstr ""
#: stock/views.py:303
msgid "Stock Location QR code"
-msgstr ""
+msgstr "QR-code voor voorraadlocatie"
#: stock/views.py:322
msgid "Assign to Customer"
@@ -6017,7 +6159,7 @@ msgstr ""
#: stock/views.py:364
msgid "Specify a valid location"
-msgstr ""
+msgstr "Specificeer een geldige locatie"
#: stock/views.py:375
msgid "Stock item returned from customer"
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6053,13 +6195,13 @@ msgstr ""
#: stock/views.py:959
msgid "Create new Stock Location"
-msgstr ""
+msgstr "Maak nieuwe voorraadlocatie"
#: stock/views.py:1050
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6073,7 +6215,7 @@ msgstr ""
#: stock/views.py:1467
msgid "Delete Stock Location"
-msgstr ""
+msgstr "Verwijder voorraadlocatie"
#: stock/views.py:1480
msgid "Delete Stock Item"
@@ -6171,13 +6313,13 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
-msgstr ""
+msgstr "Geen voorraadlocatie ingesteld"
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
-msgstr ""
+msgstr "Inkoop"
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
-msgstr ""
+msgstr "Verkoop"
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index 3c021ab051..391caec1d4 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -36,7 +36,7 @@ msgstr "Oppgi dato"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Bekreft"
@@ -73,7 +73,7 @@ msgstr "Velg kategori"
msgid "Duplicate serial: {n}"
msgstr "Dupliser serie: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Ugyldig mengde oppgitt"
@@ -102,152 +102,181 @@ msgstr "Ingen serienummer funnet"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Antall unike serienummer ({s}) må samsvare mengde ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Vedlegg"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Velg fil å legge ved"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Kommenter"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Kommentar til fil"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Bruker"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "opplastet dato"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Ugyldig valg"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Navn"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Beskrivelse"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Beskrivelse (valgfritt)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Nummer må være gyldig"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Tysk"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Gresk"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Engelsk"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Spansk"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Fransk"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Hebraisk"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Italiensk"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japansk"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Koreansk"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Nederlandsk"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norsk"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polsk"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Russisk"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Svensk"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Thailandsk"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Tyrkisk"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Vietnamesisk"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Kinesisk"
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index ef3d82a8b2..820073e7f7 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -36,7 +36,7 @@ msgstr "Wprowadź dane"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Potwierdź"
@@ -73,7 +73,7 @@ msgstr "Wybierz kategorię"
msgid "Duplicate serial: {n}"
msgstr "Powtórzony numer seryjny: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Podano nieprawidłową ilość"
@@ -102,152 +102,181 @@ msgstr "Nie znaleziono numerów seryjnych"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Ilość numerów seryjnych ({s}) musi odpowiadać ilości ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Załącznik"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Wybierz plik do załączenia"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Komentarz"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Komentarz pliku"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Użytkownik"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "data przesłania"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Błędny wybór"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Nazwa"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Opis"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Opis (opcjonalny)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "nadrzędny"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Numer musi być prawidłowy"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Niemiecki"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Grecki"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Angielski"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Hiszpański"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Francuski"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Hebrajski"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Włoski"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japoński"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Koreański"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Holenderski"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norweski"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polski"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Rosyjski"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Szwedzki"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Tajski"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turecki"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Wietnamski"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Chiński"
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr "Podziel element podrzędny"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Wyślij do klienta"
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Usuń element"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr "Zaznacz pole aby potwierdzić usunięcie elementu"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Edytuj informacje użytkownika"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Ustaw hasło"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr "Hasła muszą być zgodne"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Informacja systemowa"
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Data docelowa"
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Ilość"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Oznacz budowę jako ukończoną"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Lokalizacja"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Lokalizacja ukończonych części"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Status"
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr "Zlecenie Budowy"
@@ -657,8 +688,8 @@ msgstr "Zlecenie Budowy"
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr "Zlecenia budowy"
msgid "Build Order Reference"
msgstr "Odwołanie do zamówienia wykonania"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referencja"
@@ -695,15 +725,14 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Część"
@@ -764,7 +794,7 @@ msgstr "Ukończone elementy"
msgid "Number of stock items which have been completed"
msgstr "Ilość produktów magazynowych które zostały ukończone"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr "Status budowania"
@@ -772,7 +802,7 @@ msgstr "Status budowania"
msgid "Build status code"
msgstr "Kod statusu budowania"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr "Kod partii"
@@ -780,16 +810,16 @@ msgstr "Kod partii"
msgid "Batch code for this build output"
msgstr "Kod partii dla wyjścia budowy"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr "Data utworzenia"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr "Docelowy termin zakończenia"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr "Data zakończenia"
@@ -797,7 +827,7 @@ msgstr "Data zakończenia"
msgid "completed by"
msgstr "zrealizowane przez"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr "Wydany przez"
@@ -808,9 +838,9 @@ msgstr "Użytkownik, który wydał to zamówienie"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Odpowiedzialny"
@@ -821,34 +851,33 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Link Zewnętrzny"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr "Link do zewnętrznego adresu URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Uwagi"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr "Przydzielona ilość ({n}) nie może przekraczać dostępnej ilości ({q})"
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr "Alokowana ilość musi być większa niż zero"
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr "Budowa"
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr "Element magazynowy"
@@ -936,12 +965,12 @@ msgstr "Docelowa lokalizacja magazynowa przedmiotu"
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr "Numer Seryjny"
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr "Widok administratora"
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Zaległe"
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "Postęp"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr "Zamówienie zakupu"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr "Źródło magazynu"
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr "Przeznaczenie"
@@ -1184,16 +1213,16 @@ msgstr "Nie określono lokalizacji docelowej"
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Partia"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr "Utworzony"
@@ -1201,7 +1230,7 @@ msgstr "Utworzony"
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr "Zakończone"
@@ -1225,7 +1254,7 @@ msgstr "Przydziel zapasy do budowy"
msgid "Auto Allocate"
msgstr "Automatyczne przypisywanie"
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr "Cofnij przydział zapasów"
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "Zamów wymagane komponenty"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Zamów części"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Załączniki"
@@ -1298,48 +1327,48 @@ msgstr "Załączniki"
msgid "Build Notes"
msgstr "Notatki tworzenia"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr "Dodaj załącznik"
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr "Edytuj załącznik"
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr "Usuń załącznik"
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr "Szczegóły zlecenia budowy"
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Szczegóły"
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr "Dostępne"
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr "Ustawienia wartości"
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr "Nazwa instancji InvenTree"
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr "Nazwa firmy"
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr "Bazowy URL"
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr "Bazowy adres URL dla instancji serwera"
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr "Pobierz z adresu URL"
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL"
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr "Obsługa kodu kreskowego"
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr "Włącz obsługę skanera kodów"
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr "Wyrażenie regularne IPN"
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr "Zezwól na powtarzający się IPN"
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr "Zezwól na edycję IPN"
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr "Skopiuj BOM komponentu"
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr "Szablon"
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr "Złożenie"
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr "Komponent"
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr "Możliwość zakupu"
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr "Części są domyślnie z możliwością zakupu"
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr "Możliwość sprzedaży"
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr "Części są domyślnie z możliwością sprzedaży"
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr "Możliwość śledzenia"
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr "Części są domyślnie z możliwością śledzenia"
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr "Wirtualny"
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr "Części są domyślnie wirtualne"
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr "Pokaż ilość w formularzach"
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr "Tryb Debugowania"
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr "Rozmiar strony"
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr "Raporty testów"
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr "Włącz generowanie raportów testów"
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "dni"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr "Grupuj według komponentu"
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr "Cena"
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr "Domyślny"
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr "URL"
msgid "Image URL"
msgstr "URL zdjęcia"
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr "Opis firmy"
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr "Opis firmy"
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr "Strona WWW"
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr "Witryna internetowa firmy"
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr "Adres"
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr "Adres firmy"
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr "Numer telefonu"
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr "Numer telefonu kontaktowego"
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr "Adres E-Mail"
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr "Kontaktowy adres e-mail"
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr "Kontakt"
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr "Punkt kontaktowy"
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr "Łącze"
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr "Link do informacji o zewnętrznym przedsiębiorstwie"
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr "Obraz"
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr "jest klientem"
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr "Czy sprzedajesz produkty tej firmie?"
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr "jest dostawcą"
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr "Czy kupujesz przedmioty od tej firmy?"
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr "jest producentem"
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr "Czy to przedsiębiorstwo produkuje części?"
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr "Waluta"
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr "Część bazowa"
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr "Wybierz część"
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr "Producent"
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr "Wybierz producenta"
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr "MPN"
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr "Numer producenta"
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr "Część producenta"
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr "Jednostki"
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr "Dostawca"
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr "Wybierz dostawcę"
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr "SKU"
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr "Uwaga"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr "koszt podstawowy"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr "Opakowanie"
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr "Opakowanie części"
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr "wielokrotność"
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr "Firma"
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr "Telefon"
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr "Klient"
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr "Utwórz nowego dostawcę części"
msgid "New Supplier Part"
msgstr "Nowy dostawca części"
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr "Nowy dostawca części"
msgid "Options"
msgstr "Opcje"
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr "Zamów części"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr "Usuń części"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr "Usuń części"
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr "Części producenta"
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr "Utwórz nową część producenta"
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr "Nowa część producenta"
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr "Zapasy dostawcy"
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr "Lista dostawców"
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr "Zamów część"
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr "Edytuj część producenta"
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr "Usuń cześć producenta"
@@ -2634,9 +2716,9 @@ msgstr "Część wewnętrzna"
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr "Dostawcy"
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr "Usuń"
@@ -2659,8 +2741,8 @@ msgstr "Usuń"
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr "Parametry"
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr "Dodaj parametr"
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr "Stan"
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr "Zamówienia"
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr "Dostarczone części"
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr "Informacja cenowa"
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr "Edytuj przedział cenowy"
@@ -2817,8 +2899,8 @@ msgstr "Cennik"
msgid "New Supplier"
msgstr "Nowy dostawca"
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr "Producenci"
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr "Now producent"
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr "Klienci"
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr "Złóż zamówienie"
@@ -2978,11 +3064,11 @@ msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie"
msgid "Order notes"
msgstr "Notatki do zamówienia"
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr "Odniesienie zamówienia"
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr "Status zamówienia zakupu"
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr "Ilość musi być większa niż zero"
@@ -3031,150 +3117,182 @@ msgstr "Ilość musi być większa niż zero"
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr "Wartość musi być liczbą całkowitą"
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr "Wartość musi być liczbą dodatnią"
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr "Data wysyłki"
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr "wysłane przez"
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr "Ilość elementów"
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr "Zamówienie"
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr "Zlecenie zakupu"
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr "Odebrane"
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr "Cena zakupu"
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr "Cena zakupu jednostkowego"
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr "Gdzie kupujący chce przechowywać ten przedmiot?"
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr "Cena sprzedaży"
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr "Jednostkowa cena sprzedaży"
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie"
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr "Linia"
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr "Komponent"
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr "Nowa lokalizacja"
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr "Przedmioty"
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr "Dodaj element zamówienia"
@@ -3436,49 +3552,6 @@ msgstr "Dodaj element zamówienia"
msgid "Order Notes"
msgstr "Notatki zamówień"
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr "Cena jednostkowa"
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Części"
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr "Kod zamówienia"
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr "Akcje"
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr "Numer ID"
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr "Cena jednostkowa"
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr "Przydzielono"
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr "Cena zakupu"
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr "Oblicz cenę"
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr "Zaktualizuj cenę jednostkową"
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr "Domyślna lokalizacja"
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr "Dostępna ilość"
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr "Część nadrzędna"
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr "Domyślne słowa kluczowe"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr "Nazwa części"
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr "Wariant"
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr "Opis części"
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr "Słowa kluczowe"
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr "Kategoria"
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr "IPN"
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr "Wersja"
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr "Minimalny stan magazynowy"
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr "Czy ta część może być zbudowana z innych części?"
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr "Czy ta część może być użyta do budowy innych części?"
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr "Aktywny"
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr "Czy ta część jest aktywna?"
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr "Sprzedaj wiele"
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr "Nazwa testu"
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr "Wymagane"
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr "Dane"
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr "Wartość domyślna"
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr "Podczęść"
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr "Suma kontrolna"
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr "Część 1"
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr "Część 2"
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr "Wybierz powiązaną część"
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr "Nie masz uprawnień do edycji BOM."
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr "Eksportuj"
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr "Ustaw kategorię"
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr "Eksportuj dane"
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr "Parametry części"
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr "Duplikuj część"
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr "Zapasy części"
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr "Warianty Części"
@@ -4602,8 +4727,8 @@ msgstr "Nowy wariant"
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr "Dodaj powiązane"
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr "Zestawienie materiałowe"
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr "Użyte w"
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr "Ceny"
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr "Lista części"
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr "Część jest wirtualna (nie fizyczna)"
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr "Nieaktywny"
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr "Akcje kodów kreskowych"
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Pokaż Kod QR"
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr "Drukuj etykietę"
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr "Akcje magazynowe"
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr "Duplikuj część"
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr "Edytuj część"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr "Usuń część"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr "Ostatni numer seryjny"
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr "Cena jednostkowa"
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,8 +5053,8 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
-msgstr "Czy na pewno chcesz usunąć część '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr "Edytuj kategorię części"
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr "Wynik"
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr "Data"
@@ -5288,51 +5422,51 @@ msgstr "Zaliczone"
msgid "Fail"
msgstr "Niezaliczone"
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr "Nieprawidłowa ilość"
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr "Ilość musi być większa niż zero"
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr "Data ważności"
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr "Część podstawowa"
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr "Ilość w magazynie"
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
+#: stock/models.py:599
+msgid "Scheduled for deletion"
+msgstr ""
+
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
+msgstr ""
+
+#: stock/models.py:1063
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1057
+#: stock/models.py:1069
msgid "Quantity must be integer"
msgstr "Ilość musi być liczbą całkowitą"
-#: stock/models.py:1063
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr "Termin minął"
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr "Lokacje nie są ustawione"
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr "Ostatnia aktualizacja"
@@ -5825,7 +5967,7 @@ msgstr "Czy na pewno chcesz usunąć tą część?"
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr "Utwórz nową lokalizację magazynową"
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr "Błąd 403: Odmowa dostępu"
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr "Nie masz uprawnień wymaganych do dostępu do tej funkcji"
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr "Ilość za"
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr "Dodaj część producenta"
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr "Edytuj firmę"
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr "Dodaj nową firmę"
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr "Dodaj nowy filtr"
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
-msgstr "Kopiuj BOM"
-
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr "Kopiuj BOM"
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr "Cena jednostkowa"
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr "Dodaj stan"
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr "Dodaj"
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr "Dodano"
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index b5b04e2a28..82a406afcd 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -36,7 +36,7 @@ msgstr "Введите дату"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Подтвердить"
@@ -73,7 +73,7 @@ msgstr "Выбрать категорию"
msgid "Duplicate serial: {n}"
msgstr "Дублировать серийный номер: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "недопустимое количество"
@@ -102,152 +102,181 @@ msgstr "Серийных номеров не найдено"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Вложения"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Выберите файл для вложения"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Комментарий"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Комментарий к файлу"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Пользователь"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "дата загрузки"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Название"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Описание"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Описание (необязательно)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "родитель"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Немецкий"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Греческий"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Английский"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Испанский"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Французский"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Иврит"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Итальянский"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Японский"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Корейский"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Голландский"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Норвежский"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Польский"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Русский"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Шведский"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Тайский"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Турецкий"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Вьетнамский"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Китайский"
@@ -372,7 +401,7 @@ msgstr "Отделить от родительского элемента"
msgid "Split child item"
msgstr "Разбить дочерний элемент"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Отправлено клиенту"
@@ -432,27 +461,27 @@ msgstr "Перегрузка не может превысить 100%"
msgid "Overage must be an integer value or a percentage"
msgstr "Превышение должно быть целым числом или процентом"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Удалить элемент"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr "Установите флажок для подтверждения удаления элемента"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Редактировать информацию о пользователе"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Установить пароль"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr "Пароли должны совпадать"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Информация о системе"
@@ -509,8 +538,8 @@ msgstr "Срок выполнения заказа"
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Целевая дата"
@@ -522,19 +551,18 @@ msgstr "Целевая дата для сборки. Сборка будет п
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr "Целевая дата для сборки. Сборка будет п
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Количество"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Пометить сборку как завершенную"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Расположение"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Расположение укомплектованных частей"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Статус"
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr "Порядок сборки"
@@ -657,8 +688,8 @@ msgstr "Порядок сборки"
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr "Порядок сборки"
msgid "Build Order Reference"
msgstr "Ссылка на заказ"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Детали"
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr "выполнено"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Ответственный"
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Внешняя ссылка"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr "Ссылка на внешний URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Заметки"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr "Сборка"
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Просрочено"
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Партия"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr "Создано"
@@ -1201,7 +1230,7 @@ msgstr "Создано"
msgid "No target date set"
msgstr "Нет конечной даты"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Заказать детали"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Приложения"
@@ -1298,48 +1327,48 @@ msgstr "Приложения"
msgid "Build Notes"
msgstr "Заметки сборки"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index 8acb080094..3eb53ff69c 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 1adb94f81f..3be3993f7b 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index b51c8640a5..81567b4a83 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -36,7 +36,7 @@ msgstr "Tarih giriniz"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Onay"
@@ -73,7 +73,7 @@ msgstr "Kategori Seçin"
msgid "Duplicate serial: {n}"
msgstr "Tekrarlanan seri {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Geçersiz veri sağlandı"
@@ -102,152 +102,181 @@ msgstr "Seri numarası bulunamadı"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Benzersiz seri numaralarının sayısı ({s}) girilen miktarla eşleşmeli ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Ek"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Eklenecek dosyayı seç"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Yorum"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Dosya yorumu"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Kullanıcı"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "yükleme tarihi"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Geçersiz seçim"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Adı"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Açıklama"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Açıklama (isteğe bağlı)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "üst"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Geçerli bir numara olmalı"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Almanca"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Yunanca"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "İngilizce"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "İspanyolca"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Fransızca"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "İbranice"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "İtalyanca"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japonca"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Korece"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Flemenkçe"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norveççe"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polonyaca"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Rusça"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "İsveççe"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Tay dili"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Türkçe"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Çince"
@@ -372,7 +401,7 @@ msgstr "Üst ögeden ayır"
msgid "Split child item"
msgstr "Alt ögeyi ayır"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Müşteriye gönderildi"
@@ -432,27 +461,27 @@ msgstr "Fazlalık %100'ü geçmemelidir"
msgid "Overage must be an integer value or a percentage"
msgstr "Fazlalık bir tamsayı veya yüzde olmalıdır"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Ögeyi Sil"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr "Öge silme işlemini onaylamak için kutuyu işaretleyin"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Kullanıcı Bilgisini Düzenle"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Şifre Belirle"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr "Parola alanları eşleşmelidir"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Sistem Bilgisi"
@@ -509,8 +538,8 @@ msgstr "Emir hedef tarihi"
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Hedeflenen tarih"
@@ -522,19 +551,18 @@ msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Miktar"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Yapım işini tamamlandı olarak işaretle"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Konum"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Tamamlanmış parçaların konumu"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Durum"
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr "Yapım İşi Emri"
@@ -657,8 +688,8 @@ msgstr "Yapım İşi Emri"
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr "Yapım İşi Emirleri"
msgid "Build Order Reference"
msgstr "Yapım İşi Emri Referansı"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referans"
@@ -695,15 +725,14 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Parça"
@@ -764,7 +794,7 @@ msgstr "Tamamlanmış ögeler"
msgid "Number of stock items which have been completed"
msgstr "Tamamlanan stok kalemlerinin sayısı"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr "Yapım İşi Durumu"
@@ -772,7 +802,7 @@ msgstr "Yapım İşi Durumu"
msgid "Build status code"
msgstr "Yapım işi durum kodu"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr "Sıra numarası"
@@ -780,16 +810,16 @@ msgstr "Sıra numarası"
msgid "Batch code for this build output"
msgstr "Yapım işi çıktısı için sıra numarası"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr "Oluşturulma tarihi"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr "Hedef tamamlama tarihi"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr "Tamamlama tarihi"
@@ -797,7 +827,7 @@ msgstr "Tamamlama tarihi"
msgid "completed by"
msgstr "tamamlayan"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr "Veren"
@@ -808,9 +838,9 @@ msgstr "Bu yapım işi emrini veren kullanıcı"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Sorumlu"
@@ -821,34 +851,33 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Harici Bağlantı"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr "Harici URL'ye bağlantı"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Notlar"
@@ -881,11 +910,11 @@ msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktıs
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr "Tahsis edilecek miktar ({n}) mevcut miktarı ({q}) geçmemeli"
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr "{p} parçasının malzeme listesindeki seçili stok kalemi bulunamadı"
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr "Yapım İşi"
@@ -912,9 +941,9 @@ msgstr "Yapım işi için tahsis edilen parçalar"
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr "Stok Kalemi"
@@ -936,12 +965,12 @@ msgstr "Hedef stok kalemi"
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr "Seri Numara"
@@ -993,7 +1022,7 @@ msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi"
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr "Yönetici görünümü"
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Vadesi geçmiş"
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "İlerleme"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr "Sipariş Emri"
@@ -1148,8 +1177,8 @@ msgstr "Seçili yapım işi emri için tahsis edilecek bir stok kalemi seçiniz"
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
-msgstr "Tahsis edilen stok bu yapım işi çıktısının kurulmasında kullanılacak: %(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgstr ""
#: build/templates/build/create_build_item.html:17
#, python-format
@@ -1172,9 +1201,9 @@ msgstr "Stok Kaynağı"
msgid "Stock can be taken from any available location."
msgstr "Stok herhangi bir konumdan alınabilir."
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr "Hedef"
@@ -1184,16 +1213,16 @@ msgstr "Hedef konumu belirtilmedi"
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Toplu"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr "Oluşturuldu"
@@ -1201,7 +1230,7 @@ msgstr "Oluşturuldu"
msgid "No target date set"
msgstr "Hedef tarih ayarlanmadı"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr "Tamamlandı"
@@ -1225,7 +1254,7 @@ msgstr "Yapım işi için stok tahsis et"
msgid "Auto Allocate"
msgstr "Otomatik Tahsis Et"
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr "Stok tahsisini kaldır"
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "Gerekli parçaları sipariş edin"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Parça Siparişi"
@@ -1288,8 +1317,8 @@ msgstr "Tamamlanmış Yapım İşi Çıktıları"
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Ekler"
@@ -1298,48 +1327,48 @@ msgstr "Ekler"
msgid "Build Notes"
msgstr "Yapım İşi Notları"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr "Notları Düzenle"
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr "Dosya Ekle"
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr "Ek Düzenle"
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr "Silme İşlemini Onayla"
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr "Eki Sil"
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr "Yapım İşi Emri Detayları"
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Detaylar"
@@ -1501,9 +1530,9 @@ msgstr "Öge stokta bulunmalı"
msgid "Stock item is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr "Mevcut"
@@ -1539,7 +1568,7 @@ msgstr "Dosya okurken hata (hatalı ölçüler)"
msgid "Error reading file (data could be corrupted)"
msgstr "Dosya okurken hata (veri bozulmuş olabilir)"
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr "Dosya"
@@ -1556,546 +1585,594 @@ msgstr "{name.title()} Dosya"
msgid "Select {name} file to upload"
msgstr "{name} dosyasını yüklemek için seçin"
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr "Bir tam sayı olmalı"
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr "Anahtar dizesi benzersiz olmalı"
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr "Şirket adı"
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr "Ana URL"
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr "Varsayılan Para Birimi"
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr "Varsayılan para birimi"
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr "URL'den indir"
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver"
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr "Barkod Desteği"
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr "Barkod tarayıcı desteğini etkinleştir"
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr "DPN Regex"
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)"
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr "Yinelenen DPN'ye İzin Ver"
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver"
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr "DPN Düzenlemeye İzin Ver"
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver"
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr "Kategori Paremetre Sablonu Kopyala"
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr "Şablon"
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr "Parçaları varsayılan olan şablondur"
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr "Montaj"
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir"
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr "Bileşen"
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir"
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr "Satın Alınabilir"
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr "Parçalar varsayılan olarak satın alınabilir"
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr "Satılabilir"
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr "Parçalar varsayılan olarak satılabilir"
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr "Takip Edilebilir"
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr "Parçalar varsayılan olarak takip edilebilir"
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr "Sanal"
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr "Parçalar varsayılan olarak sanaldır"
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr "Formlarda Miktarı Göster"
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr "Formlarda Fiyat Göster"
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr "İlgili parçaları göster"
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr "Hata Ayıklama Modu"
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)"
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr "Sayfa Boyutu"
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr "PDF raporlar için varsayılan sayfa boyutu"
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr "Test Raporları"
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "günler"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr "Fiyat"
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr "Varsayılan"
@@ -2123,7 +2200,7 @@ msgstr "Kullanıcı Ayarlarını Değiştir"
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr "Şirket web sitesi"
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr "Adres"
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr "Şirket adresi"
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr "Telefon numarası"
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr "İletişim telefon numarası"
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr "E-posta"
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr "İletişim e-posta adresi"
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr "İletişim"
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr "Bağlantı"
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr "Resim"
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr "müşteri mi"
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr "Bu şirkete ürün satıyor musunuz?"
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr "tedarikçi mi"
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr "Bu şirketten ürün satın alıyor musunuz?"
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr "üretici mi"
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr "Bu şirket üretim yapıyor mu?"
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr "Para birimi"
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr "Bu şirket için varsayılan para birimi"
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr "Temel Parça"
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr "Parça seçin"
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr "Üretici"
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr "Üretici seçin"
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr "ÜPN"
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr "Üretici Parça Numarası"
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr "Parametre adı"
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr "Değer"
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr "Parametre değeri"
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr "Tedarikçi"
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr "Tedarikçi seçin"
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr "SKU"
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr "Not"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr "temel maliyet"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr "Paketleme"
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr "çoklu"
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr "Para Birimi Kodu"
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr "Satın Alma Emri Oluştur"
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr "Müşteri"
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr "Yeni tedarikçi parçası oluştur"
msgid "New Supplier Part"
msgstr "Yeni Tedarikçi Parçası"
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr "Yeni Tedarikçi Parçası"
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr "Parçaları sil"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr "Parçaları Sil"
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr "Tedarikçi Stoku"
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr "Satın Alma Emirleri"
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr "Yeni satın alma emri oluştur"
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr "Yeni Satın Alma Emri"
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr "Satış Emirleri"
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr "Yeni satış emri oluştur"
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr "Yeni Satış Emri"
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr "Atanan Stok"
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr "Parça siparişi"
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr "Tedarikçi parçalarını sil"
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr "Stok"
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Stok Kalemleri"
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr "Tedarikçi Parçası"
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr "Tedarikçi parçasını düzenle"
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr "Tedarikçi parçasını sil"
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr "Fiyat Bilgisi"
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr "Fiyatlandırma"
msgid "New Supplier"
msgstr "Yeni Tedarikçi"
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr "Üreticiler"
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr "Yeni Üretici"
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr "Müşteriler"
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr "Sipariş ver"
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr "Sipariş notları"
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr "Sipariş referansı"
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Tahsis miktarı stok miktarını aşamaz"
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr "Seri numaralı stok kalemi için miktar bir olmalı"
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr "Stok tahsis miktarını girin"
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr "Yeni Konum"
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr "Yeni stok konumu oluştur"
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr "Sipariş Emri için Dosya Yükle"
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr "Ürünler"
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr "Sipariş Notları"
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr "Toplam fiyat"
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Parçalar"
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr "İşlemler"
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr "Stok tahsisini düzenle"
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr "Stok tahsisini sil"
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr "ID"
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr "Toplam fiyat"
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr "Seri numaralarını tahsis et"
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr "Varsayılan Konum"
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin"
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr "Parametre şablonunu tüm kategorilere ekle"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr "Bu kategori içindeki parçalar için varsayılan konum"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr "Parça Kategorileri"
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr "Sonraki kullanılabilir seri numaraları"
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr "Sonraki müsait seri numarası"
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr "En son seri numarası"
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor"
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr "Parça adı"
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr "Şablon Mu"
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr "Bu parça bir şablon parçası mı?"
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr "Bu parça başka bir parçanın çeşidi mi?"
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr "Çeşidi"
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr "Parça açıklaması"
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr "Anahtar kelimeler"
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr "DPN"
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr "Parça revizyon veya versiyon numarası"
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr "Revizyon"
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr "Varsayılan Tedarikçi"
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr "Varsayılan tedarikçi parçası"
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr "Minimum Stok"
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr "Bu parça diğer parçalardan yapılabilir mi?"
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?"
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?"
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr "Bu parça müşterilere satılabilir mi?"
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr "Aktif"
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr "Bu parça aktif mi?"
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr "Oluşturan Kullanıcı"
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir"
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr "Test Adı"
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr "Test Açıklaması"
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr "Gerekli"
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr "Testi geçmesi için bu gerekli mi?"
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr "Parametre şablon adı benzersiz olmalıdır"
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr "Parametre Şablonu"
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır"
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr "Çeşide İzin Ver"
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir"
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr "Malzeme Listesi dosyası gerekli sütün adlarını sağlandığı şekilde içermelidir "
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr "Malzeme Listesi Şablonu Yükle"
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr "Parçalar (Alt kategoriler dahil)"
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr "Kategori Ayarla"
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr "Parça Stoku"
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
-msgstr "%(full_name)s için tüm çeşitlerin stokları gösteriliyor"
+msgid "Showing stock for all variants of %(full_name)s "
+msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr "Parça Test Şablonları"
@@ -4586,7 +4711,7 @@ msgstr "Yeni Sipariş"
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr "Parça Çeşitleri"
@@ -4602,8 +4727,8 @@ msgstr "Yeni Çeşit"
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr "Çeşitler"
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr "Fiyatlar"
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr "Bu parça bir şablon parçadır (Bu parçanın çeşitleri yapılabilir)"
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr "Parça stoku seri numarası ile takip edilebilir"
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr "Bu parça harici tedarikçilerden satın alınabilir"
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr "Pasif"
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr "Barkod işlemleri"
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr "Etiket Yazdır"
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr "Stok işlemleri"
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr "Parça işlemleri"
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr "Bu parça %(link)s parçasının bir çeşididir"
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr "Yapım İşi Emirleri için Gerekli"
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr "Satış Emirleri için Gerekli"
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr "Son Seri Numarası"
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr "Hesapla"
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr "Birim Maliyeti"
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr "Toplam Maliyet"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr "Aşağıdaki parçalara kategori ayarla"
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr "Stok Yok"
@@ -5032,10 +5166,10 @@ msgstr "Yeni parça çeşidi oluştur"
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
-msgstr "%(full_name)s şablonu için yeni bir çeşit oluştur."
+msgid "Create a new variant of template '%(full_name)s' ."
+msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr "Parça Parametre Şablonu Oluştur"
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr "Parça Parametre Şablonu Düzenle"
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr "Parça Parametre Şablonu Sil"
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr "Kategori Parametre Şablonu Oluştur"
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr "Kategori Parametre Şablonu Düzenle"
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr "Kategori Parametre Şablonu Sil"
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr "{n} öge için stok güncellendi"
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla"
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr "Bu seri numarasına sahip stok kalemi zaten var"
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr "Seri numarası olan ögenin miktarı bir olmalı"
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr "Miktar birden büyük ise seri numarası ayarlanamaz"
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr "Üst Stok Kalemi"
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr "Bu stok kalemi için tedarikçi parçası seçin"
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Stok Konumu"
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr "Bu öge için seri numarası"
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr "Seri numaraları tam sayı listesi olmalı"
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr "Miktar seri numaları ile eşleşmiyor"
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr "Seri numaraları zaten mevcut: {exists}"
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Stok kalemi stokta olmadığı için taşınamaz"
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr "Konum ayarlanmadı"
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek"
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,8 +6117,8 @@ msgstr "Stok Kalemine Dönüştür"
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
-msgstr "Bu stok kalemi şu anda %(part)s parçasının örneğidir"
+msgid "This stock item is current an instance of %(part)s "
+msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
msgid "It can be converted to one of the part variants listed below."
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr "Stok ayarlamasını onayla"
@@ -6059,7 +6201,7 @@ msgstr "Yeni Stok konumu oluştur"
msgid "Serialize Stock"
msgstr "Stoku Seri Numarala"
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr "Stok konumu ayarlanmadı"
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr "Kategori parametre şablonu bulunamadı"
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr "Şablonu Düzenle"
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr "Şablonu Sil"
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr "Parça parametre şablonu bulunamadı"
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr "InvenTree Sürüm Bilgisi"
msgid "InvenTree Version"
msgstr "InvenTree Sürümü"
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr "Güncel"
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr "Güncelleme Mevcut"
-#: templates/about.html:34
-msgid "API Version"
-msgstr "API Sürümü"
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr "Python Sürümü"
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr "Django Sürümü"
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr "Commit Hash Değeri"
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr "Commit Tarihi"
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr "API Sürümü"
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr "Python Sürümü"
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr "Django Sürümü"
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr "Katkıda Bulunanlar"
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr "Mobil Uygulama"
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr "Hata Raporu Gönder"
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr "panoya kopyala"
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr "sürüm bilgisini kopyala"
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr "Kapat"
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr "Rapor Şablonu Seç"
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr "Test Raporu Şablonu Seç"
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr "Seçili stok kalemleri için rapor şablonu bulunamadı"
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr "Seçili yapım işleri için rapor şablonu bulunamadı"
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "Parçaları Seçin"
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr "Seçili parçalar için rapor şablonu bulunamadı"
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr "Seçili emirler için rapor şablonu bulunamadı"
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr "Cevap Yok"
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr "Bu fonksiyona erişmek için gerekli izinlere sahip değilsiniz"
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr "Stok Kalemlerini bu konuma kaydet"
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr "Stok kalemi zaten bu konumda"
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr "Konuma Kaydet"
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr "Barkod geçerli bir konumla eşleşmiyor"
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr "Gerekli Parça"
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr "Şablon Parça"
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr "doğru"
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr "yanlış"
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
+#: templates/js/translated/helpers.js:19
+msgid "YES"
+msgstr ""
+
+#: templates/js/translated/helpers.js:21
+msgid "NO"
+msgstr ""
+
+#: templates/js/translated/label.js:30
msgid "Stock item(s) must be selected before printing labels"
msgstr "Etiket yazdırılmadan önce stok kalemleri seçilmeli"
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
msgid "No Labels Found"
msgstr "Etiket Bulunamadı"
-#: templates/js/translated/label.js:30
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr "Seçili stok kalemleri için etiket bulunamadı"
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr "Stok Konumu Seç"
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr "Etiket yazdırılmadan önce stok konumları seçilmeli"
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr "Seçili konumlarla eşleşen etiket bulunamadı"
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr "Etiket Seç"
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr "Etiket Şablonu Seç"
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr "Çeşit bulunamadı"
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr "Sorgu ile eşleşen test şablonu bulunamadı"
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr "konumlar"
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr "Tanımsız konum"
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr "konumlar"
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr "Tanımsız konum"
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr "Konum artık yok"
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr "Seri No"
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr "Çeşit Stokuna İzin Ver"
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr "Alt konumları dahil et"
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr "Konumları dahil et"
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr "Seri Numaralı"
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr "Seri numarası BvE"
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr "Seri numarası büyük veya eşit"
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr "Seri numarası KvE"
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr "Seri numarası küçük veya eşit"
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr "Seri numarası"
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr "Alt konumlardaki stoku dahil et"
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr "Çeşitleri Dahil Et"
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr "Çeşit parçaların stok kalemlerini dahil et"
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr "Alt kategorilerdeki parçaları dahil et"
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr "DPN Var"
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 8c651efac6..49924e132a 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 0bd8a11455..f3febfab99 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -36,7 +36,7 @@ msgstr "输入日期"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "确认"
@@ -46,7 +46,7 @@ msgstr "确认删除"
#: InvenTree/forms.py:128
msgid "Confirm item deletion"
-msgstr ""
+msgstr "确认删除"
#: InvenTree/forms.py:160 templates/registration/login.html:76
msgid "Enter password"
@@ -71,27 +71,27 @@ msgstr "选择分类"
#: InvenTree/helpers.py:401
#, python-brace-format
msgid "Duplicate serial: {n}"
-msgstr ""
+msgstr "重复的序列号: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
-msgstr ""
+msgstr "提供的数量无效"
#: InvenTree/helpers.py:411
msgid "Empty serial number string"
-msgstr ""
+msgstr "空序列号字符串"
#: InvenTree/helpers.py:433 InvenTree/helpers.py:436 InvenTree/helpers.py:439
#: InvenTree/helpers.py:464
#, python-brace-format
msgid "Invalid group: {g}"
-msgstr ""
+msgstr "无效的群组: {g}"
#: InvenTree/helpers.py:469
#, python-brace-format
msgid "Duplicate serial: {g}"
-msgstr ""
+msgstr "重复的序列号: {g}"
#: InvenTree/helpers.py:477
msgid "No serial numbers found"
@@ -100,441 +100,469 @@ msgstr "未找到序列号"
#: InvenTree/helpers.py:481
#, python-brace-format
msgid "Number of unique serial number ({s}) must match quantity ({q})"
-msgstr ""
+msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "附件"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "选择附件"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "注释"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "文件注释"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "用户"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "上传日期"
-#: InvenTree/models.py:113
-msgid "Invalid choice"
-msgstr ""
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr "文件名不能为空!"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr "非法的附件目录"
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr "文件名包含非法字符 '{c}'"
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr "缺少文件名扩展"
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr "使用此文件名的附件已存在"
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr "重命名文件出错"
+
+#: InvenTree/models.py:184
+msgid "Invalid choice"
+msgstr "选择无效"
+
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "名称"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
-msgstr ""
+msgstr "描述信息"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
-msgstr ""
+msgstr "描述 (可选)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
-msgstr ""
+msgstr "上级项"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
-msgstr ""
+msgstr "必须是有效数字"
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
-msgstr ""
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr "文件名"
#: InvenTree/settings.py:523
-msgid "Hebrew"
-msgstr ""
+msgid "German"
+msgstr "德语"
#: InvenTree/settings.py:524
-msgid "Italian"
-msgstr ""
+msgid "Greek"
+msgstr "希腊语"
#: InvenTree/settings.py:525
-msgid "Japanese"
-msgstr ""
+msgid "English"
+msgstr "英语"
#: InvenTree/settings.py:526
-msgid "Korean"
-msgstr ""
+msgid "Spanish"
+msgstr "西班牙语"
#: InvenTree/settings.py:527
-msgid "Dutch"
-msgstr ""
+msgid "French"
+msgstr "法语"
#: InvenTree/settings.py:528
-msgid "Norwegian"
-msgstr ""
+msgid "Hebrew"
+msgstr "希伯来语"
#: InvenTree/settings.py:529
-msgid "Polish"
-msgstr ""
+msgid "Italian"
+msgstr "意大利语"
#: InvenTree/settings.py:530
-msgid "Russian"
-msgstr ""
+msgid "Japanese"
+msgstr "日语"
#: InvenTree/settings.py:531
-msgid "Swedish"
-msgstr ""
+msgid "Korean"
+msgstr "韩语"
#: InvenTree/settings.py:532
-msgid "Thai"
-msgstr ""
+msgid "Dutch"
+msgstr "荷兰语"
#: InvenTree/settings.py:533
-msgid "Turkish"
-msgstr ""
+msgid "Norwegian"
+msgstr "挪威语"
#: InvenTree/settings.py:534
-msgid "Vietnamese"
-msgstr ""
+msgid "Polish"
+msgstr "波兰语"
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr "俄语"
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr "瑞典语"
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr "泰语"
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr "土耳其语"
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr "越南语"
+
+#: InvenTree/settings.py:540
msgid "Chinese"
-msgstr ""
+msgstr "中文(简体)"
#: InvenTree/status.py:94
msgid "Background worker check failed"
-msgstr ""
+msgstr "后台工作人员检查失败"
#: InvenTree/status.py:98
msgid "Email backend not configured"
-msgstr ""
+msgstr "未配置电子邮件后端"
#: InvenTree/status.py:101
msgid "InvenTree system health checks failed"
-msgstr ""
+msgstr "InventTree系统健康检查失败"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:145
#: InvenTree/status_codes.py:314
msgid "Pending"
-msgstr ""
+msgstr "待定"
#: InvenTree/status_codes.py:105
msgid "Placed"
-msgstr ""
+msgstr "已添加"
#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:317
msgid "Complete"
-msgstr ""
+msgstr "完成"
#: InvenTree/status_codes.py:107 InvenTree/status_codes.py:147
#: InvenTree/status_codes.py:316
msgid "Cancelled"
-msgstr ""
+msgstr "已取消"
#: InvenTree/status_codes.py:108 InvenTree/status_codes.py:148
#: InvenTree/status_codes.py:190
msgid "Lost"
-msgstr ""
+msgstr "丢失"
#: InvenTree/status_codes.py:109 InvenTree/status_codes.py:149
#: InvenTree/status_codes.py:192
msgid "Returned"
-msgstr ""
+msgstr "已退回"
#: InvenTree/status_codes.py:146
#: order/templates/order/sales_order_base.html:126
msgid "Shipped"
-msgstr ""
+msgstr "已发货"
#: InvenTree/status_codes.py:186
msgid "OK"
-msgstr ""
+msgstr "确定"
#: InvenTree/status_codes.py:187
msgid "Attention needed"
-msgstr ""
+msgstr "注意"
#: InvenTree/status_codes.py:188
msgid "Damaged"
-msgstr ""
+msgstr "破损"
#: InvenTree/status_codes.py:189
msgid "Destroyed"
-msgstr ""
+msgstr "销毁"
#: InvenTree/status_codes.py:191
msgid "Rejected"
-msgstr ""
+msgstr "已拒绝"
#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "旧库存跟踪条目"
#: InvenTree/status_codes.py:274
msgid "Stock item created"
-msgstr ""
+msgstr "库存项已创建"
#: InvenTree/status_codes.py:276
msgid "Edited stock item"
-msgstr ""
+msgstr "已编辑库存项"
#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
-msgstr ""
+msgstr "已分配序列号"
#: InvenTree/status_codes.py:279
msgid "Stock counted"
-msgstr ""
+msgstr "库存计数"
#: InvenTree/status_codes.py:280
msgid "Stock manually added"
-msgstr ""
+msgstr "已手动添加库存"
#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
-msgstr ""
+msgstr "库存手动删除"
#: InvenTree/status_codes.py:283
msgid "Location changed"
-msgstr ""
+msgstr "位置已更改"
#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
-msgstr ""
+msgstr "安装到组装中"
#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
-msgstr ""
+msgstr "已从组装中删除"
#: InvenTree/status_codes.py:288
msgid "Installed component item"
-msgstr ""
+msgstr "已安装组件项"
#: InvenTree/status_codes.py:289
msgid "Removed component item"
-msgstr ""
+msgstr "已删除组件项"
#: InvenTree/status_codes.py:291
msgid "Split from parent item"
-msgstr ""
+msgstr "从父项拆分"
#: InvenTree/status_codes.py:292
msgid "Split child item"
-msgstr ""
+msgstr "拆分子项"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
-msgstr ""
+msgstr "发送给客户"
#: InvenTree/status_codes.py:295
msgid "Returned from customer"
-msgstr ""
+msgstr "从客户退货"
#: InvenTree/status_codes.py:297
msgid "Build order output created"
-msgstr ""
+msgstr "已创建生产订单输出"
#: InvenTree/status_codes.py:298
msgid "Build order output completed"
-msgstr ""
+msgstr "生产订单输出已完成"
#: InvenTree/status_codes.py:300
msgid "Received against purchase order"
-msgstr ""
+msgstr "收到定购单"
#: InvenTree/status_codes.py:315
msgid "Production"
-msgstr ""
+msgstr "产品"
#: InvenTree/validators.py:22
msgid "Not a valid currency code"
-msgstr ""
+msgstr "不是有效的货币代码"
#: InvenTree/validators.py:50
msgid "Invalid character in part name"
-msgstr ""
+msgstr "部件名称中存在无效字符"
#: InvenTree/validators.py:63
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
-msgstr ""
+msgstr "IPN 必须匹配正则表达式 {pat}"
#: InvenTree/validators.py:77 InvenTree/validators.py:91
#: InvenTree/validators.py:105
#, python-brace-format
msgid "Reference must match pattern {pattern}"
-msgstr ""
+msgstr "引用必须匹配模板 {pattern}"
#: InvenTree/validators.py:113
#, python-brace-format
msgid "Illegal character in name ({x})"
-msgstr ""
+msgstr "名称中存在非法字符 ({x})"
#: InvenTree/validators.py:132 InvenTree/validators.py:148
msgid "Overage value must not be negative"
-msgstr ""
+msgstr "备损值不能为负数"
#: InvenTree/validators.py:150
msgid "Overage must not exceed 100%"
-msgstr ""
+msgstr "备损不能超过 100%"
#: InvenTree/validators.py:157
msgid "Overage must be an integer value or a percentage"
-msgstr ""
+msgstr "备损必须是整数值或百分比"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
-msgstr ""
+msgstr "删除项"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
-msgstr ""
+msgstr "选中方框以确认项目删除"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
-msgstr ""
+msgstr "编辑用户信息"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
-msgstr ""
+msgstr "设置密码"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
-msgstr ""
+msgstr "密码字段必须相匹配。"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
-msgstr ""
+msgstr "系统信息"
#: barcodes/api.py:53 barcodes/api.py:150
msgid "Must provide barcode_data parameter"
-msgstr ""
+msgstr "必须提供条码数据参数"
#: barcodes/api.py:126
msgid "No match found for barcode data"
-msgstr ""
+msgstr "未找到匹配条形码数据"
#: barcodes/api.py:128
msgid "Match found for barcode data"
-msgstr ""
+msgstr "找到匹配条形码数据"
#: barcodes/api.py:153
msgid "Must provide stockitem parameter"
-msgstr ""
+msgstr "必须提供库存项参数"
#: barcodes/api.py:160
msgid "No matching stock item found"
-msgstr ""
+msgstr "未找到匹配的库存项"
#: barcodes/api.py:190
msgid "Barcode already matches StockItem object"
-msgstr ""
+msgstr "条形码已经匹配库存项"
#: barcodes/api.py:194
msgid "Barcode already matches StockLocation object"
-msgstr ""
+msgstr "条形码已经匹配库存地对象"
#: barcodes/api.py:198
msgid "Barcode already matches Part object"
-msgstr ""
+msgstr "条形码已经匹配部件对象"
#: barcodes/api.py:204 barcodes/api.py:216
msgid "Barcode hash already matches StockItem object"
-msgstr ""
+msgstr "条码哈希值已经匹配库存项目"
#: barcodes/api.py:222
msgid "Barcode associated with StockItem"
-msgstr ""
+msgstr "与库存项关联的条形码"
#: build/forms.py:37
msgid "Build Order reference"
-msgstr ""
+msgstr "相关生产订单"
#: build/forms.py:38
msgid "Order target date"
-msgstr ""
+msgstr "订单预计日期"
#: build/forms.py:42 build/templates/build/build_base.html:146
#: build/templates/build/detail.html:124
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
-msgstr ""
+msgstr "预计日期"
#: build/forms.py:43 build/models.py:277
msgid "Target date for build completion. Build will be overdue after this date."
-msgstr ""
+msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1402
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,168 +570,169 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
-msgstr ""
+msgstr "库存数"
#: build/forms.py:49
msgid "Number of items to build"
-msgstr ""
+msgstr "要生产的项目数量"
#: build/forms.py:91
msgid "Enter quantity for build output"
-msgstr ""
+msgstr "输入生产产出数量"
#: build/forms.py:95 order/forms.py:114 stock/forms.py:83
msgid "Serial Numbers"
-msgstr ""
+msgstr "序列号"
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
-msgstr ""
+msgstr "输入生产产出的序列号"
#: build/forms.py:103
msgid "Confirm creation of build output"
-msgstr ""
+msgstr "确认创建生产产出"
#: build/forms.py:124
msgid "Confirm deletion of build output"
-msgstr ""
+msgstr "确认删除生产产出"
#: build/forms.py:145
msgid "Confirm unallocation of stock"
-msgstr ""
+msgstr "确认取消分配库存"
#: build/forms.py:169
msgid "Confirm stock allocation"
-msgstr ""
+msgstr "确认库存分配"
#: build/forms.py:186
msgid "Mark build as complete"
-msgstr ""
+msgstr "标记生产已完成"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
-msgstr ""
+msgstr "所在地"
#: build/forms.py:211
msgid "Location of completed parts"
-msgstr ""
+msgstr "已完成部件所在地"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
-msgstr ""
+msgstr "状态"
#: build/forms.py:216
msgid "Build output stock status"
-msgstr ""
+msgstr "生产产出库存状态"
#: build/forms.py:223
msgid "Confirm incomplete"
-msgstr ""
+msgstr "确认未完成"
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
-msgstr ""
+msgstr "确认以未完成库存分配方式完成"
#: build/forms.py:227
msgid "Confirm build completion"
-msgstr ""
+msgstr "确认生产完成"
#: build/forms.py:252
msgid "Confirm cancel"
-msgstr ""
+msgstr "确认取消"
#: build/forms.py:252 build/views.py:65
msgid "Confirm build cancellation"
-msgstr ""
+msgstr "确认生产取消"
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
-msgstr ""
+msgstr "选择要分配的库存数量"
#: build/models.py:113
msgid "Invalid choice for parent build"
-msgstr ""
+msgstr "上级生产选项无效"
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
-msgstr ""
+msgstr "生产订单"
#: build/models.py:118 build/templates/build/index.html:8
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
msgid "Build Orders"
-msgstr ""
+msgstr "生产订单"
#: build/models.py:178
msgid "Build Order Reference"
-msgstr ""
+msgstr "相关生产订单"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
-msgstr ""
+msgstr "引用"
#: build/models.py:190
msgid "Brief description of the build"
-msgstr ""
+msgstr "生产的简短描述."
#: build/models.py:199 build/templates/build/build_base.html:163
#: build/templates/build/detail.html:80
msgid "Parent Build"
-msgstr ""
+msgstr "上级生产"
#: build/models.py:200
msgid "BuildOrder to which this build is allocated"
-msgstr ""
+msgstr "此次生生匹配的订单"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,30 +740,31 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
-msgstr ""
+msgstr "部件"
#: build/models.py:213
msgid "Select part to build"
-msgstr ""
+msgstr "选择生产所需部件"
#: build/models.py:218
msgid "Sales Order Reference"
-msgstr ""
+msgstr "相关销售订单"
#: build/models.py:222
msgid "SalesOrder to which this build is allocated"
-msgstr ""
+msgstr "此次生产匹配的销售订单"
#: build/models.py:227
msgid "Source Location"
-msgstr ""
+msgstr "来源地点"
#: build/models.py:231
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
@@ -742,131 +772,130 @@ msgstr ""
#: build/models.py:236
msgid "Destination Location"
-msgstr ""
+msgstr "目标地点"
#: build/models.py:240
msgid "Select location where the completed items will be stored"
-msgstr ""
+msgstr "选择已完成项目存储的位置"
#: build/models.py:244
msgid "Build Quantity"
-msgstr ""
+msgstr "生产数量"
#: build/models.py:247
msgid "Number of stock items to build"
-msgstr ""
+msgstr "要生产的项目数量"
#: build/models.py:251
msgid "Completed items"
-msgstr ""
+msgstr "已完成项目"
#: build/models.py:253
msgid "Number of stock items which have been completed"
-msgstr ""
+msgstr "已完成的库存项目数量"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
-msgstr ""
+msgstr "生产状态"
#: build/models.py:261
msgid "Build status code"
-msgstr ""
+msgstr "生产状态代码"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
-msgstr ""
+msgstr "批量代码"
#: build/models.py:269
msgid "Batch code for this build output"
-msgstr ""
+msgstr "此生产产出的批量代码"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
-msgstr ""
+msgstr "创建日期"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
-msgstr ""
+msgstr "预计完成日期"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
-msgstr ""
+msgstr "完成日期:"
#: build/models.py:286
msgid "completed by"
-msgstr ""
+msgstr "完成人"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
-msgstr ""
+msgstr "发布者"
#: build/models.py:295
msgid "User who issued this build order"
-msgstr ""
+msgstr "发布此生产订单的用户"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
-msgstr ""
+msgstr "责任人"
#: build/models.py:304
msgid "User responsible for this build order"
-msgstr ""
+msgstr "负责此生产订单的用户"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
-msgstr ""
+msgstr "外部链接"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
-msgstr ""
+msgstr "链接到外部 URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
-msgstr ""
+msgstr "备注"
#: build/models.py:315
msgid "Extra build notes"
-msgstr ""
+msgstr "额外的生产备注"
#: build/models.py:792
msgid "No build output specified"
-msgstr ""
+msgstr "未指定生产产出"
#: build/models.py:795
msgid "Build output is already completed"
-msgstr ""
+msgstr "生产产出已完成"
#: build/models.py:798
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "生产产出与订单不匹配"
#: build/models.py:1208
msgid "BuildItem must be unique for build, stock_item and install_into"
@@ -881,13 +910,13 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
-msgstr ""
+msgstr "分配数量必须大于0"
#: build/models.py:1252
msgid "Quantity must be 1 for serialized stock"
@@ -899,10 +928,10 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
-msgstr ""
+msgstr "生产"
#: build/models.py:1373
msgid "Build to allocate parts"
@@ -912,15 +941,15 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
-msgstr ""
+msgstr "库存项"
#: build/models.py:1390
msgid "Source stock item"
-msgstr ""
+msgstr "源库存项"
#: build/models.py:1403
msgid "Stock quantity to allocate to build"
@@ -936,14 +965,14 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
-msgstr ""
+msgstr "序列号"
#: build/templates/build/auto_allocate.html:9
msgid "Automatically Allocate Stock"
@@ -993,11 +1022,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
-msgstr ""
+msgstr "管理界面"
#: build/templates/build/build_base.html:81
#: build/templates/build/build_base.html:150
@@ -1005,78 +1034,78 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
-msgstr ""
+msgstr "逾期"
#: build/templates/build/build_base.html:90
msgid "Print actions"
-msgstr ""
+msgstr "打印操作"
#: build/templates/build/build_base.html:94
msgid "Print Build Order"
-msgstr ""
+msgstr "打印生产订单"
#: build/templates/build/build_base.html:100
#: build/templates/build/build_base.html:222
msgid "Complete Build"
-msgstr ""
+msgstr "生产完成"
#: build/templates/build/build_base.html:105
msgid "Build actions"
-msgstr ""
+msgstr "生产操作"
#: build/templates/build/build_base.html:109
msgid "Edit Build"
-msgstr ""
+msgstr "编辑生产"
#: build/templates/build/build_base.html:111
#: build/templates/build/build_base.html:206 build/views.py:56
msgid "Cancel Build"
-msgstr ""
+msgstr "取消生产"
#: build/templates/build/build_base.html:114
msgid "Delete Build"
-msgstr ""
+msgstr "删除生产"
#: build/templates/build/build_base.html:124
#: build/templates/build/detail.html:15
msgid "Build Details"
-msgstr ""
+msgstr "生产详情"
#: build/templates/build/build_base.html:150
#, python-format
msgid "This build was due on %(target)s"
-msgstr ""
+msgstr "此次生产的截止日期为 %(target)s"
#: build/templates/build/build_base.html:157
#: build/templates/build/detail.html:67
msgid "Progress"
-msgstr ""
+msgstr "生产进度"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
-msgstr ""
+msgstr "销售订单"
#: build/templates/build/build_base.html:177
#: build/templates/build/detail.html:101
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
-msgstr ""
+msgstr "发布者"
#: build/templates/build/build_base.html:214
msgid "Incomplete Outputs"
-msgstr ""
+msgstr "未完成输出"
#: build/templates/build/build_base.html:215
msgid "Build Order cannot be completed as incomplete build outputs remain"
@@ -1108,11 +1137,11 @@ msgstr ""
#: build/templates/build/complete.html:8
msgid "Build Order is complete"
-msgstr ""
+msgstr "生产订单已完成"
#: build/templates/build/complete.html:12
msgid "Build Order is incomplete"
-msgstr ""
+msgstr "生产订单未完成"
#: build/templates/build/complete.html:15
msgid "Incompleted build outputs remain"
@@ -1120,7 +1149,7 @@ msgstr ""
#: build/templates/build/complete.html:18
msgid "Required build quantity has not been completed"
-msgstr ""
+msgstr "所需生产数量尚未完成"
#: build/templates/build/complete.html:21
msgid "Required stock has not been fully allocated"
@@ -1132,7 +1161,7 @@ msgstr ""
#: build/templates/build/complete_output.html:14
msgid "Stock allocation is incomplete"
-msgstr ""
+msgstr "库存分配尚未完成"
#: build/templates/build/complete_output.html:20
msgid "tracked parts have not been fully allocated"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:%(output)s "
+msgid "The allocated stock will be installed into the following build output:%(output)s "
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,24 +1213,24 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
-msgstr ""
+msgstr "已创建"
#: build/templates/build/detail.html:130
msgid "No target date set"
-msgstr ""
+msgstr "无预计日期"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,32 +1254,32 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
#: build/templates/build/detail.html:176 build/views.py:318 build/views.py:638
msgid "Unallocate Stock"
-msgstr ""
+msgstr "未分配库存"
#: build/templates/build/detail.html:179
msgid "Order required parts"
-msgstr ""
+msgstr "订单所需部件"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
-msgstr ""
+msgstr "订单部件"
#: build/templates/build/detail.html:186
msgid "Untracked stock has been fully allocated for this Build Order"
-msgstr ""
+msgstr "未跟踪的库存已完全分配给此生产订单"
#: build/templates/build/detail.html:190
msgid "Untracked stock has not been fully allocated for this Build Order"
-msgstr ""
+msgstr "未跟踪的库存尚未完全分配给此生产订单"
#: build/templates/build/detail.html:197
msgid "This Build Order does not have any associated untracked BOM items"
@@ -1258,7 +1287,7 @@ msgstr ""
#: build/templates/build/detail.html:206
msgid "Incomplete Build Outputs"
-msgstr ""
+msgstr "未完成的生产产出"
#: build/templates/build/detail.html:211
msgid "Create new build output"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: part/templates/part/bom_upload/match_fields.html:27
#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s "
+msgid "Select a supplier for %(name)s "
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s "
+msgid "Receive outstanding parts for %(order)s - %(desc)s "
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated. "
+msgid "The BOM for %(part)s has changed, and must be validated. "
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
+msgid "Confirm that the Bill of Materials (BOM) is valid for:%(part)s "
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s "
+msgid "Showing stock for all variants of %(full_name)s "
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s '?"
+msgid "Are you sure you want to delete part '%(full_name)s '?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s' ."
+msgid "Create a new variant of template '%(full_name)s' ."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s "
+msgid "This stock item is current an instance of %(part)s "
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/part/templates/part/detail.html b/InvenTree/part/templates/part/detail.html
index 6bad2bbbdf..d240b53601 100644
--- a/InvenTree/part/templates/part/detail.html
+++ b/InvenTree/part/templates/part/detail.html
@@ -667,6 +667,8 @@
});
onPanelLoad("test-templates", function() {
+
+ // Load test template table
loadPartTestTemplateTable(
$("#test-template-table"),
{
@@ -677,11 +679,8 @@
}
);
+ // Callback for "add test template" button
$("#add-test-template").click(function() {
-
- function reloadTestTemplateTable() {
- $("#test-template-table").bootstrapTable("refresh");
- }
constructForm('{% url "api-part-test-template-list" %}', {
method: 'POST',
@@ -697,39 +696,10 @@
}
},
title: '{% trans "Add Test Result Template" %}',
- onSuccess: reloadTestTemplateTable
+ onSuccess: function() {
+ $("#test-template-table").bootstrapTable("refresh");
+ }
});
-
- $("#test-template-table").on('click', '.button-test-edit', function() {
- var pk = $(this).attr('pk');
-
- var url = `/api/part/test-template/${pk}/`;
-
- constructForm(url, {
- fields: {
- test_name: {},
- description: {},
- required: {},
- requires_value: {},
- requires_attachment: {},
- },
- title: '{% trans "Edit Test Result Template" %}',
- onSuccess: reloadTestTemplateTable,
- });
- });
-
- $("#test-template-table").on('click', '.button-test-delete', function() {
- var pk = $(this).attr('pk');
-
- var url = `/api/part/test-template/${pk}/`;
-
- constructForm(url, {
- method: 'DELETE',
- title: '{% trans "Delete Test Result Template" %}',
- onSuccess: reloadTestTemplateTable,
- });
- });
-
});
});
diff --git a/InvenTree/part/templatetags/inventree_extras.py b/InvenTree/part/templatetags/inventree_extras.py
index 3b88deb504..ce4ead853a 100644
--- a/InvenTree/part/templatetags/inventree_extras.py
+++ b/InvenTree/part/templatetags/inventree_extras.py
@@ -136,6 +136,21 @@ def inventree_version(*args, **kwargs):
return version.inventreeVersion()
+@register.simple_tag()
+def inventree_is_development(*args, **kwargs):
+ return version.isInvenTreeDevelopmentVersion()
+
+
+@register.simple_tag()
+def inventree_is_release(*args, **kwargs):
+ return not version.isInvenTreeDevelopmentVersion()
+
+
+@register.simple_tag()
+def inventree_docs_version(*args, **kwargs):
+ return version.inventreeDocsVersion()
+
+
@register.simple_tag()
def inventree_api_version(*args, **kwargs):
""" Return InvenTree API version """
@@ -169,7 +184,10 @@ def inventree_github_url(*args, **kwargs):
@register.simple_tag()
def inventree_docs_url(*args, **kwargs):
""" Return URL for InvenTree documenation site """
- return "https://inventree.readthedocs.io/"
+
+ tag = version.inventreeDocsVersion()
+
+ return f"https://inventree.readthedocs.io/en/{tag}"
@register.simple_tag()
diff --git a/InvenTree/templates/about.html b/InvenTree/templates/about.html
index 0750b9711a..aaa14adce5 100644
--- a/InvenTree/templates/about.html
+++ b/InvenTree/templates/about.html
@@ -22,13 +22,39 @@
{% trans "InvenTree Version" %}
{% inventree_version %} {% include "clip.html" %}
+ {% inventree_is_development as dev %}
+ {% if dev %}
+ {% trans "Development Version" %}
+ {% else %}
{% if up_to_date %}
{% trans "Up to Date" %}
{% else %}
{% trans "Update Available" %}
{% endif %}
+ {% endif %}
+ {% if dev %}
+ {% inventree_commit_hash as hash %}
+ {% if hash %}
+
+
+ {% trans "Commit Hash" %} {{ hash }}{% include "clip.html" %}
+
+ {% endif %}
+ {% inventree_commit_date as commit_date %}
+ {% if commit_date %}
+
+
+ {% trans "Commit Date" %} {{ commit_date }}{% include "clip.html" %}
+
+ {% endif %}
+ {% endif %}
+
+
+ {% trans "InvenTree Documentation" %}
+ {% inventree_docs_url %}
+
{% trans "API Version" %}
@@ -44,25 +70,6 @@
{% trans "Django Version" %}
{% django_version %} {% include "clip.html" %}
- {% inventree_commit_hash as hash %}
- {% if hash %}
-
-
- {% trans "Commit Hash" %} {{ hash }}{% include "clip.html" %}
-
- {% endif %}
- {% inventree_commit_date as commit_date %}
- {% if commit_date %}
-
-
- {% trans "Commit Date" %} {{ commit_date }}{% include "clip.html" %}
-
- {% endif %}
-
-
- {% trans "InvenTree Documentation" %}
- {% inventree_docs_url %}
-
{% trans "View Code on GitHub" %}
diff --git a/InvenTree/templates/js/translated/modals.js b/InvenTree/templates/js/translated/modals.js
index 5195c67b46..96e41fd6ec 100644
--- a/InvenTree/templates/js/translated/modals.js
+++ b/InvenTree/templates/js/translated/modals.js
@@ -793,14 +793,25 @@ function attachSecondaries(modal, secondaries) {
function insertActionButton(modal, options) {
/* Insert a custom submission button */
- var html = `
-
-
- ${options.title}
-
- `;
+ var element = $(modal).find('#modal-footer-buttons');
- $(modal).find('#modal-footer-buttons').append(html);
+ // check if button already present
+ var already_present = false;
+ for (var child=element[0].firstElementChild; child; child=child.nextElementSibling) {
+ if (item.firstElementChild.name == options.name) {
+ already_present = true;
+ }
+ }
+
+ if (already_present == false) {
+ var html = `
+
+
+ ${options.title}
+
+ `;
+ element.append(html);
+ }
}
function attachButtons(modal, buttons) {
diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js
index 1ccf8157b6..8cae5d249b 100644
--- a/InvenTree/templates/js/translated/part.js
+++ b/InvenTree/templates/js/translated/part.js
@@ -1252,7 +1252,43 @@ function loadPartTestTemplateTable(table, options) {
}
}
}
- ]
+ ],
+ onPostBody: function() {
+
+ table.find('.button-test-edit').click(function() {
+ var pk = $(this).attr('pk');
+
+ var url = `/api/part/test-template/${pk}/`;
+
+ constructForm(url, {
+ fields: {
+ test_name: {},
+ description: {},
+ required: {},
+ requires_value: {},
+ requires_attachment: {},
+ },
+ title: '{% trans "Edit Test Result Template" %}',
+ onSuccess: function() {
+ table.bootstrapTable('refresh');
+ },
+ });
+ });
+
+ table.find('.button-test-delete').click(function() {
+ var pk = $(this).attr('pk');
+
+ var url = `/api/part/test-template/${pk}/`;
+
+ constructForm(url, {
+ method: 'DELETE',
+ title: '{% trans "Delete Test Result Template" %}',
+ onSuccess: function() {
+ table.bootstrapTable('refresh');
+ },
+ });
+ });
+ }
});
}
diff --git a/ci/check_version_number.py b/ci/check_version_number.py
index 55a42e2484..ca2dbd71c7 100644
--- a/ci/check_version_number.py
+++ b/ci/check_version_number.py
@@ -27,12 +27,61 @@ if __name__ == '__main__':
version = results[0]
parser = argparse.ArgumentParser()
- parser.add_argument('tag', help='Version tag', action='store')
+ parser.add_argument('-t', '--tag', help='Compare against specified version tag', action='store')
+ parser.add_argument('-r', '--release', help='Check that this is a release version', action='store_true')
+ parser.add_argument('-d', '--dev', help='Check that this is a development version', action='store_true')
+ parser.add_argument('-b', '--branch', help='Check against a particular branch', action='store')
args = parser.parse_args()
- if not args.tag == version:
- print(f"Release tag '{args.tag}' does not match INVENTREE_SW_VERSION '{version}'")
- sys.exit(1)
+ if args.branch:
+ """
+ Version number requirement depends on format of branch
+
+ 'master': development branch
+ 'stable': release branch
+ """
+
+ print(f"Checking version number for branch '{args.branch}'")
+
+ if args.branch == 'master':
+ print("- This is a development branch")
+ args.dev = True
+ elif args.branch == 'stable':
+ print("- This is a stable release branch")
+ args.release = True
+
+ if args.dev:
+ """
+ Check that the current verrsion number matches the "development" format
+ e.g. "0.5 dev"
+ """
+
+ pattern = "^\d+(\.\d+)+ dev$"
+
+ result = re.match(pattern, version)
+
+ if result is None:
+ print(f"Version number '{version}' does not match required pattern for development branch")
+ sys.exit(1)
+
+ elif args.release:
+ """
+ Check that the current version number matches the "release" format
+ e.g. "0.5.1"
+ """
+
+ pattern = "^\d+(\.\d+)+$"
+
+ result = re.match(pattern, version)
+
+ if result is None:
+ print(f"Version number '{version}' does not match required pattern for stable branch")
+ sys.exit(1)
+
+ if args.tag:
+ if not args.tag == version:
+ print(f"Release tag '{args.tag}' does not match INVENTREE_SW_VERSION '{version}'")
+ sys.exit(1)
sys.exit(0)
\ No newline at end of file