diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 593f09c121..ae1f42af1e 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-07-03 06:24+0000\n"
-"PO-Revision-Date: 2021-07-03 06:27\n"
+"POT-Creation-Date: 2021-07-03 12:15+0000\n"
+"PO-Revision-Date: 2021-07-03 12:44\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -29,14 +29,14 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: InvenTree/fields.py:84
+#: InvenTree/fields.py:99
msgid "Enter date"
msgstr ""
#: InvenTree/forms.py:112 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:31 order/forms.py:42 order/forms.py:53 order/forms.py:64
-#: order/forms.py:75 part/forms.py:134
+#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
+#: order/forms.py:74 part/forms.py:118 templates/js/forms.js:486
msgid "Confirm"
msgstr ""
@@ -77,8 +77,8 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:403 order/models.py:244 order/models.py:354
-#: stock/views.py:1795
+#: InvenTree/helpers.py:403 order/models.py:311 order/models.py:421
+#: stock/views.py:1627
msgid "Invalid quantity provided"
msgstr ""
@@ -106,49 +106,53 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:59 stock/models.py:1758
+#: InvenTree/models.py:61 stock/models.py:1778
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:60
+#: InvenTree/models.py:62
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:62 templates/attachment_table.html:16
+#: InvenTree/models.py:64 templates/js/attachment.js:52
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:64
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:2022
+#: InvenTree/models.py:70 InvenTree/models.py:71 part/models.py:2043
#: report/templates/report/inventree_test_report_base.html:91
#: templates/js/stock.js:1193
msgid "User"
msgstr ""
-#: InvenTree/models.py:72
+#: InvenTree/models.py:74
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:107 InvenTree/models.py:108 company/models.py:396
-#: label/models.py:102 part/models.py:671 part/models.py:2163
+#: InvenTree/models.py:102
+msgid "Invalid choice"
+msgstr ""
+
+#: InvenTree/models.py:118 InvenTree/models.py:119 company/models.py:414
+#: label/models.py:103 part/models.py:680 part/models.py:2192
#: part/templates/part/params.html:27 report/models.py:180
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/company.js:235 templates/js/part.js:118
+#: templates/js/company.js:359 templates/js/part.js:118
#: templates/js/part.js:642 templates/js/stock.js:986
msgid "Name"
msgstr ""
-#: InvenTree/models.py:114 build/models.py:135
-#: build/templates/build/detail.html:21 company/models.py:339
-#: company/models.py:532 company/templates/company/detail.html:27
+#: InvenTree/models.py:125 build/models.py:139
+#: build/templates/build/detail.html:21 company/models.py:353
+#: company/models.py:554 company/templates/company/detail.html:27
#: company/templates/company/manufacturer_part_base.html:72
#: company/templates/company/supplier_part_base.html:71
-#: company/templates/company/supplier_part_detail.html:31 label/models.py:109
-#: order/models.py:100 order/templates/order/purchase_order_detail.html:147
-#: part/models.py:695 part/templates/part/detail.html:54
+#: company/templates/company/supplier_part_detail.html:31 label/models.py:110
+#: order/models.py:154 order/templates/order/purchase_order_detail.html:174
+#: part/models.py:704 part/templates/part/detail.html:54
#: part/templates/part/set_category.html:14 report/models.py:193
#: report/models.py:530 report/models.py:569
#: report/templates/report/inventree_build_order_base.html:118
@@ -156,39 +160,43 @@ msgstr ""
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190
#: templates/js/build.js:834 templates/js/build.js:1102
-#: templates/js/company.js:56 templates/js/order.js:183
-#: templates/js/order.js:280 templates/js/part.js:177 templates/js/part.js:260
+#: templates/js/company.js:125 templates/js/order.js:245
+#: templates/js/order.js:347 templates/js/part.js:177 templates/js/part.js:260
#: templates/js/part.js:437 templates/js/part.js:654 templates/js/part.js:722
#: templates/js/stock.js:557 templates/js/stock.js:998
#: templates/js/stock.js:1043
msgid "Description"
msgstr ""
-#: InvenTree/models.py:115
+#: InvenTree/models.py:126
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:123
+#: InvenTree/models.py:134
msgid "parent"
msgstr ""
-#: InvenTree/settings.py:504
-msgid "English"
+#: InvenTree/serializers.py:52
+msgid "Must be a valid number"
msgstr ""
#: InvenTree/settings.py:505
-msgid "French"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:506
-msgid "German"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:507
-msgid "Polish"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:508
+msgid "Polish"
+msgstr ""
+
+#: InvenTree/settings.py:509
msgid "Turkish"
msgstr ""
@@ -446,48 +454,48 @@ msgid "Order target date"
msgstr ""
#: build/forms.py:42 build/templates/build/build_base.html:146
-#: build/templates/build/detail.html:121 order/forms.py:118 order/forms.py:153
+#: build/templates/build/detail.html:121
#: 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/build.js:881 templates/js/order.js:200
-#: templates/js/order.js:298
+#: templates/js/build.js:881 templates/js/order.js:262
+#: templates/js/order.js:365
msgid "Target Date"
msgstr ""
-#: build/forms.py:43 build/models.py:225
+#: build/forms.py:43 build/models.py:229
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1346
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1354
#: 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:31 common/models.py:741
-#: company/forms.py:189 company/templates/company/supplier_part_pricing.html:77
-#: order/forms.py:197 order/forms.py:215 order/forms.py:250 order/forms.py:272
-#: order/forms.py:289 order/models.py:613 order/models.py:835
-#: order/templates/order/order_wizard/match_parts.html:30
+#: company/forms.py:124 company/templates/company/supplier_part_pricing.html:79
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:702
+#: order/models.py:941 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:179
-#: order/templates/order/sales_order_detail.html:70
-#: order/templates/order/sales_order_detail.html:77
-#: order/templates/order/sales_order_detail.html:162
-#: order/templates/order/sales_order_detail.html:234 part/forms.py:342
-#: part/forms.py:372 part/forms.py:388 part/forms.py:404 part/models.py:2293
+#: order/templates/order/purchase_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:80
+#: order/templates/order/sales_order_detail.html:87
+#: order/templates/order/sales_order_detail.html:172
+#: order/templates/order/sales_order_detail.html:244 part/forms.py:314
+#: part/forms.py:344 part/forms.py:360 part/forms.py:376 part/models.py:2330
#: part/templates/part/part_pricing.html:16 part/templates/part/prices.html:377
#: part/templates/part/prices.html:474
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
#: report/templates/report/inventree_so_report.html:91
#: report/templates/report/inventree_test_report_base.html:77
-#: stock/forms.py:175 stock/forms.py:308
+#: stock/forms.py:142 stock/forms.py:275
#: stock/templates/stock/item_base.html:255
#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364
#: templates/js/bom.js:205 templates/js/build.js:233 templates/js/build.js:572
-#: templates/js/build.js:1112 templates/js/order.js:393
-#: templates/js/part.js:827 templates/js/part.js:949 templates/js/part.js:1005
-#: templates/js/stock.js:1178 templates/js/stock.js:1397
+#: templates/js/build.js:1112 templates/js/model_renderers.js:43
+#: templates/js/order.js:460 templates/js/part.js:827 templates/js/part.js:949
+#: templates/js/part.js:1005 templates/js/stock.js:1178
+#: templates/js/stock.js:1397
msgid "Quantity"
msgstr ""
@@ -499,7 +507,7 @@ msgstr ""
msgid "Enter quantity for build output"
msgstr ""
-#: build/forms.py:95 order/forms.py:244 stock/forms.py:118
+#: build/forms.py:95 order/forms.py:114 stock/forms.py:85
msgid "Serial Numbers"
msgstr ""
@@ -528,11 +536,11 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:347 stock/templates/stock/item_base.html:285
+#: stock/forms.py:314 stock/templates/stock/item_base.html:285
#: stock/templates/stock/stock_adjust.html:17
#: templates/InvenTree/search.html:260 templates/js/barcode.js:363
#: templates/js/barcode.js:531 templates/js/build.js:218
-#: templates/js/build.js:586 templates/js/order.js:378
+#: templates/js/build.js:586 templates/js/order.js:445
#: templates/js/stock.js:643 templates/js/stock.js:1070
msgid "Location"
msgstr ""
@@ -542,11 +550,11 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:59 order/models.py:465
+#: build/templates/build/detail.html:59 order/models.py:545
#: order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:408 templates/InvenTree/search.html:252
#: templates/js/barcode.js:119 templates/js/build.js:868
-#: templates/js/order.js:187 templates/js/order.js:285
+#: templates/js/order.js:249 templates/js/order.js:352
#: templates/js/stock.js:630 templates/js/stock.js:1147
#: templates/js/stock.js:1413
msgid "Status"
@@ -580,60 +588,60 @@ msgstr ""
msgid "Select quantity of stock to allocate"
msgstr ""
-#: build/models.py:66 build/templates/build/build_base.html:9
+#: build/models.py:70 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/build.js:195
msgid "Build Order"
msgstr ""
-#: build/models.py:67 build/templates/build/index.html:8
+#: build/models.py:71 build/templates/build/index.html:8
#: build/templates/build/index.html:15 order/templates/order/so_builds.html:12
#: order/templates/order/so_navbar.html:19
#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:58
#: part/templates/part/navbar.html:61 templates/InvenTree/index.html:191
#: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:34 users/models.py:43
+#: templates/InvenTree/settings/tabs.html:34 users/models.py:44
msgid "Build Orders"
msgstr ""
-#: build/models.py:127
+#: build/models.py:131
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:128 order/models.py:98 order/models.py:615
-#: order/templates/order/purchase_order_detail.html:174
-#: order/templates/order/sales_order_detail.html:229 part/models.py:2302
+#: build/models.py:132 order/models.py:242 order/models.py:529
+#: order/models.py:709 order/templates/order/purchase_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:239 part/models.py:2339
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
#: templates/js/build.js:661 templates/js/build.js:1106
msgid "Reference"
msgstr ""
-#: build/models.py:138
+#: build/models.py:142
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:147 build/templates/build/build_base.html:163
+#: build/models.py:151 build/templates/build/build_base.html:163
#: build/templates/build/detail.html:77
msgid "Parent Build"
msgstr ""
-#: build/models.py:148
+#: build/models.py:152
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:153 build/templates/build/auto_allocate.html:16
+#: build/models.py:157 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:26 company/models.py:663
-#: order/models.py:657 order/models.py:712
+#: build/templates/build/detail.html:26 company/models.py:689
+#: order/models.py:755 order/models.py:814
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:132
+#: order/templates/order/purchase_order_detail.html:159
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:214 part/models.py:321
-#: part/models.py:1975 part/models.py:1987 part/models.py:2002
-#: part/models.py:2020 part/models.py:2095 part/models.py:2191
-#: part/models.py:2277 part/templates/part/part_app_base.html:8
+#: order/templates/order/sales_order_detail.html:224 part/models.py:325
+#: part/models.py:1988 part/models.py:2004 part/models.py:2023
+#: part/models.py:2041 part/models.py:2120 part/models.py:2224
+#: part/models.py:2314 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12 part/templates/part/related.html:29
#: part/templates/part/set_category.html:13
#: report/templates/report/inventree_build_order_base.html:110
@@ -642,222 +650,222 @@ msgstr ""
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
#: templates/js/barcode.js:362 templates/js/bom.js:163
#: templates/js/build.js:552 templates/js/build.js:839
-#: templates/js/build.js:1079 templates/js/company.js:140
-#: templates/js/company.js:339 templates/js/part.js:241
+#: templates/js/build.js:1079 templates/js/company.js:264
+#: templates/js/company.js:464 templates/js/part.js:241
#: templates/js/part.js:404 templates/js/stock.js:526
#: templates/js/stock.js:1385
msgid "Part"
msgstr ""
-#: build/models.py:161
+#: build/models.py:165
msgid "Select part to build"
msgstr ""
-#: build/models.py:166
+#: build/models.py:170
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:170
+#: build/models.py:174
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:175
+#: build/models.py:179
msgid "Source Location"
msgstr ""
-#: build/models.py:179
+#: build/models.py:183
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:184
+#: build/models.py:188
msgid "Destination Location"
msgstr ""
-#: build/models.py:188
+#: build/models.py:192
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:192
+#: build/models.py:196
msgid "Build Quantity"
msgstr ""
-#: build/models.py:195
+#: build/models.py:199
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:199
+#: build/models.py:203
msgid "Completed items"
msgstr ""
-#: build/models.py:201
+#: build/models.py:205
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:205 part/templates/part/part_base.html:167
+#: build/models.py:209 part/templates/part/part_base.html:167
msgid "Build Status"
msgstr ""
-#: build/models.py:209
+#: build/models.py:213
msgid "Build status code"
msgstr ""
-#: build/models.py:213 stock/models.py:462
+#: build/models.py:217 stock/models.py:470
msgid "Batch Code"
msgstr ""
-#: build/models.py:217
+#: build/models.py:221
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:220 order/models.py:104 part/models.py:867
-#: part/templates/part/detail.html:126 templates/js/order.js:293
+#: build/models.py:224 order/models.py:158 part/models.py:876
+#: part/templates/part/detail.html:126 templates/js/order.js:360
msgid "Creation Date"
msgstr ""
-#: build/models.py:224 order/models.py:471
+#: build/models.py:228 order/models.py:551
msgid "Target completion date"
msgstr ""
-#: build/models.py:228 order/models.py:217 templates/js/build.js:886
+#: build/models.py:232 order/models.py:284 templates/js/build.js:886
msgid "Completion Date"
msgstr ""
-#: build/models.py:234
+#: build/models.py:238
msgid "completed by"
msgstr ""
-#: build/models.py:242
+#: build/models.py:246
msgid "Issued by"
msgstr ""
-#: build/models.py:243
+#: build/models.py:247
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:251 build/templates/build/build_base.html:184
-#: build/templates/build/detail.html:105 order/models.py:118
+#: build/models.py:255 build/templates/build/build_base.html:184
+#: build/templates/build/detail.html:105 order/models.py:172
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:871
+#: order/templates/order/sales_order_base.html:140 part/models.py:880
#: report/templates/report/inventree_build_order_base.html:159
msgid "Responsible"
msgstr ""
-#: build/models.py:252
+#: build/models.py:256
msgid "User responsible for this build order"
msgstr ""
-#: build/models.py:257 build/templates/build/detail.html:91
+#: build/models.py:261 build/templates/build/detail.html:91
#: company/templates/company/manufacturer_part_base.html:79
#: company/templates/company/manufacturer_part_detail.html:28
#: company/templates/company/supplier_part_base.html:78
#: company/templates/company/supplier_part_detail.html:28
#: part/templates/part/detail.html:83 part/templates/part/part_base.html:94
-#: stock/models.py:456 stock/templates/stock/item_base.html:345
+#: stock/models.py:464 stock/templates/stock/item_base.html:345
msgid "External Link"
msgstr ""
-#: build/models.py:258 part/models.py:729 stock/models.py:458
+#: build/models.py:262 part/models.py:738 stock/models.py:466
msgid "Link to external URL"
msgstr ""
-#: build/models.py:262 build/templates/build/navbar.html:53
-#: company/models.py:132 company/models.py:539
+#: build/models.py:266 build/templates/build/navbar.html:53
+#: company/models.py:141 company/models.py:561
#: company/templates/company/navbar.html:70
-#: company/templates/company/navbar.html:73 order/models.py:122
-#: order/models.py:617 order/templates/order/po_navbar.html:38
+#: company/templates/company/navbar.html:73 order/models.py:176
+#: order/models.py:711 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:243
-#: order/templates/order/sales_order_detail.html:309
+#: order/templates/order/purchase_order_detail.html:270
+#: order/templates/order/sales_order_detail.html:319
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:856
+#: order/templates/order/so_navbar.html:36 part/models.py:865
#: part/templates/part/navbar.html:133
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377
-#: stock/models.py:528 stock/models.py:1662 stock/models.py:1764
+#: stock/forms.py:140 stock/forms.py:284 stock/forms.py:316 stock/forms.py:344
+#: stock/models.py:536 stock/models.py:1678 stock/models.py:1784
#: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37
#: templates/js/bom.js:349 templates/js/stock.js:141 templates/js/stock.js:713
msgid "Notes"
msgstr ""
-#: build/models.py:263
+#: build/models.py:267
msgid "Extra build notes"
msgstr ""
-#: build/models.py:740
+#: build/models.py:744
msgid "No build output specified"
msgstr ""
-#: build/models.py:743
+#: build/models.py:747
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:746
+#: build/models.py:750
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1152
+#: build/models.py:1160
msgid "BuildItem must be unique for build, stock_item and install_into"
msgstr ""
-#: build/models.py:1177
+#: build/models.py:1185
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1181
+#: build/models.py:1189
#, python-brace-format
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1188 order/models.py:809
+#: build/models.py:1196 order/models.py:915
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1192 order/models.py:812
+#: build/models.py:1200 order/models.py:918
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1196
+#: build/models.py:1204
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1256
+#: build/models.py:1264
#, python-brace-format
msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
-#: build/models.py:1316 stock/templates/stock/item_base.html:317
+#: build/models.py:1324 stock/templates/stock/item_base.html:317
#: templates/InvenTree/search.html:183 templates/js/build.js:812
#: templates/navbar.html:29
msgid "Build"
msgstr ""
-#: build/models.py:1317
+#: build/models.py:1325
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1333 stock/templates/stock/item_base.html:8
+#: build/models.py:1341 stock/templates/stock/item_base.html:8
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:339
#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:206
#: templates/js/build.js:211 templates/js/build.js:929
-#: templates/js/order.js:366 templates/js/order.js:371
+#: templates/js/order.js:433 templates/js/order.js:438
#: templates/js/stock.js:1129
msgid "Stock Item"
msgstr ""
-#: build/models.py:1334
+#: build/models.py:1342
msgid "Source stock item"
msgstr ""
-#: build/models.py:1347
+#: build/models.py:1355
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1355
+#: build/models.py:1363
msgid "Install into"
msgstr ""
-#: build/models.py:1356
+#: build/models.py:1364
msgid "Destination stock item"
msgstr ""
@@ -891,7 +899,7 @@ msgstr ""
#: build/templates/build/allocate.html:30
#: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:992
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:724
#: part/templates/part/category.html:136
msgid "Order Parts"
msgstr ""
@@ -910,11 +918,11 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:75
-#: order/templates/order/sales_order_detail.html:160
+#: order/templates/order/sales_order_detail.html:85
+#: order/templates/order/sales_order_detail.html:170
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:450 stock/templates/stock/item_base.html:249
-#: templates/js/build.js:570
+#: stock/models.py:458 stock/templates/stock/item_base.html:249
+#: templates/js/build.js:570 templates/js/model_renderers.js:41
msgid "Serial Number"
msgstr ""
@@ -927,6 +935,35 @@ msgstr ""
msgid "Attachments"
msgstr ""
+#: build/templates/build/attachments.html:51
+#: order/templates/order/so_attachments.html:79
+#: part/templates/part/attachments.html:81
+#: stock/templates/stock/item_attachments.html:81
+#: templates/attachment_table.html:6
+msgid "Add Attachment"
+msgstr ""
+
+#: build/templates/build/attachments.html:69
+#: order/templates/order/so_attachments.html:52
+#: part/templates/part/attachments.html:35
+#: stock/templates/stock/item_attachments.html:49
+msgid "Edit Attachment"
+msgstr ""
+
+#: build/templates/build/attachments.html:76
+#: order/templates/order/so_attachments.html:58
+#: part/templates/part/attachments.html:44
+#: stock/templates/stock/item_attachments.html:58
+msgid "Confirm Delete Operation"
+msgstr ""
+
+#: build/templates/build/attachments.html:77
+#: order/templates/order/so_attachments.html:59
+#: part/templates/part/attachments.html:45
+#: stock/templates/stock/item_attachments.html:59
+msgid "Delete Attachment"
+msgstr ""
+
#: build/templates/build/auto_allocate.html:9
msgid "Automatically Allocate Stock"
msgstr ""
@@ -1034,13 +1071,13 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:84 order/models.py:710
+#: build/templates/build/detail.html:84 order/models.py:812
#: 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:279 templates/js/order.js:245
+#: stock/templates/stock/item_base.html:279 templates/js/order.js:307
msgid "Sales Order"
msgstr ""
@@ -1181,10 +1218,10 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:46 order/forms.py:89 order/models.py:673
-#: order/templates/order/purchase_order_detail.html:239
-#: order/templates/order/receive_parts.html:25 stock/forms.py:169
-#: stock/forms.py:375
+#: build/templates/build/detail.html:46 order/forms.py:88 order/models.py:771
+#: order/templates/order/purchase_order_detail.html:266
+#: order/templates/order/receive_parts.html:25 stock/forms.py:136
+#: stock/forms.py:342
msgid "Destination"
msgstr ""
@@ -1285,7 +1322,6 @@ msgstr ""
#: order/templates/order/order_notes.html:27
#: order/templates/order/sales_order_notes.html:29
#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:487
-#: stock/templates/stock/item_base.html:497
#: stock/templates/stock/item_notes.html:26
msgid "Save"
msgstr ""
@@ -1314,7 +1350,7 @@ msgstr ""
msgid "Maximum output quantity is "
msgstr ""
-#: build/views.py:184 stock/views.py:1821
+#: build/views.py:184 stock/views.py:1653
msgid "Serial numbers already exist"
msgstr ""
@@ -1330,7 +1366,7 @@ msgstr ""
msgid "Confirm unallocation of build stock"
msgstr ""
-#: build/views.py:281 build/views.py:371 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:346
msgid "Check the confirmation box"
msgstr ""
@@ -1427,31 +1463,6 @@ msgstr ""
msgid "Updated Build Item"
msgstr ""
-#: build/views.py:1070
-msgid "Add Build Order Attachment"
-msgstr ""
-
-#: build/views.py:1083 order/views.py:117 order/views.py:169 part/views.py:179
-#: stock/views.py:277
-msgid "Added attachment"
-msgstr ""
-
-#: build/views.py:1119 order/views.py:196 order/views.py:217
-msgid "Edit Attachment"
-msgstr ""
-
-#: build/views.py:1129 order/views.py:200 order/views.py:221
-msgid "Attachment updated"
-msgstr ""
-
-#: build/views.py:1139 order/views.py:236 order/views.py:250
-msgid "Delete Attachment"
-msgstr ""
-
-#: build/views.py:1144 order/views.py:242 order/views.py:256 stock/views.py:333
-msgid "Deleted attachment"
-msgstr ""
-
#: common/files.py:66
msgid "Unsupported file format: {ext.upper()}"
msgstr ""
@@ -1468,7 +1479,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/attachment_table.html:15
+#: common/forms.py:34 templates/js/attachment.js:42
msgid "File"
msgstr ""
@@ -1501,7 +1512,7 @@ msgstr ""
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:72 company/models.py:94 company/models.py:95
+#: common/models.py:72 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
@@ -1605,8 +1616,8 @@ msgstr ""
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:160 part/models.py:2193 part/templates/part/detail.html:160
-#: report/models.py:186 stock/forms.py:259 templates/js/table_filters.js:25
+#: common/models.py:160 part/models.py:2226 part/templates/part/detail.html:160
+#: report/models.py:186 stock/forms.py:226 templates/js/table_filters.js:25
#: templates/js/table_filters.js:320
msgid "Template"
msgstr ""
@@ -1615,7 +1626,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:167 part/models.py:819 part/templates/part/detail.html:170
+#: common/models.py:167 part/models.py:828 part/templates/part/detail.html:170
#: templates/js/table_filters.js:128 templates/js/table_filters.js:332
msgid "Assembly"
msgstr ""
@@ -1624,7 +1635,7 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:174 part/models.py:825 part/templates/part/detail.html:180
+#: common/models.py:174 part/models.py:834 part/templates/part/detail.html:180
#: templates/js/table_filters.js:336
msgid "Component"
msgstr ""
@@ -1633,7 +1644,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:181 part/models.py:836 part/templates/part/detail.html:200
+#: common/models.py:181 part/models.py:845 part/templates/part/detail.html:200
msgid "Purchaseable"
msgstr ""
@@ -1641,7 +1652,7 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:188 part/models.py:841 part/templates/part/detail.html:210
+#: common/models.py:188 part/models.py:850 part/templates/part/detail.html:210
#: templates/js/table_filters.js:344
msgid "Salable"
msgstr ""
@@ -1650,7 +1661,7 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:195 part/models.py:831 part/templates/part/detail.html:190
+#: common/models.py:195 part/models.py:840 part/templates/part/detail.html:190
#: templates/js/table_filters.js:33 templates/js/table_filters.js:348
msgid "Trackable"
msgstr ""
@@ -1659,7 +1670,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:202 part/models.py:851 part/templates/part/detail.html:150
+#: common/models.py:202 part/models.py:860 part/templates/part/detail.html:150
#: templates/js/table_filters.js:29
msgid "Virtual"
msgstr ""
@@ -1856,11 +1867,11 @@ msgstr ""
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:742 company/forms.py:190
+#: common/models.py:742 company/forms.py:125
msgid "Price break quantity"
msgstr ""
-#: common/models.py:749 company/templates/company/supplier_part_pricing.html:82
+#: common/models.py:749 company/templates/company/supplier_part_pricing.html:84
#: templates/js/part.js:832
msgid "Price"
msgstr ""
@@ -1891,16 +1902,16 @@ msgstr ""
#: common/views.py:184 order/templates/order/order_wizard/po_upload.html:42
#: order/templates/order/po_navbar.html:19
-#: order/templates/order/po_navbar.html:22 order/views.py:605
+#: order/templates/order/po_navbar.html:22 order/views.py:337
#: part/templates/part/bom_upload/upload_file.html:27
-#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:762
+#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:621
msgid "Upload File"
msgstr ""
#: common/views.py:185 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:606 part/templates/part/bom_upload/select_fields.html:58
+#: order/views.py:338 part/templates/part/bom_upload/select_fields.html:58
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:763
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:622
msgid "Match Fields"
msgstr ""
@@ -1925,269 +1936,277 @@ msgstr ""
msgid "Previous Step"
msgstr ""
-#: company/forms.py:37 company/models.py:142
-#: company/templates/company/detail.html:42
-msgid "Currency"
-msgstr ""
-
-#: company/forms.py:38 company/models.py:144
-msgid "Default currency used for this company"
-msgstr ""
-
-#: company/forms.py:76 part/forms.py:46
+#: company/forms.py:26 part/forms.py:46
msgid "URL"
msgstr ""
-#: company/forms.py:77 part/forms.py:47
+#: company/forms.py:27 part/forms.py:47
msgid "Image URL"
msgstr ""
-#: company/forms.py:132 templates/js/part.js:940
+#: company/forms.py:67 templates/js/part.js:940
msgid "Single Price"
msgstr ""
-#: company/forms.py:133
+#: company/forms.py:68
msgid "Single quantity price"
msgstr ""
-#: company/forms.py:141 company/models.py:321
+#: company/forms.py:76 company/models.py:335
msgid "Select manufacturer"
msgstr ""
-#: company/forms.py:147 company/models.py:328
+#: company/forms.py:82 company/models.py:342
msgid "Manufacturer Part Number"
msgstr ""
-#: company/forms.py:149 company/models.py:327
+#: company/forms.py:84 company/models.py:341
#: company/templates/company/manufacturer_part_base.html:89
#: company/templates/company/manufacturer_part_detail.html:26
#: company/templates/company/supplier_part_base.html:102
#: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:162 part/bom.py:171
-#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:408
+#: order/templates/order/purchase_order_detail.html:189 part/bom.py:171
+#: part/bom.py:242 templates/js/company.js:305 templates/js/company.js:533
msgid "MPN"
msgstr ""
-#: company/models.py:99
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:100
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:104 company/templates/company/company_base.html:70
-#: company/templates/company/detail.html:33 templates/js/company.js:60
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: company/templates/company/detail.html:33 templates/js/company.js:129
msgid "Website"
msgstr ""
-#: company/models.py:104
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:107 company/templates/company/company_base.html:77
+#: company/models.py:116 company/templates/company/company_base.html:77
msgid "Address"
msgstr ""
-#: company/models.py:108
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:111
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:112
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:115 company/templates/company/company_base.html:91
+#: company/models.py:124 company/templates/company/company_base.html:91
msgid "Email"
msgstr ""
-#: company/models.py:115
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:118 company/templates/company/company_base.html:98
+#: company/models.py:127 company/templates/company/company_base.html:98
msgid "Contact"
msgstr ""
-#: company/models.py:119
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:121 company/models.py:333 company/models.py:526
-#: order/models.py:102 part/models.py:728
+#: company/models.py:130 company/models.py:347 company/models.py:548
+#: order/models.py:156 part/models.py:737
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/company.js:188 templates/js/company.js:419
+#: templates/js/company.js:312 templates/js/company.js:544
#: templates/js/part.js:498
msgid "Link"
msgstr ""
-#: company/models.py:121
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:129 part/models.py:738
+#: company/models.py:138 part/models.py:747
msgid "Image"
msgstr ""
-#: company/models.py:134
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:134
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:136
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:136
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:138
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:138
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:305 company/models.py:497 stock/models.py:403
+#: company/models.py:151 company/serializers.py:259
+#: company/templates/company/detail.html:42
+msgid "Currency"
+msgstr ""
+
+#: company/models.py:154
+msgid "Default currency used for this company"
+msgstr ""
+
+#: company/models.py:319 company/models.py:519 stock/models.py:411
#: stock/templates/stock/item_base.html:235
msgid "Base Part"
msgstr ""
-#: company/models.py:309 company/models.py:501 order/views.py:1603
+#: company/models.py:323 company/models.py:523 order/views.py:1127
msgid "Select part"
msgstr ""
-#: company/models.py:320 company/templates/company/detail.html:57
+#: company/models.py:334 company/templates/company/detail.html:57
#: company/templates/company/manufacturer_part_base.html:85
#: company/templates/company/manufacturer_part_detail.html:25
#: company/templates/company/supplier_part_base.html:94
#: company/templates/company/supplier_part_detail.html:34 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:352
-#: templates/js/company.js:44 templates/js/company.js:165
-#: templates/js/company.js:390
+#: templates/js/company.js:113 templates/js/company.js:289
+#: templates/js/company.js:515
msgid "Manufacturer"
msgstr ""
-#: company/models.py:334
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:340
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:390 company/models.py:520
+#: company/models.py:408 company/models.py:542
#: company/templates/company/manufacturer_part_base.html:6
#: company/templates/company/manufacturer_part_base.html:19
#: stock/templates/stock/item_base.html:362
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:397
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:403 part/templates/part/params.html:28
+#: company/models.py:421 part/templates/part/params.html:28
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1751 templates/InvenTree/settings/header.html:8
-#: templates/js/company.js:241 templates/js/stock.js:137
+#: stock/models.py:1771 templates/InvenTree/settings/header.html:8
+#: templates/js/company.js:365 templates/js/stock.js:137
msgid "Value"
msgstr ""
-#: company/models.py:404
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:410 part/models.py:813 part/models.py:2165
+#: company/models.py:428 part/models.py:822 part/models.py:2194
#: part/templates/part/detail.html:106 part/templates/part/params.html:29
-#: templates/js/company.js:247
+#: templates/js/company.js:371
msgid "Units"
msgstr ""
-#: company/models.py:411
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:507 company/templates/company/detail.html:62
+#: company/models.py:529 company/templates/company/detail.html:62
#: company/templates/company/supplier_part_base.html:84
-#: company/templates/company/supplier_part_detail.html:25 order/models.py:189
+#: company/templates/company/supplier_part_detail.html:25 order/models.py:256
#: 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:369
-#: templates/js/company.js:48 templates/js/company.js:364
-#: templates/js/order.js:170
+#: templates/js/company.js:117 templates/js/company.js:489
+#: templates/js/order.js:232
msgid "Supplier"
msgstr ""
-#: company/models.py:508
+#: company/models.py:530
msgid "Select supplier"
msgstr ""
-#: company/models.py:513 company/templates/company/supplier_part_base.html:88
+#: company/models.py:535 company/templates/company/supplier_part_base.html:88
#: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:153 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:180 part/bom.py:176
#: part/bom.py:287
msgid "SKU"
msgstr ""
-#: company/models.py:514
+#: company/models.py:536
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:521
+#: company/models.py:543
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:527
+#: company/models.py:549
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:533
+#: company/models.py:555
msgid "Supplier part description"
msgstr ""
-#: company/models.py:538 company/templates/company/supplier_part_base.html:116
-#: company/templates/company/supplier_part_detail.html:38 part/models.py:2305
+#: company/models.py:560 company/templates/company/supplier_part_base.html:116
+#: company/templates/company/supplier_part_detail.html:38 part/models.py:2342
#: report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:542 part/models.py:1606
+#: company/models.py:564 part/models.py:1615
msgid "base cost"
msgstr ""
-#: company/models.py:542 part/models.py:1606
+#: company/models.py:564 part/models.py:1615
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:544 company/templates/company/supplier_part_base.html:109
-#: stock/models.py:427 stock/templates/stock/item_base.html:310
+#: company/models.py:566 company/templates/company/supplier_part_base.html:109
+#: stock/models.py:435 stock/templates/stock/item_base.html:310
#: templates/js/stock.js:709
msgid "Packaging"
msgstr ""
-#: company/models.py:544
+#: company/models.py:566
msgid "Part packaging"
msgstr ""
-#: company/models.py:546 part/models.py:1608
+#: company/models.py:568 part/models.py:1617
msgid "multiple"
msgstr ""
-#: company/models.py:546
+#: company/models.py:568
msgid "Order multiple"
msgstr ""
+#: company/serializers.py:68
+msgid "Default currency used for this supplier"
+msgstr ""
+
+#: company/serializers.py:69
+msgid "Currency Code"
+msgstr ""
+
#: company/templates/company/assigned_stock.html:10
#: company/templates/company/navbar.html:62
#: company/templates/company/navbar.html:65 templates/js/build.js:563
@@ -2196,7 +2215,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/company.js:33
+#: templates/InvenTree/search.html:304 templates/js/company.js:102
msgid "Company"
msgstr ""
@@ -2210,7 +2229,7 @@ msgstr ""
msgid "Download image from URL"
msgstr ""
-#: company/templates/company/company_base.html:46 order/views.py:313
+#: company/templates/company/company_base.html:46 templates/js/order.js:61
msgid "Create Purchase Order"
msgstr ""
@@ -2218,7 +2237,8 @@ msgstr ""
msgid "Edit company information"
msgstr ""
-#: company/templates/company/company_base.html:56 company/views.py:326
+#: company/templates/company/company_base.html:56
+#: company/templates/company/company_base.html:126
msgid "Delete Company"
msgstr ""
@@ -2232,15 +2252,9 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/delete.html:7
-#, python-format
-msgid "Are you sure you want to delete company '%(name)s'?"
-msgstr ""
-
-#: company/templates/company/delete.html:12
-#, python-format
-msgid "There are %(count)s parts sourced from this company.
\n"
-"If this supplier is deleted, these supplier part entries will also be deleted."
+#: company/templates/company/company_base.html:166
+#: part/templates/part/part_base.html:307
+msgid "Upload Image"
msgstr ""
#: company/templates/company/detail.html:21
@@ -2255,10 +2269,10 @@ msgstr ""
msgid "Uses default currency"
msgstr ""
-#: company/templates/company/detail.html:67 order/models.py:460
-#: order/templates/order/sales_order_base.html:94 stock/models.py:445
-#: stock/models.py:446 stock/templates/stock/item_base.html:262
-#: templates/js/company.js:40 templates/js/order.js:267
+#: company/templates/company/detail.html:67 order/models.py:540
+#: order/templates/order/sales_order_base.html:94 stock/models.py:453
+#: stock/models.py:454 stock/templates/stock/item_base.html:262
+#: templates/js/company.js:109 templates/js/order.js:329
#: templates/js/stock.js:1111
msgid "Customer"
msgstr ""
@@ -2280,6 +2294,7 @@ msgstr ""
#: company/templates/company/detail_manufacturer_part.html:28
#: company/templates/company/detail_supplier_part.html:27
#: company/templates/company/manufacturer_part_suppliers.html:20
+#: company/templates/company/manufacturer_part_suppliers.html:46
#: part/templates/part/category.html:131
#: part/templates/part/manufacturer.html:22
#: part/templates/part/supplier.html:20
@@ -2302,26 +2317,25 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail_manufacturer_part.html:66
+#: company/templates/company/detail_manufacturer_part.html:68
#: company/templates/company/detail_supplier_part.html:66
#: part/templates/part/bom.html:159 part/templates/part/category.html:127
#: templates/js/stock.js:1326
msgid "New Part"
msgstr ""
-#: company/templates/company/detail_manufacturer_part.html:67
+#: company/templates/company/detail_manufacturer_part.html:69
#: company/templates/company/detail_supplier_part.html:67
msgid "Create new Part"
msgstr ""
-#: company/templates/company/detail_manufacturer_part.html:72
-#: company/views.py:71 part/templates/part/manufacturer.html:52
-#: part/templates/part/supplier.html:56
+#: company/templates/company/detail_manufacturer_part.html:74
+#: company/views.py:66 part/templates/part/manufacturer.html:52
+#: part/templates/part/supplier.html:55
msgid "New Manufacturer"
msgstr ""
-#: company/templates/company/detail_manufacturer_part.html:73
-#: company/views.py:284
+#: company/templates/company/detail_manufacturer_part.html:75
msgid "Create new Manufacturer"
msgstr ""
@@ -2344,26 +2358,24 @@ msgstr ""
#: company/templates/company/detail_supplier_part.html:21
#: order/templates/order/order_wizard/select_parts.html:44
-#: order/templates/order/purchase_order_detail.html:50
+#: part/templates/part/part_base.html:429
msgid "Create new supplier part"
msgstr ""
#: company/templates/company/detail_supplier_part.html:22
#: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:49
-#: part/templates/part/supplier.html:17 templates/js/stock.js:1332
+#: part/templates/part/part_base.html:428 part/templates/part/supplier.html:17
+#: templates/js/stock.js:1332
msgid "New Supplier Part"
msgstr ""
#: company/templates/company/detail_supplier_part.html:72
-#: company/templates/company/manufacturer_part_suppliers.html:82
-#: company/views.py:64 order/templates/order/purchase_orders.html:185
-#: part/templates/part/supplier.html:50
+#: company/templates/company/manufacturer_part_suppliers.html:96
+#: company/views.py:60 part/templates/part/supplier.html:50
msgid "New Supplier"
msgstr ""
-#: company/templates/company/detail_supplier_part.html:73 company/views.py:281
-#: order/templates/order/purchase_orders.html:186
+#: company/templates/company/detail_supplier_part.html:73
msgid "Create new Supplier"
msgstr ""
@@ -2398,18 +2410,17 @@ msgstr ""
msgid "Internal Part"
msgstr ""
-#: company/templates/company/manufacturer_part_delete.html:6
-msgid "Are you sure you want to delete the following Manufacturer Parts?"
+#: company/templates/company/manufacturer_part_base.html:125
+msgid "Edit Manufacturer Part"
msgstr ""
-#: company/templates/company/manufacturer_part_delete.html:36
-#, python-format
-msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
+#: company/templates/company/manufacturer_part_base.html:134
+msgid "Delete Manufacturer Part"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: company/templates/company/manufacturer_part_suppliers.html:10
-#: company/views.py:63 part/templates/part/navbar.html:87
+#: company/views.py:59 part/templates/part/navbar.html:87
#: part/templates/part/navbar.html:90 part/templates/part/prices.html:153
#: templates/InvenTree/search.html:316 templates/navbar.html:35
msgid "Suppliers"
@@ -2422,7 +2433,7 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:22
#: company/templates/company/navbar.html:41
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:39 stock/api.py:54
+#: part/templates/part/navbar.html:39 stock/api.py:53
#: 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:128 templates/InvenTree/search.html:196
@@ -2448,9 +2459,11 @@ msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part_suppliers.html:22
+#: company/templates/company/manufacturer_part_suppliers.html:48
+#: company/templates/company/manufacturer_part_suppliers.html:142
#: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
#: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:191
+#: stock/views.py:855 templates/js/company.js:203 users/models.py:192
msgid "Delete"
msgstr ""
@@ -2468,11 +2481,27 @@ msgstr ""
msgid "New Parameter"
msgstr ""
-#: company/templates/company/manufacturer_part_suppliers.html:83
+#: company/templates/company/manufacturer_part_suppliers.html:48
+msgid "Delete parameters"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_suppliers.html:80
+msgid "Add Parameter"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_suppliers.html:97
#: part/templates/part/supplier.html:51
msgid "Create new supplier"
msgstr ""
+#: company/templates/company/manufacturer_part_suppliers.html:127
+msgid "Selected parameters will be deleted"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_suppliers.html:139
+msgid "Delete Parameters"
+msgstr ""
+
#: company/templates/company/navbar.html:20
#: company/templates/company/navbar.html:23
msgid "Manufactured Parts"
@@ -2490,7 +2519,7 @@ msgstr ""
#: stock/templates/stock/location_navbar.html:22
#: stock/templates/stock/location_navbar.html:29
#: templates/InvenTree/search.html:198 templates/js/stock.js:1010
-#: templates/stats.html:93 templates/stats.html:102 users/models.py:42
+#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2504,7 +2533,7 @@ msgstr ""
#: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:236
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/tabs.html:40 templates/navbar.html:46
-#: users/models.py:45
+#: users/models.py:46
msgid "Sales Orders"
msgstr ""
@@ -2516,7 +2545,7 @@ msgstr ""
#: part/templates/part/orders.html:10 templates/InvenTree/index.html:213
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:37
-#: users/models.py:44
+#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
@@ -2545,8 +2574,8 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/supplier_part_base.html:7
-#: company/templates/company/supplier_part_base.html:20 stock/models.py:412
-#: stock/templates/stock/item_base.html:374 templates/js/company.js:380
+#: company/templates/company/supplier_part_base.html:20 stock/models.py:420
+#: stock/templates/stock/item_base.html:374 templates/js/company.js:505
#: templates/js/stock.js:690
msgid "Supplier Part"
msgstr ""
@@ -2596,8 +2625,9 @@ msgstr ""
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part_pricing.html:19 company/views.py:855
-#: part/templates/part/prices.html:264 part/views.py:2951
+#: company/templates/company/supplier_part_pricing.html:19
+#: company/templates/company/supplier_part_pricing.html:118
+#: part/templates/part/prices.html:264 part/views.py:2788
msgid "Add Price Break"
msgstr ""
@@ -2605,443 +2635,387 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part_pricing.html:89
+#: company/templates/company/supplier_part_pricing.html:52 part/views.py:2850
+msgid "Delete Price Break"
+msgstr ""
+
+#: company/templates/company/supplier_part_pricing.html:66 part/views.py:2836
+msgid "Edit Price Break"
+msgstr ""
+
+#: company/templates/company/supplier_part_pricing.html:91
msgid "Edit price break"
msgstr ""
-#: company/templates/company/supplier_part_pricing.html:90
+#: company/templates/company/supplier_part_pricing.html:92
msgid "Delete price break"
msgstr ""
-#: company/views.py:70 part/templates/part/navbar.html:81
+#: company/views.py:65 part/templates/part/navbar.html:81
#: part/templates/part/navbar.html:84 part/templates/part/prices.html:157
#: templates/InvenTree/search.html:306 templates/navbar.html:36
msgid "Manufacturers"
msgstr ""
-#: company/views.py:77 templates/InvenTree/search.html:336
+#: company/views.py:71 templates/InvenTree/search.html:336
#: templates/navbar.html:45
msgid "Customers"
msgstr ""
-#: company/views.py:78 order/templates/order/sales_orders.html:187
+#: company/views.py:72
msgid "New Customer"
msgstr ""
-#: company/views.py:86
+#: company/views.py:79
msgid "Companies"
msgstr ""
-#: company/views.py:87
+#: company/views.py:80
msgid "New Company"
msgstr ""
-#: company/views.py:169 part/views.py:1148
+#: company/views.py:161 part/views.py:1007
msgid "Download Image"
msgstr ""
-#: company/views.py:198 part/views.py:1180
+#: company/views.py:190 part/views.py:1039
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:205 part/views.py:1187
+#: company/views.py:197 part/views.py:1046
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:214 part/views.py:1196
+#: company/views.py:206 part/views.py:1055
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: company/views.py:243
-msgid "Update Company Image"
-msgstr ""
-
-#: company/views.py:249
-msgid "Updated company image"
-msgstr ""
-
-#: company/views.py:259
-msgid "Edit Company"
-msgstr ""
-
-#: company/views.py:264
-msgid "Edited company information"
-msgstr ""
-
-#: company/views.py:287 order/templates/order/sales_orders.html:188
-msgid "Create new Customer"
-msgstr ""
-
-#: company/views.py:289
-msgid "Create new Company"
-msgstr ""
-
-#: company/views.py:316
-msgid "Created new company"
-msgstr ""
-
-#: company/views.py:332
-msgid "Company was deleted"
-msgstr ""
-
-#: company/views.py:357
-msgid "Edit Manufacturer Part"
-msgstr ""
-
-#: company/views.py:366
+#: company/views.py:251
msgid "Create New Manufacturer Part"
msgstr ""
-#: company/views.py:440
-msgid "Delete Manufacturer Part"
-msgstr ""
-
-#: company/views.py:514
-msgid "Add Manufacturer Part Parameter"
-msgstr ""
-
-#: company/views.py:548
-msgid "Edit Manufacturer Part Parameter"
-msgstr ""
-
-#: company/views.py:588
+#: company/views.py:334
msgid "Edit Supplier Part"
msgstr ""
-#: company/views.py:639 templates/js/stock.js:1333
+#: company/views.py:385 templates/js/stock.js:1333
msgid "Create new Supplier Part"
msgstr ""
-#: company/views.py:783
+#: company/views.py:529
msgid "Delete Supplier Part"
msgstr ""
-#: company/views.py:860 part/views.py:2955
-msgid "Added new price break"
-msgstr ""
-
-#: company/views.py:916 part/views.py:2999
-msgid "Edit Price Break"
-msgstr ""
-
-#: company/views.py:931 part/views.py:3013
-msgid "Delete Price Break"
-msgstr ""
-
#: label/api.py:56 report/api.py:201
msgid "No valid objects provided to template"
msgstr ""
-#: label/models.py:103
+#: label/models.py:104
msgid "Label name"
msgstr ""
-#: label/models.py:110
+#: label/models.py:111
msgid "Label description"
msgstr ""
-#: label/models.py:117 stock/forms.py:202
+#: label/models.py:118 stock/forms.py:169
msgid "Label"
msgstr ""
-#: label/models.py:118
+#: label/models.py:119
msgid "Label template file"
msgstr ""
-#: label/models.py:124 report/models.py:297
+#: label/models.py:125 report/models.py:297
msgid "Enabled"
msgstr ""
-#: label/models.py:125
+#: label/models.py:126
msgid "Label template is enabled"
msgstr ""
-#: label/models.py:130
+#: label/models.py:131
msgid "Width [mm]"
msgstr ""
-#: label/models.py:131
+#: label/models.py:132
msgid "Label width, specified in mm"
msgstr ""
-#: label/models.py:137
+#: label/models.py:138
msgid "Height [mm]"
msgstr ""
-#: label/models.py:138
+#: label/models.py:139
msgid "Label height, specified in mm"
msgstr ""
-#: label/models.py:144 report/models.py:290
+#: label/models.py:145 report/models.py:290
msgid "Filename Pattern"
msgstr ""
-#: label/models.py:145
+#: label/models.py:146
msgid "Pattern for generating label filenames"
msgstr ""
-#: label/models.py:244 label/models.py:297
+#: label/models.py:249 label/models.py:306
msgid "Query filters (comma-separated list of key=value pairs"
msgstr ""
-#: label/models.py:245 label/models.py:298 report/models.py:317
+#: label/models.py:250 label/models.py:307 report/models.py:317
#: report/models.py:440 report/models.py:474
msgid "Filters"
msgstr ""
-#: order/forms.py:31 order/templates/order/order_base.html:47
+#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
-#: order/forms.py:42 order/templates/order/order_base.html:54
+#: order/forms.py:41 order/templates/order/order_base.html:54
msgid "Mark order as complete"
msgstr ""
-#: order/forms.py:53 order/forms.py:64 order/templates/order/order_base.html:59
+#: order/forms.py:52 order/forms.py:63 order/templates/order/order_base.html:59
#: order/templates/order/sales_order_base.html:61
msgid "Cancel order"
msgstr ""
-#: order/forms.py:75 order/templates/order/sales_order_base.html:58
+#: order/forms.py:74 order/templates/order/sales_order_base.html:58
msgid "Ship order"
msgstr ""
-#: order/forms.py:90
+#: order/forms.py:89
msgid "Receive parts to this location"
msgstr ""
-#: order/forms.py:112
-msgid "Purchase Order reference"
-msgstr ""
-
-#: order/forms.py:119
-msgid "Target date for order delivery. Order will be overdue after this date."
-msgstr ""
-
-#: order/forms.py:147
-msgid "Enter sales order number"
-msgstr ""
-
-#: order/forms.py:154 order/models.py:472
-msgid "Target date for order completion. Order will be overdue after this date."
-msgstr ""
-
-#: order/forms.py:246
+#: order/forms.py:116
msgid "Enter stock item serial numbers"
msgstr ""
-#: order/forms.py:252
+#: order/forms.py:122
msgid "Enter quantity of stock items"
msgstr ""
-#: order/models.py:98
-msgid "Order reference"
-msgstr ""
-
-#: order/models.py:100
+#: order/models.py:154
msgid "Order description"
msgstr ""
-#: order/models.py:102
+#: order/models.py:156
msgid "Link to external page"
msgstr ""
-#: order/models.py:110 part/templates/part/detail.html:132
+#: order/models.py:164 part/templates/part/detail.html:132
msgid "Created By"
msgstr ""
-#: order/models.py:117
+#: order/models.py:171
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:122
+#: order/models.py:176
msgid "Order notes"
msgstr ""
-#: order/models.py:181 order/models.py:465
+#: order/models.py:243 order/models.py:530
+msgid "Order reference"
+msgstr ""
+
+#: order/models.py:248 order/models.py:545
msgid "Purchase order status"
msgstr ""
-#: order/models.py:190
+#: order/models.py:257
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:193 order/templates/order/order_base.html:98
-#: templates/js/order.js:179
+#: order/models.py:260 order/templates/order/order_base.html:98
+#: templates/js/order.js:241
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:193
+#: order/models.py:260
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:200
+#: order/models.py:267
msgid "received by"
msgstr ""
-#: order/models.py:205
+#: order/models.py:272
msgid "Issue Date"
msgstr ""
-#: order/models.py:206
+#: order/models.py:273
msgid "Date order was issued"
msgstr ""
-#: order/models.py:211
+#: order/models.py:278
msgid "Target Delivery Date"
msgstr ""
-#: order/models.py:212
+#: order/models.py:279
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:218
+#: order/models.py:285
msgid "Date order was completed"
msgstr ""
-#: order/models.py:242 part/views.py:1886 stock/models.py:300
-#: stock/models.py:1015
+#: order/models.py:309 part/views.py:1730 stock/models.py:308
+#: stock/models.py:1023
msgid "Quantity must be greater than zero"
msgstr ""
-#: order/models.py:247
+#: order/models.py:314
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:345
+#: order/models.py:412
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:349
+#: order/models.py:416
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:351
+#: order/models.py:418
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:461
+#: order/models.py:541
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:467
+#: order/models.py:547
msgid "Customer Reference "
msgstr ""
-#: order/models.py:467
+#: order/models.py:547
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:475 templates/js/order.js:303
+#: order/models.py:552
+msgid "Target date for order completion. Order will be overdue after this date."
+msgstr ""
+
+#: order/models.py:555 templates/js/order.js:370
msgid "Shipment Date"
msgstr ""
-#: order/models.py:482
+#: order/models.py:562
msgid "shipped by"
msgstr ""
-#: order/models.py:526
+#: order/models.py:606
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:613
+#: order/models.py:703
msgid "Item quantity"
msgstr ""
-#: order/models.py:615
+#: order/models.py:709
msgid "Line item reference"
msgstr ""
-#: order/models.py:617
+#: order/models.py:711
msgid "Line item notes"
msgstr ""
-#: order/models.py:643 order/models.py:710 templates/js/order.js:353
+#: order/models.py:741 order/models.py:812 templates/js/order.js:420
msgid "Order"
msgstr ""
-#: order/models.py:644 order/templates/order/order_base.html:9
+#: order/models.py:742 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:324 templates/js/order.js:148
+#: stock/templates/stock/item_base.html:324 templates/js/order.js:210
#: templates/js/stock.js:669 templates/js/stock.js:1092
msgid "Purchase Order"
msgstr ""
-#: order/models.py:658
+#: order/models.py:756
msgid "Supplier part"
msgstr ""
-#: order/models.py:661 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:219
+#: order/models.py:759 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:246
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
msgid "Received"
msgstr ""
-#: order/models.py:661
+#: order/models.py:759
msgid "Number of items received"
msgstr ""
-#: order/models.py:667 part/templates/part/prices.html:166 stock/models.py:537
+#: order/models.py:765 part/templates/part/prices.html:166 stock/models.py:545
#: stock/templates/stock/item_base.html:331 templates/js/stock.js:704
msgid "Purchase Price"
msgstr ""
-#: order/models.py:668
+#: order/models.py:766
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:676
+#: order/models.py:774
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:718 part/templates/part/part_pricing.html:97
+#: order/models.py:820 part/templates/part/part_pricing.html:97
#: part/templates/part/prices.html:103 part/templates/part/prices.html:278
msgid "Sale Price"
msgstr ""
-#: order/models.py:719
+#: order/models.py:821
msgid "Unit sale price"
msgstr ""
-#: order/models.py:794 order/models.py:796
+#: order/models.py:900 order/models.py:902
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:800
+#: order/models.py:906
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:802
+#: order/models.py:908
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:805
+#: order/models.py:911
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:815
+#: order/models.py:921
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:820
+#: order/models.py:926
msgid "Line"
msgstr ""
-#: order/models.py:831
+#: order/models.py:937
msgid "Item"
msgstr ""
-#: order/models.py:832
+#: order/models.py:938
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:835
+#: order/models.py:941
msgid "Enter stock allocation quantity"
msgstr ""
+#: order/serializers.py:139
+msgid "Purchase price currency"
+msgstr ""
+
+#: order/serializers.py:359
+msgid "Sale price currency"
+msgstr ""
+
#: order/templates/order/delete_attachment.html:5
#: stock/templates/stock/attachment_delete.html:5
#: templates/attachment_delete.html:5
@@ -3086,16 +3060,22 @@ msgstr ""
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:180
-#: order/templates/order/purchase_order_detail.html:100
+#: order/templates/order/order_base.html:188
+msgid "Edit Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_base.html:199
+#: order/templates/order/purchase_order_detail.html:127
#: part/templates/part/category.html:217 part/templates/part/category.html:259
+#: part/templates/part/part_base.html:415
#: stock/templates/stock/location.html:191 templates/js/stock.js:750
#: templates/js/stock.js:1338
msgid "New Location"
msgstr ""
-#: order/templates/order/order_base.html:181
-#: order/templates/order/purchase_order_detail.html:101
+#: order/templates/order/order_base.html:200
+#: order/templates/order/purchase_order_detail.html:128
+#: part/templates/part/part_base.html:416
#: stock/templates/stock/location.html:42
msgid "Create new stock location"
msgstr ""
@@ -3248,7 +3228,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/order.js:205 templates/js/order.js:308
+#: templates/js/order.js:267 templates/js/order.js:375
msgid "Items"
msgstr ""
@@ -3272,7 +3252,6 @@ msgid "Purchase Order Attachments"
msgstr ""
#: order/templates/order/po_lineitem_delete.html:5
-#: order/templates/order/so_lineitem_delete.html:5
msgid "Are you sure you wish to delete this line item?"
msgstr ""
@@ -3290,41 +3269,52 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1327
-#: order/views.py:1410
+#: order/templates/order/purchase_order_detail.html:64
+#: order/templates/order/sales_order_detail.html:22
+#: order/templates/order/sales_order_detail.html:56
msgid "Add Line Item"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:114
+#: order/templates/order/purchase_order_detail.html:100
+#: order/templates/order/sales_order_detail.html:398
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:110
+#: order/templates/order/sales_order_detail.html:408
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:141
msgid "No line items found"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:142
-#: order/templates/order/sales_order_detail.html:223
+#: order/templates/order/purchase_order_detail.html:169
+#: order/templates/order/sales_order_detail.html:233
msgid "Total"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:191
-#: order/templates/order/sales_order_detail.html:246 templates/js/part.js:807
+#: order/templates/order/purchase_order_detail.html:218
+#: order/templates/order/sales_order_detail.html:256 templates/js/part.js:807
#: templates/js/part.js:996
msgid "Unit Price"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:198
-#: order/templates/order/sales_order_detail.html:253
+#: order/templates/order/purchase_order_detail.html:225
+#: order/templates/order/sales_order_detail.html:263
msgid "Total price"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:255
-#: order/templates/order/sales_order_detail.html:359
+#: order/templates/order/purchase_order_detail.html:282
+#: order/templates/order/sales_order_detail.html:369
msgid "Edit line item"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:256
+#: order/templates/order/purchase_order_detail.html:283
msgid "Delete line item"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:261
+#: order/templates/order/purchase_order_detail.html:288
msgid "Receive line item"
msgstr ""
@@ -3339,7 +3329,7 @@ msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
#: order/templates/order/receive_parts.html:14 part/api.py:45
-#: part/models.py:322 part/templates/part/cat_link.html:7
+#: part/models.py:326 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:157
#: part/templates/part/category_navbar.html:25
#: part/templates/part/category_navbar.html:32
@@ -3347,7 +3337,7 @@ msgstr ""
#: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:666
#: templates/navbar.html:23 templates/stats.html:80 templates/stats.html:89
-#: users/models.py:40
+#: users/models.py:41
msgid "Parts"
msgstr ""
@@ -3389,10 +3379,14 @@ msgstr ""
msgid "Sales Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:100 templates/js/order.js:275
+#: order/templates/order/sales_order_base.html:100 templates/js/order.js:342
msgid "Customer Reference"
msgstr ""
+#: order/templates/order/sales_order_base.html:177
+msgid "Edit Sales Order"
+msgstr ""
+
#: order/templates/order/sales_order_cancel.html:8
#: order/templates/order/sales_order_ship.html:9
#: part/templates/part/bom_duplicate.html:12
@@ -3408,69 +3402,69 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:95 templates/js/bom.js:358
+#: order/templates/order/sales_order_detail.html:105 templates/js/bom.js:358
#: templates/js/build.js:725 templates/js/build.js:1142
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:102 templates/js/build.js:611
+#: order/templates/order/sales_order_detail.html:112 templates/js/build.js:611
#: templates/js/build.js:947
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:103 templates/js/build.js:613
+#: order/templates/order/sales_order_detail.html:113 templates/js/build.js:613
#: templates/js/build.js:948
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:186
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:216
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:274 templates/js/build.js:676
+#: order/templates/order/sales_order_detail.html:284 templates/js/build.js:676
#: templates/js/build.js:943
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:276
+#: order/templates/order/sales_order_detail.html:286
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:313
+#: order/templates/order/sales_order_detail.html:323
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:343
+#: order/templates/order/sales_order_detail.html:353
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:346 templates/js/build.js:739
+#: order/templates/order/sales_order_detail.html:356 templates/js/build.js:739
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:349
+#: order/templates/order/sales_order_detail.html:359
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:353 templates/js/build.js:732
+#: order/templates/order/sales_order_detail.html:363 templates/js/build.js:732
#: templates/js/build.js:1150
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:356
-#: order/templates/order/sales_order_detail.html:465
+#: order/templates/order/sales_order_detail.html:366
+#: order/templates/order/sales_order_detail.html:485
msgid "Calculate price"
msgstr ""
-#: order/templates/order/sales_order_detail.html:360
+#: order/templates/order/sales_order_detail.html:370
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:471
+#: order/templates/order/sales_order_detail.html:491
msgid "Update Unit Price"
msgstr ""
@@ -3511,194 +3505,154 @@ msgstr ""
msgid "Sales Order Attachments"
msgstr ""
-#: order/views.py:106
-msgid "Add Purchase Order Attachment"
-msgstr ""
-
-#: order/views.py:156
-msgid "Add Sales Order Attachment"
-msgstr ""
-
-#: order/views.py:348
-msgid "Create Sales Order"
-msgstr ""
-
-#: order/views.py:383
-msgid "Edit Purchase Order"
-msgstr ""
-
-#: order/views.py:403
-msgid "Edit Sales Order"
-msgstr ""
-
-#: order/views.py:419
+#: order/views.py:151
msgid "Cancel Order"
msgstr ""
-#: order/views.py:428 order/views.py:454
+#: order/views.py:160 order/views.py:186
msgid "Confirm order cancellation"
msgstr ""
-#: order/views.py:431 order/views.py:457
+#: order/views.py:163 order/views.py:189
msgid "Order cannot be cancelled"
msgstr ""
-#: order/views.py:445
+#: order/views.py:177
msgid "Cancel sales order"
msgstr ""
-#: order/views.py:471
+#: order/views.py:203
msgid "Issue Order"
msgstr ""
-#: order/views.py:480
+#: order/views.py:212
msgid "Confirm order placement"
msgstr ""
-#: order/views.py:490
+#: order/views.py:222
msgid "Purchase order issued"
msgstr ""
-#: order/views.py:501
+#: order/views.py:233
msgid "Complete Order"
msgstr ""
-#: order/views.py:517
+#: order/views.py:249
msgid "Confirm order completion"
msgstr ""
-#: order/views.py:528
+#: order/views.py:260
msgid "Purchase order completed"
msgstr ""
-#: order/views.py:538
+#: order/views.py:270
msgid "Ship Order"
msgstr ""
-#: order/views.py:554
+#: order/views.py:286
msgid "Confirm order shipment"
msgstr ""
-#: order/views.py:560
+#: order/views.py:292
msgid "Could not ship order"
msgstr ""
-#: order/views.py:607
+#: order/views.py:339
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:804
+#: order/views.py:536
msgid "Receive Parts"
msgstr ""
-#: order/views.py:874
+#: order/views.py:606
msgid "Items received"
msgstr ""
-#: order/views.py:888
+#: order/views.py:620
msgid "No destination set"
msgstr ""
-#: order/views.py:933
+#: order/views.py:665
msgid "Error converting quantity to number"
msgstr ""
-#: order/views.py:939
+#: order/views.py:671
msgid "Receive quantity less than zero"
msgstr ""
-#: order/views.py:945
+#: order/views.py:677
msgid "No lines specified"
msgstr ""
-#: order/views.py:1018
+#: order/views.py:750
msgid "Update prices"
msgstr ""
-#: order/views.py:1276
+#: order/views.py:1008
#, python-brace-format
msgid "Ordered {n} parts"
msgstr ""
-#: order/views.py:1336
-msgid "Supplier part must be specified"
-msgstr ""
-
-#: order/views.py:1342
-msgid "Supplier must match for Part and Order"
-msgstr ""
-
-#: order/views.py:1473 order/views.py:1491
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/views.py:1507 order/views.py:1519
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/views.py:1512 order/views.py:1524
-msgid "Deleted line item"
-msgstr ""
-
-#: order/views.py:1537
+#: order/views.py:1061
msgid "Allocate Serial Numbers"
msgstr ""
-#: order/views.py:1582
+#: order/views.py:1106
#, python-brace-format
msgid "Allocated {n} items"
msgstr ""
-#: order/views.py:1598
+#: order/views.py:1122
msgid "Select line item"
msgstr ""
-#: order/views.py:1629
+#: order/views.py:1153
#, python-brace-format
msgid "No matching item for serial {serial}"
msgstr ""
-#: order/views.py:1639
+#: order/views.py:1163
#, python-brace-format
msgid "{serial} is not in stock"
msgstr ""
-#: order/views.py:1647
+#: order/views.py:1171
#, python-brace-format
msgid "{serial} already allocated to an order"
msgstr ""
-#: order/views.py:1701
+#: order/views.py:1225
msgid "Allocate Stock to Order"
msgstr ""
-#: order/views.py:1775
+#: order/views.py:1299
msgid "Edit Allocation Quantity"
msgstr ""
-#: order/views.py:1790
+#: order/views.py:1314
msgid "Remove allocation"
msgstr ""
-#: order/views.py:1862
+#: order/views.py:1386
msgid "Sales order not found"
msgstr ""
-#: order/views.py:1868
+#: order/views.py:1392
msgid "Price not found"
msgstr ""
-#: order/views.py:1871
+#: order/views.py:1395
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:1876
+#: order/views.py:1400
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:138 part/models.py:72 part/models.py:747
+#: part/bom.py:138 part/models.py:72 part/models.py:756
#: part/templates/part/category.html:75 part/templates/part/detail.html:90
msgid "Default Location"
msgstr ""
@@ -3720,143 +3674,143 @@ msgstr ""
msgid "Error reading BOM file (incorrect row size)"
msgstr ""
-#: part/forms.py:89 stock/forms.py:265
+#: part/forms.py:73 stock/forms.py:232
msgid "File Format"
msgstr ""
-#: part/forms.py:89 stock/forms.py:265
+#: part/forms.py:73 stock/forms.py:232
msgid "Select output file format"
msgstr ""
-#: part/forms.py:91
+#: part/forms.py:75
msgid "Cascading"
msgstr ""
-#: part/forms.py:91
+#: part/forms.py:75
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: part/forms.py:93
+#: part/forms.py:77
msgid "Levels"
msgstr ""
-#: part/forms.py:93
+#: part/forms.py:77
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: part/forms.py:95
+#: part/forms.py:79
msgid "Include Parameter Data"
msgstr ""
-#: part/forms.py:95
+#: part/forms.py:79
msgid "Include part parameters data in exported BOM"
msgstr ""
-#: part/forms.py:97
+#: part/forms.py:81
msgid "Include Stock Data"
msgstr ""
-#: part/forms.py:97
+#: part/forms.py:81
msgid "Include part stock data in exported BOM"
msgstr ""
-#: part/forms.py:99
+#: part/forms.py:83
msgid "Include Manufacturer Data"
msgstr ""
-#: part/forms.py:99
+#: part/forms.py:83
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: part/forms.py:101
+#: part/forms.py:85
msgid "Include Supplier Data"
msgstr ""
-#: part/forms.py:101
+#: part/forms.py:85
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:122 part/models.py:2191
+#: part/forms.py:106 part/models.py:2224
msgid "Parent Part"
msgstr ""
-#: part/forms.py:123 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:107 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:129
+#: part/forms.py:113
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:135
+#: part/forms.py:119
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:153
+#: part/forms.py:137
msgid "validate"
msgstr ""
-#: part/forms.py:153
+#: part/forms.py:137
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:165
+#: part/forms.py:149
msgid "BOM file"
msgstr ""
-#: part/forms.py:165
+#: part/forms.py:149
msgid "Select BOM file to upload"
msgstr ""
-#: part/forms.py:184
+#: part/forms.py:168
msgid "Related Part"
msgstr ""
-#: part/forms.py:203
+#: part/forms.py:175
msgid "Select part category"
msgstr ""
-#: part/forms.py:220
+#: part/forms.py:192
msgid "Duplicate all BOM data for this part"
msgstr ""
-#: part/forms.py:221
+#: part/forms.py:193
msgid "Copy BOM"
msgstr ""
-#: part/forms.py:226
+#: part/forms.py:198
msgid "Duplicate all parameter data for this part"
msgstr ""
-#: part/forms.py:227
+#: part/forms.py:199
msgid "Copy Parameters"
msgstr ""
-#: part/forms.py:232
+#: part/forms.py:204
msgid "Confirm part creation"
msgstr ""
-#: part/forms.py:237
+#: part/forms.py:209
msgid "Include category parameter templates"
msgstr ""
-#: part/forms.py:242
+#: part/forms.py:214
msgid "Include parent categories parameter templates"
msgstr ""
-#: part/forms.py:322
+#: part/forms.py:294
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:326
+#: part/forms.py:298
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:344 part/models.py:2286
+#: part/forms.py:316 part/models.py:2323
msgid "Sub part"
msgstr ""
-#: part/forms.py:373
+#: part/forms.py:345
msgid "Input quantity for price calculation"
msgstr ""
@@ -3872,362 +3826,362 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:82 part/models.py:2237
+#: part/models.py:86 part/models.py:2270
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:83 part/templates/part/category.html:32
+#: part/models.py:87 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
-#: templates/stats.html:84 users/models.py:39
+#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:448 part/models.py:460
+#: part/models.py:457 part/models.py:469
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:557
+#: part/models.py:566
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:561
+#: part/models.py:570
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:566
+#: part/models.py:575
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:645
+#: part/models.py:654
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:670 part/templates/part/detail.html:22
+#: part/models.py:679 part/templates/part/detail.html:22
msgid "Part name"
msgstr ""
-#: part/models.py:677
+#: part/models.py:686
msgid "Is Template"
msgstr ""
-#: part/models.py:678
+#: part/models.py:687
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:689
+#: part/models.py:698
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:690 part/templates/part/detail.html:60
+#: part/models.py:699 part/templates/part/detail.html:60
msgid "Variant Of"
msgstr ""
-#: part/models.py:696
+#: part/models.py:705
msgid "Part description"
msgstr ""
-#: part/models.py:701 part/templates/part/category.html:82
+#: part/models.py:710 part/templates/part/category.html:82
#: part/templates/part/detail.html:67
msgid "Keywords"
msgstr ""
-#: part/models.py:702
+#: part/models.py:711
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:709 part/models.py:2236 part/templates/part/detail.html:73
+#: part/models.py:718 part/models.py:2269 part/templates/part/detail.html:73
#: part/templates/part/set_category.html:15 templates/js/part.js:452
msgid "Category"
msgstr ""
-#: part/models.py:710
+#: part/models.py:719
msgid "Part category"
msgstr ""
-#: part/models.py:715 part/templates/part/detail.html:28
+#: part/models.py:724 part/templates/part/detail.html:28
#: part/templates/part/part_base.html:87 templates/js/part.js:169
#: templates/js/part.js:296
msgid "IPN"
msgstr ""
-#: part/models.py:716
+#: part/models.py:725
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:722
+#: part/models.py:731
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:723 part/templates/part/detail.html:35 report/models.py:199
+#: part/models.py:732 part/templates/part/detail.html:35 report/models.py:199
#: templates/js/part.js:173
msgid "Revision"
msgstr ""
-#: part/models.py:745
+#: part/models.py:754
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:792 part/templates/part/detail.html:97
+#: part/models.py:801 part/templates/part/detail.html:97
msgid "Default Supplier"
msgstr ""
-#: part/models.py:793
+#: part/models.py:802
msgid "Default supplier part"
msgstr ""
-#: part/models.py:800
+#: part/models.py:809
msgid "Default Expiry"
msgstr ""
-#: part/models.py:801
+#: part/models.py:810
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:806 part/templates/part/detail.html:113
+#: part/models.py:815 part/templates/part/detail.html:113
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:807
+#: part/models.py:816
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:814
+#: part/models.py:823
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:820
+#: part/models.py:829
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:835
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:832
+#: part/models.py:841
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:837
+#: part/models.py:846
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:842
+#: part/models.py:851
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:846 part/templates/part/detail.html:227
+#: part/models.py:855 part/templates/part/detail.html:227
#: templates/js/table_filters.js:21 templates/js/table_filters.js:65
#: templates/js/table_filters.js:246 templates/js/table_filters.js:315
msgid "Active"
msgstr ""
-#: part/models.py:847
+#: part/models.py:856
msgid "Is this part active?"
msgstr ""
-#: part/models.py:852
+#: part/models.py:861
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:857
+#: part/models.py:866
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:860
+#: part/models.py:869
msgid "BOM checksum"
msgstr ""
-#: part/models.py:860
+#: part/models.py:869
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:863
+#: part/models.py:872
msgid "BOM checked by"
msgstr ""
-#: part/models.py:865
+#: part/models.py:874
msgid "BOM checked date"
msgstr ""
-#: part/models.py:869
+#: part/models.py:878
msgid "Creation User"
msgstr ""
-#: part/models.py:1608
+#: part/models.py:1617
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2063
+#: part/models.py:2088
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2105
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2100 templates/js/part.js:717 templates/js/stock.js:117
+#: part/models.py:2125 templates/js/part.js:717 templates/js/stock.js:117
msgid "Test Name"
msgstr ""
-#: part/models.py:2101
+#: part/models.py:2126
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2106
+#: part/models.py:2131
msgid "Test Description"
msgstr ""
-#: part/models.py:2107
+#: part/models.py:2132
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2112 templates/js/part.js:726
+#: part/models.py:2137 templates/js/part.js:726
#: templates/js/table_filters.js:232
msgid "Required"
msgstr ""
-#: part/models.py:2113
+#: part/models.py:2138
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2118 templates/js/part.js:734
+#: part/models.py:2143 templates/js/part.js:734
msgid "Requires Value"
msgstr ""
-#: part/models.py:2119
+#: part/models.py:2144
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2124 templates/js/part.js:741
+#: part/models.py:2149 templates/js/part.js:741
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2150
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2158
+#: part/models.py:2187
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2163
+#: part/models.py:2192
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2165
+#: part/models.py:2194
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2193 part/models.py:2242 part/models.py:2243
+#: part/models.py:2226 part/models.py:2275 part/models.py:2276
#: templates/InvenTree/settings/category.html:62
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2195
+#: part/models.py:2228
msgid "Data"
msgstr ""
-#: part/models.py:2195
+#: part/models.py:2228
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2247 templates/InvenTree/settings/category.html:67
+#: part/models.py:2280 templates/InvenTree/settings/category.html:67
msgid "Default Value"
msgstr ""
-#: part/models.py:2248
+#: part/models.py:2281
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2278
+#: part/models.py:2315
msgid "Select parent part"
msgstr ""
-#: part/models.py:2287
+#: part/models.py:2324
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2293
+#: part/models.py:2330
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2295 templates/js/bom.js:216 templates/js/bom.js:278
+#: part/models.py:2332 templates/js/bom.js:216 templates/js/bom.js:278
msgid "Optional"
msgstr ""
-#: part/models.py:2295
+#: part/models.py:2332
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2298
+#: part/models.py:2335
msgid "Overage"
msgstr ""
-#: part/models.py:2299
+#: part/models.py:2336
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2302
+#: part/models.py:2339
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2305
+#: part/models.py:2342
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2307
+#: part/models.py:2344
msgid "Checksum"
msgstr ""
-#: part/models.py:2307
+#: part/models.py:2344
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2311 templates/js/bom.js:295 templates/js/bom.js:302
+#: part/models.py:2348 templates/js/bom.js:295 templates/js/bom.js:302
#: templates/js/table_filters.js:51
msgid "Inherited"
msgstr ""
-#: part/models.py:2312
+#: part/models.py:2349
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2317 templates/js/bom.js:287
+#: part/models.py:2354 templates/js/bom.js:287
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2318
+#: part/models.py:2355
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2394 part/views.py:1892 part/views.py:1944
-#: stock/models.py:290
+#: part/models.py:2431 part/views.py:1736 part/views.py:1788
+#: stock/models.py:298
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2403 part/models.py:2405
+#: part/models.py:2440 part/models.py:2442
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2408
+#: part/models.py:2445
msgid "BOM Item"
msgstr ""
-#: part/models.py:2527
+#: part/models.py:2564
msgid "Part 1"
msgstr ""
-#: part/models.py:2531
+#: part/models.py:2568
msgid "Part 2"
msgstr ""
-#: part/models.py:2531
+#: part/models.py:2568
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2563
+#: part/models.py:2600
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4243,14 +4197,6 @@ msgstr ""
msgid "Part Attachments"
msgstr ""
-#: part/templates/part/bom-delete.html:6
-msgid "Are you sure you want to delete this BOM item?"
-msgstr ""
-
-#: part/templates/part/bom-delete.html:8
-msgid "Deleting this entry will remove the BOM row from the following part"
-msgstr ""
-
#: part/templates/part/bom.html:10 part/templates/part/navbar.html:51
#: part/templates/part/navbar.html:54
msgid "Bill of Materials"
@@ -4299,7 +4245,7 @@ msgstr ""
msgid "Validate Bill of Materials"
msgstr ""
-#: part/templates/part/bom.html:61 part/views.py:2187
+#: part/templates/part/bom.html:61 part/views.py:2031
msgid "Export Bill of Materials"
msgstr ""
@@ -4315,7 +4261,7 @@ msgstr ""
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/bom.html:160 part/views.py:591
+#: part/templates/part/bom.html:160 part/views.py:450
#: templates/js/stock.js:1327
msgid "Create New Part"
msgstr ""
@@ -4397,7 +4343,7 @@ msgstr ""
msgid "All parts"
msgstr ""
-#: part/templates/part/category.html:38 part/views.py:2597
+#: part/templates/part/category.html:38 part/views.py:2441
msgid "Create new part category"
msgstr ""
@@ -4462,6 +4408,7 @@ msgid "Create new location"
msgstr ""
#: part/templates/part/category.html:223 part/templates/part/category.html:253
+#: part/templates/part/part_base.html:378
msgid "New Category"
msgstr ""
@@ -4473,10 +4420,18 @@ msgstr ""
msgid "Create new Part Category"
msgstr ""
-#: part/templates/part/category.html:260 stock/views.py:1391
+#: part/templates/part/category.html:260 stock/views.py:1223
msgid "Create new Stock Location"
msgstr ""
+#: part/templates/part/category.html:279
+msgid "Select parent category"
+msgstr ""
+
+#: part/templates/part/category.html:286 part/views.py:2389
+msgid "Edit Part Category"
+msgstr ""
+
#: part/templates/part/category_delete.html:5
msgid "Are you sure you want to delete category"
msgstr ""
@@ -4522,7 +4477,7 @@ msgstr ""
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/copy_part.html:9 part/views.py:467
+#: part/templates/part/copy_part.html:9 part/views.py:326
msgid "Duplicate Part"
msgstr ""
@@ -4644,7 +4599,7 @@ msgid "Delete manufacturer parts"
msgstr ""
#: part/templates/part/manufacturer.html:53
-#: part/templates/part/supplier.html:57
+#: part/templates/part/supplier.html:56
msgid "Create new manufacturer"
msgstr ""
@@ -4709,8 +4664,8 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:26 templates/js/company.js:156
-#: templates/js/company.js:355 templates/js/part.js:84 templates/js/part.js:161
+#: part/templates/part/part_base.html:26 templates/js/company.js:280
+#: templates/js/company.js:480 templates/js/part.js:84 templates/js/part.js:161
msgid "Inactive"
msgstr ""
@@ -4794,10 +4749,22 @@ msgstr ""
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:282 part/templates/part/prices.html:131
+#: part/templates/part/part_base.html:285 part/templates/part/prices.html:131
msgid "Calculate"
msgstr ""
+#: part/templates/part/part_base.html:379
+msgid "Create New Part Category"
+msgstr ""
+
+#: part/templates/part/part_base.html:387
+msgid "New Parent"
+msgstr ""
+
+#: part/templates/part/part_base.html:435
+msgid "Edit Part"
+msgstr ""
+
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:27
msgid "Supplier Pricing"
msgstr ""
@@ -4850,6 +4817,18 @@ msgstr ""
msgid "Add Test Template"
msgstr ""
+#: part/templates/part/part_tests.html:61
+msgid "Add Test Result Template"
+msgstr ""
+
+#: part/templates/part/part_tests.html:79
+msgid "Edit Test Result Template"
+msgstr ""
+
+#: part/templates/part/part_tests.html:91
+msgid "Delete Test Result Template"
+msgstr ""
+
#: part/templates/part/part_thumb.html:20
msgid "Select from existing images"
msgstr ""
@@ -4938,7 +4917,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:206 part/views.py:3022
+#: part/templates/part/prices.html:206 part/views.py:2859
msgid "Add Internal Price Break"
msgstr ""
@@ -5041,228 +5020,188 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:96
+#: part/views.py:95
msgid "Add Related Part"
msgstr ""
-#: part/views.py:151
+#: part/views.py:150
msgid "Delete Related Part"
msgstr ""
-#: part/views.py:165
-msgid "Add part attachment"
-msgstr ""
-
-#: part/views.py:218 templates/attachment_table.html:32
-msgid "Edit attachment"
-msgstr ""
-
-#: part/views.py:222
-msgid "Part attachment updated"
-msgstr ""
-
-#: part/views.py:237
-msgid "Delete Part Attachment"
-msgstr ""
-
-#: part/views.py:245
-msgid "Deleted part attachment"
-msgstr ""
-
-#: part/views.py:254
-msgid "Create Test Template"
-msgstr ""
-
-#: part/views.py:281
-msgid "Edit Test Template"
-msgstr ""
-
-#: part/views.py:295
-msgid "Delete Test Template"
-msgstr ""
-
-#: part/views.py:302
+#: part/views.py:161
msgid "Set Part Category"
msgstr ""
-#: part/views.py:352
+#: part/views.py:211
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:387
+#: part/views.py:246
msgid "Create Variant"
msgstr ""
-#: part/views.py:472
+#: part/views.py:331
msgid "Copied part"
msgstr ""
-#: part/views.py:526 part/views.py:664
+#: part/views.py:385 part/views.py:523
msgid "Possible matches exist - confirm creation of new part"
msgstr ""
-#: part/views.py:596
+#: part/views.py:455
msgid "Created new part"
msgstr ""
-#: part/views.py:764
+#: part/views.py:623
msgid "Match References"
msgstr ""
-#: part/views.py:1066
+#: part/views.py:925
msgid "None"
msgstr ""
-#: part/views.py:1125
+#: part/views.py:984
msgid "Part QR Code"
msgstr ""
-#: part/views.py:1227
-msgid "Upload Part Image"
-msgstr ""
-
-#: part/views.py:1233 part/views.py:1268
-msgid "Updated part image"
-msgstr ""
-
-#: part/views.py:1242
+#: part/views.py:1086
msgid "Select Part Image"
msgstr ""
-#: part/views.py:1271
+#: part/views.py:1112
+msgid "Updated part image"
+msgstr ""
+
+#: part/views.py:1115
msgid "Part image not found"
msgstr ""
-#: part/views.py:1282
+#: part/views.py:1126
msgid "Edit Part Properties"
msgstr ""
-#: part/views.py:1317
+#: part/views.py:1161
msgid "Duplicate BOM"
msgstr ""
-#: part/views.py:1347
+#: part/views.py:1191
msgid "Confirm duplication of BOM from parent"
msgstr ""
-#: part/views.py:1368
+#: part/views.py:1212
msgid "Validate BOM"
msgstr ""
-#: part/views.py:1389
+#: part/views.py:1233
msgid "Confirm that the BOM is valid"
msgstr ""
-#: part/views.py:1400
+#: part/views.py:1244
msgid "Validated Bill of Materials"
msgstr ""
-#: part/views.py:1534
+#: part/views.py:1378
msgid "No BOM file provided"
msgstr ""
-#: part/views.py:1895
+#: part/views.py:1739
msgid "Enter a valid quantity"
msgstr ""
-#: part/views.py:1920 part/views.py:1923
+#: part/views.py:1764 part/views.py:1767
msgid "Select valid part"
msgstr ""
-#: part/views.py:1929
+#: part/views.py:1773
msgid "Duplicate part selected"
msgstr ""
-#: part/views.py:1967
+#: part/views.py:1811
msgid "Select a part"
msgstr ""
-#: part/views.py:1973
+#: part/views.py:1817
msgid "Selected part creates a circular BOM"
msgstr ""
-#: part/views.py:1977
+#: part/views.py:1821
msgid "Specify quantity"
msgstr ""
-#: part/views.py:2239
+#: part/views.py:2083
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:2246
+#: part/views.py:2090
msgid "Part was deleted"
msgstr ""
-#: part/views.py:2255
+#: part/views.py:2099
msgid "Part Pricing"
msgstr ""
-#: part/views.py:2396
+#: part/views.py:2240
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:2406
+#: part/views.py:2250
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:2413
+#: part/views.py:2257
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:2421
+#: part/views.py:2265
msgid "Create Part Parameter"
msgstr ""
-#: part/views.py:2471
+#: part/views.py:2315
msgid "Edit Part Parameter"
msgstr ""
-#: part/views.py:2485
+#: part/views.py:2329
msgid "Delete Part Parameter"
msgstr ""
-#: part/views.py:2545
-msgid "Edit Part Category"
-msgstr ""
-
-#: part/views.py:2583
+#: part/views.py:2427
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:2589
+#: part/views.py:2433
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:2641
+#: part/views.py:2485
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:2742
+#: part/views.py:2586
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:2798
+#: part/views.py:2642
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:2817
+#: part/views.py:2661
msgid "Create BOM Item"
msgstr ""
-#: part/views.py:2887
+#: part/views.py:2731
msgid "Edit BOM item"
msgstr ""
-#: part/views.py:2943
-msgid "Confim BOM item deletion"
+#: part/views.py:2792
+msgid "Added new price break"
msgstr ""
-#: part/views.py:3031
+#: part/views.py:2868
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:3039
+#: part/views.py:2876
msgid "Delete Internal Price Break"
msgstr ""
@@ -5368,17 +5307,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1739
+#: stock/models.py:1759
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1745
+#: stock/models.py:1765
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/order.js:195 templates/js/stock.js:1026
+#: templates/js/order.js:257 templates/js/stock.js:1026
msgid "Date"
msgstr ""
@@ -5390,287 +5329,287 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:212
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:281
+#: stock/api.py:280
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:114 stock/forms.py:418 stock/models.py:505
+#: stock/forms.py:81 stock/forms.py:385 stock/models.py:513
#: stock/templates/stock/item_base.html:381 templates/js/stock.js:658
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:115 stock/forms.py:419
+#: stock/forms.py:82 stock/forms.py:386
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:118
+#: stock/forms.py:85
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:169
+#: stock/forms.py:136
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:171
+#: stock/forms.py:138
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:171
+#: stock/forms.py:138
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:173 stock/forms.py:349
+#: stock/forms.py:140 stock/forms.py:316
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:203 stock/forms.py:259
+#: stock/forms.py:170 stock/forms.py:226
msgid "Select test report template"
msgstr ""
-#: stock/forms.py:267 templates/js/table_filters.js:75
+#: stock/forms.py:234 templates/js/table_filters.js:75
#: templates/js/table_filters.js:138
msgid "Include sublocations"
msgstr ""
-#: stock/forms.py:267
+#: stock/forms.py:234
msgid "Include stock items in sub locations"
msgstr ""
-#: stock/forms.py:302
+#: stock/forms.py:269
msgid "Stock item to install"
msgstr ""
-#: stock/forms.py:309
+#: stock/forms.py:276
msgid "Stock quantity to assign"
msgstr ""
-#: stock/forms.py:337
+#: stock/forms.py:304
msgid "Must not exceed available quantity"
msgstr ""
-#: stock/forms.py:347
+#: stock/forms.py:314
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:351
+#: stock/forms.py:318
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:351
+#: stock/forms.py:318
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/forms.py:375
+#: stock/forms.py:342
msgid "Destination stock location"
msgstr ""
-#: stock/forms.py:377
+#: stock/forms.py:344
msgid "Add note (required)"
msgstr ""
-#: stock/forms.py:381 stock/views.py:852 stock/views.py:1051
+#: stock/forms.py:348 stock/views.py:705 stock/views.py:904
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/forms.py:381
+#: stock/forms.py:348
msgid "Confirm movement of stock items"
msgstr ""
-#: stock/forms.py:383
+#: stock/forms.py:350
msgid "Set Default Location"
msgstr ""
-#: stock/forms.py:383
+#: stock/forms.py:350
msgid "Set the destination as the default location for selected parts"
msgstr ""
-#: stock/models.py:52 stock/models.py:542
+#: stock/models.py:56 stock/models.py:550
msgid "Owner"
msgstr ""
-#: stock/models.py:53 stock/models.py:543
+#: stock/models.py:57 stock/models.py:551
msgid "Select Owner"
msgstr ""
-#: stock/models.py:271
+#: stock/models.py:279
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:307
+#: stock/models.py:315
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:317 stock/models.py:326
+#: stock/models.py:325 stock/models.py:334
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:318
+#: stock/models.py:326
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:340
+#: stock/models.py:348
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:346
+#: stock/models.py:354
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:353
+#: stock/models.py:361
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:395
+#: stock/models.py:403
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:404
+#: stock/models.py:412
msgid "Base part"
msgstr ""
-#: stock/models.py:413
+#: stock/models.py:421
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:418 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:426 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:421
+#: stock/models.py:429
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:428
+#: stock/models.py:436
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:433 stock/templates/stock/item_base.html:270
+#: stock/models.py:441 stock/templates/stock/item_base.html:270
msgid "Installed In"
msgstr ""
-#: stock/models.py:436
+#: stock/models.py:444
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:452
+#: stock/models.py:460
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:464
+#: stock/models.py:472
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:468
+#: stock/models.py:476
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:485
msgid "Source Build"
msgstr ""
-#: stock/models.py:479
+#: stock/models.py:487
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:490
+#: stock/models.py:498
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:493
+#: stock/models.py:501
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:499
+#: stock/models.py:507
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:506
+#: stock/models.py:514
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:519
+#: stock/models.py:527
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:519
+#: stock/models.py:527
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:529 stock/templates/stock/item_notes.html:13
+#: stock/models.py:537 stock/templates/stock/item_notes.html:13
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:546
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1006
+#: stock/models.py:1014
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1012
+#: stock/models.py:1020
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1018
+#: stock/models.py:1026
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1021
+#: stock/models.py:1029
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1024
+#: stock/models.py:1032
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1031
+#: stock/models.py:1039
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1189
+#: stock/models.py:1197
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1679
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1736
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1722
+#: stock/models.py:1742
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1740
+#: stock/models.py:1760
msgid "Test name"
msgstr ""
-#: stock/models.py:1746 templates/js/table_filters.js:222
+#: stock/models.py:1766 templates/js/table_filters.js:222
msgid "Test result"
msgstr ""
-#: stock/models.py:1752
+#: stock/models.py:1772
msgid "Test output value"
msgstr ""
-#: stock/models.py:1759
+#: stock/models.py:1779
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1765
+#: stock/models.py:1785
msgid "Test notes"
msgstr ""
@@ -5860,6 +5799,10 @@ msgstr ""
msgid "No stocktake performed"
msgstr ""
+#: stock/templates/stock/item_base.html:499
+msgid "Edit Stock Status"
+msgstr ""
+
#: stock/templates/stock/item_childs.html:12
msgid "Child Stock Items"
msgstr ""
@@ -5919,6 +5862,19 @@ msgstr ""
msgid "Add Test Data"
msgstr ""
+#: stock/templates/stock/item_tests.html:86
+#: stock/templates/stock/item_tests.html:111
+msgid "Add Test Result"
+msgstr ""
+
+#: stock/templates/stock/item_tests.html:131
+msgid "Edit Test Result"
+msgstr ""
+
+#: stock/templates/stock/item_tests.html:145
+msgid "Delete Test Result"
+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 ""
@@ -5967,7 +5923,7 @@ msgid "Stock Details"
msgstr ""
#: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:97 users/models.py:41
+#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
@@ -6007,7 +5963,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1364
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1196
msgid "Convert Stock Item"
msgstr ""
@@ -6040,8 +5996,8 @@ msgstr ""
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:230 stock/views.py:1343 stock/views.py:1465
-#: stock/views.py:1830
+#: stock/views.py:230 stock/views.py:1175 stock/views.py:1297
+#: stock/views.py:1662
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6049,205 +6005,177 @@ msgstr ""
msgid "Stock Location QR code"
msgstr ""
-#: stock/views.py:265
-msgid "Add Stock Item Attachment"
-msgstr ""
-
-#: stock/views.py:311
-msgid "Edit Stock Item Attachment"
-msgstr ""
-
-#: stock/views.py:327
-msgid "Delete Stock Item Attachment"
-msgstr ""
-
-#: stock/views.py:343
+#: stock/views.py:264
msgid "Assign to Customer"
msgstr ""
-#: stock/views.py:352
+#: stock/views.py:273
msgid "Customer must be specified"
msgstr ""
-#: stock/views.py:376
+#: stock/views.py:297
msgid "Return to Stock"
msgstr ""
-#: stock/views.py:385
+#: stock/views.py:306
msgid "Specify a valid location"
msgstr ""
-#: stock/views.py:396
+#: stock/views.py:317
msgid "Stock item returned from customer"
msgstr ""
-#: stock/views.py:407
+#: stock/views.py:328
msgid "Delete All Test Data"
msgstr ""
-#: stock/views.py:424
+#: stock/views.py:345
msgid "Confirm test data deletion"
msgstr ""
-#: stock/views.py:444
-msgid "Add Test Result"
-msgstr ""
-
-#: stock/views.py:484
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/views.py:501
-msgid "Delete Test Result"
-msgstr ""
-
-#: stock/views.py:509
+#: stock/views.py:362
msgid "Stock Export Options"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:483
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:656
+#: stock/views.py:509
msgid "Install Stock Item"
msgstr ""
-#: stock/views.py:755
+#: stock/views.py:608
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:863
+#: stock/views.py:716
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:888
+#: stock/views.py:741
msgid "Adjust Stock"
msgstr ""
-#: stock/views.py:998
+#: stock/views.py:851
msgid "Move Stock Items"
msgstr ""
-#: stock/views.py:998
+#: stock/views.py:851
msgid "Move"
msgstr ""
-#: stock/views.py:999
+#: stock/views.py:852
msgid "Count Stock Items"
msgstr ""
-#: stock/views.py:999
+#: stock/views.py:852
msgid "Count"
msgstr ""
-#: stock/views.py:1000
+#: stock/views.py:853
msgid "Remove From Stock"
msgstr ""
-#: stock/views.py:1000
+#: stock/views.py:853
msgid "Take"
msgstr ""
-#: stock/views.py:1001
+#: stock/views.py:854
msgid "Add Stock Items"
msgstr ""
-#: stock/views.py:1001 users/models.py:187
+#: stock/views.py:854 users/models.py:188
msgid "Add"
msgstr ""
-#: stock/views.py:1002
+#: stock/views.py:855
msgid "Delete Stock Items"
msgstr ""
-#: stock/views.py:1031
+#: stock/views.py:884
msgid "Must enter integer value"
msgstr ""
-#: stock/views.py:1036
+#: stock/views.py:889
msgid "Quantity must be positive"
msgstr ""
-#: stock/views.py:1043
+#: stock/views.py:896
#, python-brace-format
msgid "Quantity must not exceed {x}"
msgstr ""
-#: stock/views.py:1107
+#: stock/views.py:960
msgid "No action performed"
msgstr ""
-#: stock/views.py:1122
+#: stock/views.py:975
#, python-brace-format
msgid "Added stock to {n} items"
msgstr ""
-#: stock/views.py:1137
+#: stock/views.py:990
#, python-brace-format
msgid "Removed stock from {n} items"
msgstr ""
-#: stock/views.py:1150
+#: stock/views.py:1003
#, python-brace-format
msgid "Counted stock for {n} items"
msgstr ""
-#: stock/views.py:1190
+#: stock/views.py:1043
msgid "No items were moved"
msgstr ""
-#: stock/views.py:1193
+#: stock/views.py:1046
#, python-brace-format
msgid "Moved {n} items to {dest}"
msgstr ""
-#: stock/views.py:1212
+#: stock/views.py:1065
#, python-brace-format
msgid "Deleted {n} stock items"
msgstr ""
-#: stock/views.py:1222
-msgid "Edit Stock Item Status"
-msgstr ""
-
-#: stock/views.py:1245
+#: stock/views.py:1077
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:1482
+#: stock/views.py:1314
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1575 templates/js/build.js:327
+#: stock/views.py:1407 templates/js/build.js:327
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1717
+#: stock/views.py:1549
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1799
+#: stock/views.py:1631
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1899
+#: stock/views.py:1731
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1912
+#: stock/views.py:1744
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1923
+#: stock/views.py:1755
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1930
+#: stock/views.py:1762
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1939
+#: stock/views.py:1771
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6604,24 +6532,12 @@ msgstr ""
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/modals.js:568
-#: templates/js/modals.js:861 templates/modals.html:29 templates/modals.html:54
-#: templates/modals.html:97
+#: templates/about.html:100 templates/js/modals.js:34
+#: templates/js/modals.js:677 templates/js/modals.js:970
+#: templates/modals.html:29 templates/modals.html:54 templates/modals.html:97
msgid "Close"
msgstr ""
-#: templates/attachment_table.html:6
-msgid "Add Attachment"
-msgstr ""
-
-#: templates/attachment_table.html:17
-msgid "Uploaded"
-msgstr ""
-
-#: templates/attachment_table.html:35
-msgid "Delete attachment"
-msgstr ""
-
#: templates/image_download.html:8
msgid "Specify URL for downloading image"
msgstr ""
@@ -6638,6 +6554,22 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
+#: templates/js/attachment.js:16
+msgid "No attachments found"
+msgstr ""
+
+#: templates/js/attachment.js:56
+msgid "Upload Date"
+msgstr ""
+
+#: templates/js/attachment.js:69
+msgid "Edit attachment"
+msgstr ""
+
+#: templates/js/attachment.js:76
+msgid "Delete attachment"
+msgstr ""
+
#: templates/js/barcode.js:8
msgid "Scan barcode data here using wedge scanner"
msgstr ""
@@ -6666,7 +6598,7 @@ msgstr ""
msgid "Unknown response from server"
msgstr ""
-#: templates/js/barcode.js:119 templates/js/modals.js:921
+#: templates/js/barcode.js:119 templates/js/modals.js:1030
msgid "Invalid server response"
msgstr ""
@@ -6766,7 +6698,7 @@ msgstr ""
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/bom.js:372
+#: templates/js/bom.js:372 templates/js/bom.js:519
msgid "Delete BOM Item"
msgstr ""
@@ -6794,7 +6726,7 @@ msgstr ""
msgid "No build order allocations found"
msgstr ""
-#: templates/js/build.js:222 templates/js/order.js:382
+#: templates/js/build.js:222 templates/js/order.js:449
msgid "Location not specified"
msgstr ""
@@ -6832,45 +6764,69 @@ msgstr ""
msgid "No parts allocated for"
msgstr ""
-#: templates/js/company.js:74
+#: templates/js/company.js:45
+msgid "Edit Company"
+msgstr ""
+
+#: templates/js/company.js:66
+msgid "Add new Company"
+msgstr ""
+
+#: templates/js/company.js:143
msgid "Parts Supplied"
msgstr ""
-#: templates/js/company.js:83
+#: templates/js/company.js:152
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/company.js:96
+#: templates/js/company.js:165
msgid "No company information found"
msgstr ""
-#: templates/js/company.js:129
+#: templates/js/company.js:183
+msgid "The following manufacturer parts will be deleted"
+msgstr ""
+
+#: templates/js/company.js:200
+msgid "Delete Manufacturer Parts"
+msgstr ""
+
+#: templates/js/company.js:253
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/company.js:148 templates/js/company.js:347
+#: templates/js/company.js:272 templates/js/company.js:472
#: templates/js/part.js:68 templates/js/part.js:153
msgid "Template part"
msgstr ""
-#: templates/js/company.js:152 templates/js/company.js:351
+#: templates/js/company.js:276 templates/js/company.js:476
#: templates/js/part.js:72 templates/js/part.js:157
msgid "Assembled part"
msgstr ""
-#: templates/js/company.js:226
+#: templates/js/company.js:350
msgid "No parameters found"
msgstr ""
-#: templates/js/company.js:262
+#: templates/js/company.js:386
msgid "Edit parameter"
msgstr ""
-#: templates/js/company.js:263
+#: templates/js/company.js:387
msgid "Delete parameter"
msgstr ""
-#: templates/js/company.js:328
+#: templates/js/company.js:406
+msgid "Edit Parameter"
+msgstr ""
+
+#: templates/js/company.js:417
+msgid "Delete Parameter"
+msgstr ""
+
+#: templates/js/company.js:453
msgid "No supplier parts found"
msgstr ""
@@ -6898,6 +6854,83 @@ msgstr ""
msgid "Create filter"
msgstr ""
+#: templates/js/forms.js:278 templates/js/forms.js:291
+#: templates/js/forms.js:303 templates/js/forms.js:315
+msgid "Action Prohibited"
+msgstr ""
+
+#: templates/js/forms.js:279
+msgid "Create operation not allowed"
+msgstr ""
+
+#: templates/js/forms.js:292
+msgid "Update operation not allowed"
+msgstr ""
+
+#: templates/js/forms.js:304
+msgid "Delete operation not allowed"
+msgstr ""
+
+#: templates/js/forms.js:316
+msgid "View operation not allowed"
+msgstr ""
+
+#: templates/js/forms.js:583 templates/js/modals.js:1040
+msgid "No Response"
+msgstr ""
+
+#: templates/js/forms.js:584 templates/js/modals.js:1041
+msgid "No response from the InvenTree server"
+msgstr ""
+
+#: templates/js/forms.js:590 templates/js/modals.js:1050
+msgid "Error 401: Not Authenticated"
+msgstr ""
+
+#: templates/js/forms.js:591 templates/js/modals.js:1051
+msgid "Authentication credentials not supplied"
+msgstr ""
+
+#: templates/js/forms.js:597 templates/js/modals.js:1055
+msgid "Error 403: Permission Denied"
+msgstr ""
+
+#: templates/js/forms.js:598 templates/js/modals.js:1056
+msgid "You do not have the required permissions to access this function"
+msgstr ""
+
+#: templates/js/forms.js:604 templates/js/modals.js:1060
+msgid "Error 404: Resource Not Found"
+msgstr ""
+
+#: templates/js/forms.js:605 templates/js/modals.js:1061
+msgid "The requested resource could not be located on the server"
+msgstr ""
+
+#: templates/js/forms.js:611 templates/js/modals.js:1065
+msgid "Error 408: Timeout"
+msgstr ""
+
+#: templates/js/forms.js:612 templates/js/modals.js:1066
+msgid "Connection timeout while requesting data from server"
+msgstr ""
+
+#: templates/js/forms.js:618 templates/js/modals.js:1069
+msgid "Error requesting form data"
+msgstr ""
+
+#: templates/js/forms.js:788 templates/modals.html:21 templates/modals.html:47
+msgid "Form errors exist"
+msgstr ""
+
+#: templates/js/forms.js:1161
+msgid "Searching"
+msgstr ""
+
+#: templates/js/forms.js:1301
+msgid "Clear input"
+msgstr ""
+
#: templates/js/label.js:10 templates/js/report.js:98
msgid "Select Stock Items"
msgstr ""
@@ -6938,112 +6971,102 @@ msgstr ""
msgid "Select Label Template"
msgstr ""
-#: templates/js/modals.js:265
-msgid "Waiting for server..."
-msgstr ""
-
-#: templates/js/modals.js:424
-msgid "Show Error Information"
-msgstr ""
-
-#: templates/js/modals.js:491 templates/modals.html:76
-msgid "Accept"
-msgstr ""
-
-#: templates/js/modals.js:492 templates/modals.html:75
+#: templates/js/modals.js:59 templates/js/modals.js:105
+#: templates/js/modals.js:601 templates/modals.html:75
msgid "Cancel"
msgstr ""
-#: templates/js/modals.js:556
-msgid "Loading Data"
-msgstr ""
-
-#: templates/js/modals.js:567 templates/js/modals.js:860
+#: templates/js/modals.js:60 templates/js/modals.js:104
+#: templates/js/modals.js:676 templates/js/modals.js:969
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/modals.js:811
+#: templates/js/modals.js:103
+msgid "Form Title"
+msgstr ""
+
+#: templates/js/modals.js:374
+msgid "Waiting for server..."
+msgstr ""
+
+#: templates/js/modals.js:533
+msgid "Show Error Information"
+msgstr ""
+
+#: templates/js/modals.js:600 templates/modals.html:76
+msgid "Accept"
+msgstr ""
+
+#: templates/js/modals.js:665
+msgid "Loading Data"
+msgstr ""
+
+#: templates/js/modals.js:920
msgid "Invalid response from server"
msgstr ""
-#: templates/js/modals.js:811
+#: templates/js/modals.js:920
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/modals.js:824
+#: templates/js/modals.js:933
msgid "Error posting form data"
msgstr ""
-#: templates/js/modals.js:921
+#: templates/js/modals.js:1030
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/modals.js:931
-msgid "No Response"
-msgstr ""
-
-#: templates/js/modals.js:932
-msgid "No response from the InvenTree server"
-msgstr ""
-
-#: templates/js/modals.js:936
+#: templates/js/modals.js:1045
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/modals.js:937
+#: templates/js/modals.js:1046
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/modals.js:941
-msgid "Error 401: Not Authenticated"
+#: templates/js/model_renderers.js:21
+msgid "Company ID"
msgstr ""
-#: templates/js/modals.js:942
-msgid "Authentication credentials not supplied"
+#: templates/js/model_renderers.js:63
+msgid "Location ID"
msgstr ""
-#: templates/js/modals.js:946
-msgid "Error 403: Permission Denied"
+#: templates/js/model_renderers.js:90
+msgid "Part ID"
msgstr ""
-#: templates/js/modals.js:947
-msgid "You do not have the required permissions to access this function"
+#: templates/js/model_renderers.js:126
+msgid "Category ID"
msgstr ""
-#: templates/js/modals.js:951
-msgid "Error 404: Resource Not Found"
+#: templates/js/model_renderers.js:150
+msgid "Supplier Part ID"
msgstr ""
-#: templates/js/modals.js:952
-msgid "The requested resource could not be located on the server"
+#: templates/js/order.js:31
+msgid "Create Sales Order"
msgstr ""
-#: templates/js/modals.js:956
-msgid "Error 408: Timeout"
-msgstr ""
-
-#: templates/js/modals.js:957
-msgid "Connection timeout while requesting data from server"
-msgstr ""
-
-#: templates/js/modals.js:960
-msgid "Error requesting form data"
-msgstr ""
-
-#: templates/js/order.js:138
+#: templates/js/order.js:200
msgid "No purchase orders found"
msgstr ""
-#: templates/js/order.js:162 templates/js/order.js:257
+#: templates/js/order.js:224 templates/js/order.js:319
msgid "Order is overdue"
msgstr ""
-#: templates/js/order.js:234
+#: templates/js/order.js:296
msgid "No sales orders found"
msgstr ""
-#: templates/js/order.js:343
+#: templates/js/order.js:333
+msgid "Invalid Customer"
+msgstr ""
+
+#: templates/js/order.js:410
msgid "No sales order allocations found"
msgstr ""
@@ -7595,10 +7618,6 @@ msgstr ""
msgid "All"
msgstr ""
-#: templates/modals.html:21 templates/modals.html:47
-msgid "Form errors exist"
-msgstr ""
-
#: templates/navbar.html:13
msgid "Toggle navigation"
msgstr ""
@@ -7615,7 +7634,7 @@ msgstr ""
msgid "Scan Barcode"
msgstr ""
-#: templates/navbar.html:77 users/models.py:38
+#: templates/navbar.html:77 users/models.py:39
msgid "Admin"
msgstr ""
@@ -7835,35 +7854,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:174
+#: users/models.py:175
msgid "Permission set"
msgstr ""
-#: users/models.py:182
+#: users/models.py:183
msgid "Group"
msgstr ""
-#: users/models.py:185
+#: users/models.py:186
msgid "View"
msgstr ""
-#: users/models.py:185
+#: users/models.py:186
msgid "Permission to view items"
msgstr ""
-#: users/models.py:187
+#: users/models.py:188
msgid "Permission to add items"
msgstr ""
-#: users/models.py:189
+#: users/models.py:190
msgid "Change"
msgstr ""
-#: users/models.py:189
+#: users/models.py:190
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:191
+#: users/models.py:192
msgid "Permission to delete items"
msgstr ""