Merge pull request #1088 from SchrodingersGat/tweaks

Tweaks
This commit is contained in:
Oliver 2020-10-29 15:16:49 +11:00 committed by GitHub
commit a148cfe593
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 755 additions and 518 deletions

View File

@ -78,7 +78,15 @@ function getImageUrlFromTransfer(transfer) {
return url; return url;
} }
function makeIconButton(icon, cls, pk, title) { function makeIconBadge(icon, title) {
// Construct an 'icon badge' which floats to the right of an object
var html = `<span class='fas ${icon} label-right' title='${title}'></span>`;
return html;
}
function makeIconButton(icon, cls, pk, title, options={}) {
// Construct an 'icon button' using the fontawesome set // Construct an 'icon button' using the fontawesome set
var classes = `btn btn-default btn-glyph ${cls}`; var classes = `btn btn-default btn-glyph ${cls}`;
@ -87,14 +95,20 @@ function makeIconButton(icon, cls, pk, title) {
var html = ''; var html = '';
html += `<button pk='${pk}' id='${id}' class='${classes}' title='${title}'>`; var extraProps = '';
if (options.disabled) {
extraProps += "disabled='true' ";
}
html += `<button pk='${pk}' id='${id}' class='${classes}' title='${title}' ${extraProps}>`;
html += `<span class='fas ${icon}'></span>`; html += `<span class='fas ${icon}'></span>`;
html += `</button>`; html += `</button>`;
return html; return html;
} }
function makeProgressBar(value, maximum, opts) { function makeProgressBar(value, maximum, opts={}) {
/* /*
* Render a progessbar! * Render a progessbar!
* *

View File

@ -467,6 +467,9 @@ function openModal(options) {
var modal = options.modal || '#modal-form'; var modal = options.modal || '#modal-form';
// Ensure that the 'warning' div is hidden
$(modal).find('#form-validation-warning').css('display', 'none');
$(modal).on('shown.bs.modal', function() { $(modal).on('shown.bs.modal', function() {
$(modal + ' .modal-form-content').scrollTop(0); $(modal + ' .modal-form-content').scrollTop(0);
if (options.focus) { if (options.focus) {

View File

@ -131,6 +131,13 @@ class SupplierPartList(generics.ListCreateAPIView):
if part is not None: if part is not None:
queryset = queryset.filter(part=part) queryset = queryset.filter(part=part)
# Filter by 'active' status of the part?
active = params.get('active', None)
if active is not None:
active = str2bool(active)
queryset = queryset.filter(part__active=active)
return queryset return queryset
def get_serializer(self, *args, **kwargs): def get_serializer(self, *args, **kwargs):

View File

@ -34,6 +34,9 @@
</div> </div>
</div> </div>
</div> </div>
<div class='filter-list' id='filter-list-supplier-part'>
<!-- Empty div (will be filled out with available BOM filters) -->
</div>
</div> </div>
</div> </div>
{% endif %} {% endif %}

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-28 11:37+0000\n" "POT-Creation-Date: 2020-10-29 02:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -91,7 +91,7 @@ msgid "User"
msgstr "" msgstr ""
#: InvenTree/models.py:106 part/templates/part/params.html:24 #: InvenTree/models.py:106 part/templates/part/params.html:24
#: templates/js/part.js:81 #: templates/js/part.js:90
msgid "Name" msgid "Name"
msgstr "" msgstr ""
@ -116,7 +116,7 @@ msgid "Polish"
msgstr "" msgstr ""
#: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135
#: InvenTree/status_codes.py:222 templates/js/table_filters.js:159 #: InvenTree/status_codes.py:222 templates/js/table_filters.js:181
msgid "Pending" msgid "Pending"
msgstr "" msgstr ""
@ -291,7 +291,7 @@ msgid "Build Order Reference"
msgstr "" msgstr ""
#: build/models.py:87 build/templates/build/allocate.html:342 #: build/models.py:87 build/templates/build/allocate.html:342
#: order/templates/order/purchase_order_detail.html:173 templates/js/bom.js:154 #: order/templates/order/purchase_order_detail.html:173 templates/js/bom.js:172
msgid "Reference" msgid "Reference"
msgstr "" msgstr ""
@ -300,10 +300,10 @@ msgstr ""
#: company/templates/company/supplier_part_detail.html:27 #: company/templates/company/supplier_part_detail.html:27
#: order/templates/order/purchase_order_detail.html:160 #: order/templates/order/purchase_order_detail.html:160
#: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14
#: templates/InvenTree/search.html:147 templates/js/bom.js:147 #: templates/InvenTree/search.html:147 templates/js/bom.js:165
#: templates/js/bom.js:486 templates/js/build.js:56 templates/js/company.js:56 #: templates/js/bom.js:504 templates/js/build.js:56 templates/js/company.js:56
#: templates/js/order.js:167 templates/js/order.js:249 templates/js/part.js:120 #: templates/js/order.js:167 templates/js/order.js:249 templates/js/part.js:149
#: templates/js/part.js:203 templates/js/part.js:345 templates/js/part.js:526 #: templates/js/part.js:232 templates/js/part.js:384 templates/js/part.js:565
#: templates/js/stock.js:445 templates/js/stock.js:672 #: templates/js/stock.js:445 templates/js/stock.js:672
msgid "Description" msgid "Description"
msgstr "" msgstr ""
@ -329,9 +329,9 @@ msgstr ""
#: order/templates/order/receive_parts.html:19 part/models.py:293 #: order/templates/order/receive_parts.html:19 part/models.py:293
#: part/templates/part/part_app_base.html:7 #: part/templates/part/part_app_base.html:7
#: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133
#: templates/js/barcode.js:336 templates/js/bom.js:124 templates/js/bom.js:471 #: templates/js/barcode.js:336 templates/js/bom.js:124 templates/js/bom.js:489
#: templates/js/build.js:61 templates/js/company.js:137 #: templates/js/build.js:61 templates/js/company.js:138
#: templates/js/part.js:184 templates/js/part.js:289 templates/js/stock.js:421 #: templates/js/part.js:213 templates/js/part.js:318 templates/js/stock.js:421
#: templates/js/stock.js:978 #: templates/js/stock.js:978
msgid "Part" msgid "Part"
msgstr "" msgstr ""
@ -400,7 +400,7 @@ msgstr ""
#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:70 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:70
#: stock/forms.py:306 stock/forms.py:338 stock/forms.py:366 stock/models.py:453 #: stock/forms.py:306 stock/forms.py:338 stock/forms.py:366 stock/models.py:453
#: stock/models.py:1404 stock/templates/stock/tabs.html:26 #: stock/models.py:1404 stock/templates/stock/tabs.html:26
#: templates/js/barcode.js:391 templates/js/bom.js:223 #: templates/js/barcode.js:391 templates/js/bom.js:241
#: templates/js/stock.js:116 templates/js/stock.js:544 #: templates/js/stock.js:116 templates/js/stock.js:544
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
@ -492,7 +492,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:32 #: stock/templates/stock/item_base.html:32
#: stock/templates/stock/item_base.html:184 #: stock/templates/stock/item_base.html:184
#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338
#: templates/js/bom.js:162 templates/js/build.js:72 templates/js/stock.js:691 #: templates/js/bom.js:180 templates/js/build.js:72 templates/js/stock.js:691
#: templates/js/stock.js:906 #: templates/js/stock.js:906
msgid "Quantity" msgid "Quantity"
msgstr "" msgstr ""
@ -516,12 +516,12 @@ msgstr ""
msgid "Delete stock allocation" msgid "Delete stock allocation"
msgstr "" msgstr ""
#: build/templates/build/allocate.html:238 templates/js/bom.js:334 #: build/templates/build/allocate.html:238 templates/js/bom.js:352
msgid "No BOM items found" msgid "No BOM items found"
msgstr "" msgstr ""
#: build/templates/build/allocate.html:347 part/models.py:1401 #: build/templates/build/allocate.html:347 part/models.py:1401
#: templates/js/part.js:530 templates/js/table_filters.js:145 #: templates/js/part.js:569 templates/js/table_filters.js:167
msgid "Required" msgid "Required"
msgstr "" msgstr ""
@ -693,8 +693,8 @@ msgstr ""
#: build/templates/build/detail.html:48 #: build/templates/build/detail.html:48
#: stock/templates/stock/item_base.html:238 templates/js/stock.js:514 #: stock/templates/stock/item_base.html:238 templates/js/stock.js:514
#: templates/js/stock.js:921 templates/js/table_filters.js:58 #: templates/js/stock.js:921 templates/js/table_filters.js:80
#: templates/js/table_filters.js:124 #: templates/js/table_filters.js:146
msgid "Batch" msgid "Batch"
msgstr "" msgstr ""
@ -1104,7 +1104,7 @@ msgstr ""
#: company/templates/company/detail.html:16 #: company/templates/company/detail.html:16
#: company/templates/company/supplier_part_base.html:84 #: company/templates/company/supplier_part_base.html:84
#: company/templates/company/supplier_part_detail.html:30 part/bom.py:172 #: company/templates/company/supplier_part_detail.html:30 part/bom.py:172
#: templates/js/company.js:44 templates/js/company.js:186 #: templates/js/company.js:44 templates/js/company.js:188
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -1114,7 +1114,7 @@ msgstr ""
#: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:79
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170
#: stock/templates/stock/item_base.html:273 templates/js/company.js:48 #: stock/templates/stock/item_base.html:273 templates/js/company.js:48
#: templates/js/company.js:162 templates/js/order.js:154 #: templates/js/company.js:164 templates/js/order.js:154
msgid "Supplier" msgid "Supplier"
msgstr "" msgstr ""
@ -1159,30 +1159,30 @@ msgstr ""
msgid "Delete Parts" msgid "Delete Parts"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:60 #: company/templates/company/detail_part.html:63
#: part/templates/part/category.html:116 templates/js/stock.js:792 #: part/templates/part/category.html:116 templates/js/stock.js:792
msgid "New Part" msgid "New Part"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:61 #: company/templates/company/detail_part.html:64
msgid "Create new Part" msgid "Create new Part"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:66 company/views.py:53 #: company/templates/company/detail_part.html:69 company/views.py:53
#: part/templates/part/supplier.html:47 #: part/templates/part/supplier.html:47
msgid "New Supplier" msgid "New Supplier"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:67 company/views.py:192 #: company/templates/company/detail_part.html:70 company/views.py:192
msgid "Create new Supplier" msgid "Create new Supplier"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:72 company/views.py:60 #: company/templates/company/detail_part.html:75 company/views.py:60
#: part/templates/part/supplier.html:53 #: part/templates/part/supplier.html:53
msgid "New Manufacturer" msgid "New Manufacturer"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:73 company/views.py:195 #: company/templates/company/detail_part.html:76 company/views.py:195
msgid "Create new Manufacturer" msgid "Create new Manufacturer"
msgstr "" msgstr ""
@ -1253,7 +1253,7 @@ msgstr ""
#: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:6
#: company/templates/company/supplier_part_base.html:19 stock/models.py:344 #: company/templates/company/supplier_part_base.html:19 stock/models.py:344
#: stock/templates/stock/item_base.html:278 templates/js/company.js:178 #: stock/templates/stock/item_base.html:278 templates/js/company.js:180
msgid "Supplier Part" msgid "Supplier Part"
msgstr "" msgstr ""
@ -1287,7 +1287,7 @@ msgstr ""
#: company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_base.html:88
#: company/templates/company/supplier_part_detail.html:31 part/bom.py:173 #: company/templates/company/supplier_part_detail.html:31 part/bom.py:173
#: templates/js/company.js:202 #: templates/js/company.js:204
msgid "MPN" msgid "MPN"
msgstr "" msgstr ""
@ -1310,7 +1310,7 @@ msgid "Pricing Information"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_pricing.html:17 company/views.py:410 #: company/templates/company/supplier_part_pricing.html:17 company/views.py:410
#: part/templates/part/sale_prices.html:13 part/views.py:2228 #: part/templates/part/sale_prices.html:13 part/views.py:2229
msgid "Add Price Break" msgid "Add Price Break"
msgstr "" msgstr ""
@ -1320,7 +1320,7 @@ msgid "No price break information found"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_pricing.html:80 #: company/templates/company/supplier_part_pricing.html:80
#: part/templates/part/sale_prices.html:85 templates/js/bom.js:207 #: part/templates/part/sale_prices.html:85 templates/js/bom.js:225
msgid "Price" msgid "Price"
msgstr "" msgstr ""
@ -1345,8 +1345,8 @@ msgstr ""
#: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/supplier_part_tabs.html:8
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18
#: stock/templates/stock/location.html:17 templates/InvenTree/search.html:155 #: stock/templates/stock/location.html:17 templates/InvenTree/search.html:155
#: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:124 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:153
#: templates/js/part.js:372 templates/js/stock.js:453 templates/navbar.html:22 #: templates/js/part.js:411 templates/js/stock.js:453 templates/navbar.html:22
#: users/models.py:29 #: users/models.py:29
msgid "Stock" msgid "Stock"
msgstr "" msgstr ""
@ -1437,15 +1437,15 @@ msgstr ""
msgid "Delete Supplier Part" msgid "Delete Supplier Part"
msgstr "" msgstr ""
#: company/views.py:416 part/views.py:2234 #: company/views.py:416 part/views.py:2235
msgid "Added new price break" msgid "Added new price break"
msgstr "" msgstr ""
#: company/views.py:453 part/views.py:2279 #: company/views.py:453 part/views.py:2280
msgid "Edit Price Break" msgid "Edit Price Break"
msgstr "" msgstr ""
#: company/views.py:469 part/views.py:2295 #: company/views.py:469 part/views.py:2296
msgid "Delete Price Break" msgid "Delete Price Break"
msgstr "" msgstr ""
@ -1538,7 +1538,7 @@ msgstr ""
msgid "Date order was completed" msgid "Date order was completed"
msgstr "" msgstr ""
#: order/models.py:185 order/models.py:259 part/views.py:1345 #: order/models.py:185 order/models.py:259 part/views.py:1346
#: stock/models.py:241 stock/models.py:805 #: stock/models.py:241 stock/models.py:805
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "" msgstr ""
@ -1785,7 +1785,7 @@ msgid "Select parts to receive against this order"
msgstr "" msgstr ""
#: order/templates/order/receive_parts.html:21 #: order/templates/order/receive_parts.html:21
#: part/templates/part/part_base.html:145 templates/js/part.js:388 #: part/templates/part/part_base.html:145 templates/js/part.js:427
msgid "On Order" msgid "On Order"
msgstr "" msgstr ""
@ -2257,7 +2257,7 @@ msgstr ""
msgid "Test with this name already exists for this part" msgid "Test with this name already exists for this part"
msgstr "" msgstr ""
#: part/models.py:1389 templates/js/part.js:521 templates/js/stock.js:92 #: part/models.py:1389 templates/js/part.js:560 templates/js/stock.js:92
msgid "Test Name" msgid "Test Name"
msgstr "" msgstr ""
@ -2277,7 +2277,7 @@ msgstr ""
msgid "Is this test required to pass?" msgid "Is this test required to pass?"
msgstr "" msgstr ""
#: part/models.py:1407 templates/js/part.js:538 #: part/models.py:1407 templates/js/part.js:577
msgid "Requires Value" msgid "Requires Value"
msgstr "" msgstr ""
@ -2285,7 +2285,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?" msgid "Does this test require a value when adding a test result?"
msgstr "" msgstr ""
#: part/models.py:1413 templates/js/part.js:545 #: part/models.py:1413 templates/js/part.js:584
msgid "Requires Attachment" msgid "Requires Attachment"
msgstr "" msgstr ""
@ -2349,7 +2349,7 @@ msgstr ""
msgid "BOM line checksum" msgid "BOM line checksum"
msgstr "" msgstr ""
#: part/models.py:1612 part/views.py:1351 part/views.py:1403 #: part/models.py:1612 part/views.py:1352 part/views.py:1404
#: stock/models.py:231 #: stock/models.py:231
msgid "Quantity must be integer value for trackable parts" msgid "Quantity must be integer value for trackable parts"
msgstr "" msgstr ""
@ -2432,7 +2432,7 @@ msgstr ""
msgid "Validate" msgid "Validate"
msgstr "" msgstr ""
#: part/templates/part/bom.html:61 part/views.py:1642 #: part/templates/part/bom.html:61 part/views.py:1643
msgid "Export Bill of Materials" msgid "Export Bill of Materials"
msgstr "" msgstr ""
@ -2524,7 +2524,7 @@ msgstr ""
msgid "All parts" msgid "All parts"
msgstr "" msgstr ""
#: part/templates/part/category.html:24 part/views.py:2045 #: part/templates/part/category.html:24 part/views.py:2046
msgid "Create new part category" msgid "Create new part category"
msgstr "" msgstr ""
@ -2604,16 +2604,28 @@ msgstr ""
msgid "Parametric Table" msgid "Parametric Table"
msgstr "" msgstr ""
#: part/templates/part/create_part.html:11
msgid "Possible Matching Parts"
msgstr ""
#: part/templates/part/create_part.html:12
msgid "The new part may be a duplicate of these existing parts"
msgstr ""
#: part/templates/part/create_part.html:16
msgid "match"
msgstr ""
#: part/templates/part/detail.html:9 #: part/templates/part/detail.html:9
msgid "Part Details" msgid "Part Details"
msgstr "" msgstr ""
#: part/templates/part/detail.html:25 part/templates/part/part_base.html:95 #: part/templates/part/detail.html:25 part/templates/part/part_base.html:95
#: templates/js/part.js:112 #: templates/js/part.js:141
msgid "IPN" msgid "IPN"
msgstr "" msgstr ""
#: part/templates/part/detail.html:32 templates/js/part.js:116 #: part/templates/part/detail.html:32 templates/js/part.js:145
msgid "Revision" msgid "Revision"
msgstr "" msgstr ""
@ -2630,7 +2642,7 @@ msgid "Variant Of"
msgstr "" msgstr ""
#: part/templates/part/detail.html:70 part/templates/part/set_category.html:15 #: part/templates/part/detail.html:70 part/templates/part/set_category.html:15
#: templates/js/part.js:359 #: templates/js/part.js:398
msgid "Category" msgid "Category"
msgstr "" msgstr ""
@ -2658,7 +2670,7 @@ msgstr ""
msgid "Responsible User" msgid "Responsible User"
msgstr "" msgstr ""
#: part/templates/part/detail.html:136 #: part/templates/part/detail.html:136 templates/js/table_filters.js:27
msgid "Virtual" msgid "Virtual"
msgstr "" msgstr ""
@ -2671,7 +2683,7 @@ msgid "Part is not a virtual part"
msgstr "" msgstr ""
#: part/templates/part/detail.html:145 stock/forms.py:248 #: part/templates/part/detail.html:145 stock/forms.py:248
#: templates/js/table_filters.js:212 #: templates/js/table_filters.js:23 templates/js/table_filters.js:243
msgid "Template" msgid "Template"
msgstr "" msgstr ""
@ -2683,7 +2695,7 @@ msgstr ""
msgid "Part is not a template part" msgid "Part is not a template part"
msgstr "" msgstr ""
#: part/templates/part/detail.html:154 templates/js/table_filters.js:224 #: part/templates/part/detail.html:154 templates/js/table_filters.js:255
msgid "Assembly" msgid "Assembly"
msgstr "" msgstr ""
@ -2695,7 +2707,7 @@ msgstr ""
msgid "Part cannot be assembled from other parts" msgid "Part cannot be assembled from other parts"
msgstr "" msgstr ""
#: part/templates/part/detail.html:163 templates/js/table_filters.js:228 #: part/templates/part/detail.html:163 templates/js/table_filters.js:259
msgid "Component" msgid "Component"
msgstr "" msgstr ""
@ -2707,7 +2719,8 @@ msgstr ""
msgid "Part cannot be used in assemblies" msgid "Part cannot be used in assemblies"
msgstr "" msgstr ""
#: part/templates/part/detail.html:172 templates/js/table_filters.js:240 #: part/templates/part/detail.html:172 templates/js/table_filters.js:31
#: templates/js/table_filters.js:271
msgid "Trackable" msgid "Trackable"
msgstr "" msgstr ""
@ -2727,7 +2740,7 @@ msgstr ""
msgid "Part can be purchased from external suppliers" msgid "Part can be purchased from external suppliers"
msgstr "" msgstr ""
#: part/templates/part/detail.html:190 templates/js/table_filters.js:236 #: part/templates/part/detail.html:190 templates/js/table_filters.js:267
msgid "Salable" msgid "Salable"
msgstr "" msgstr ""
@ -2739,8 +2752,8 @@ msgstr ""
msgid "Part cannot be sold to customers" msgid "Part cannot be sold to customers"
msgstr "" msgstr ""
#: part/templates/part/detail.html:199 templates/js/table_filters.js:33 #: part/templates/part/detail.html:199 templates/js/table_filters.js:19
#: templates/js/table_filters.js:207 #: templates/js/table_filters.js:55 templates/js/table_filters.js:238
msgid "Active" msgid "Active"
msgstr "" msgstr ""
@ -2794,8 +2807,9 @@ msgstr ""
msgid "This part is a variant of" msgid "This part is a variant of"
msgstr "" msgstr ""
#: part/templates/part/part_base.html:36 templates/js/company.js:153 #: part/templates/part/part_base.html:36 templates/js/bom.js:152
#: templates/js/part.js:336 #: templates/js/company.js:155 templates/js/part.js:133
#: templates/js/part.js:375
msgid "Inactive" msgid "Inactive"
msgstr "" msgstr ""
@ -2845,7 +2859,7 @@ msgstr ""
msgid "Delete part" msgid "Delete part"
msgstr "" msgstr ""
#: part/templates/part/part_base.html:124 templates/js/table_filters.js:89 #: part/templates/part/part_base.html:124 templates/js/table_filters.js:111
msgid "In Stock" msgid "In Stock"
msgstr "" msgstr ""
@ -2905,8 +2919,8 @@ msgstr ""
msgid "Part Stock" msgid "Part Stock"
msgstr "" msgstr ""
#: part/templates/part/stock_count.html:7 templates/js/bom.js:197 #: part/templates/part/stock_count.html:7 templates/js/bom.js:215
#: templates/js/part.js:396 #: templates/js/part.js:435
msgid "No Stock" msgid "No Stock"
msgstr "" msgstr ""
@ -2962,11 +2976,11 @@ msgstr ""
msgid "Part Variants" msgid "Part Variants"
msgstr "" msgstr ""
#: part/templates/part/variants.html:21 #: part/templates/part/variants.html:22
msgid "Create new variant" msgid "Create new variant"
msgstr "" msgstr ""
#: part/templates/part/variants.html:21 #: part/templates/part/variants.html:23
msgid "New Variant" msgid "New Variant"
msgstr "" msgstr ""
@ -3023,127 +3037,127 @@ msgstr ""
msgid "Copied part" msgid "Copied part"
msgstr "" msgstr ""
#: part/views.py:513 templates/js/stock.js:793 #: part/views.py:514 templates/js/stock.js:793
msgid "Create New Part" msgid "Create New Part"
msgstr "" msgstr ""
#: part/views.py:520 #: part/views.py:521
msgid "Created new part" msgid "Created new part"
msgstr "" msgstr ""
#: part/views.py:735 #: part/views.py:736
msgid "Part QR Code" msgid "Part QR Code"
msgstr "" msgstr ""
#: part/views.py:754 #: part/views.py:755
msgid "Upload Part Image" msgid "Upload Part Image"
msgstr "" msgstr ""
#: part/views.py:762 part/views.py:799 #: part/views.py:763 part/views.py:800
msgid "Updated part image" msgid "Updated part image"
msgstr "" msgstr ""
#: part/views.py:771 #: part/views.py:772
msgid "Select Part Image" msgid "Select Part Image"
msgstr "" msgstr ""
#: part/views.py:802 #: part/views.py:803
msgid "Part image not found" msgid "Part image not found"
msgstr "" msgstr ""
#: part/views.py:813 #: part/views.py:814
msgid "Edit Part Properties" msgid "Edit Part Properties"
msgstr "" msgstr ""
#: part/views.py:837 #: part/views.py:838
msgid "Validate BOM" msgid "Validate BOM"
msgstr "" msgstr ""
#: part/views.py:1004 #: part/views.py:1005
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "" msgstr ""
#: part/views.py:1354 #: part/views.py:1355
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "" msgstr ""
#: part/views.py:1379 part/views.py:1382 #: part/views.py:1380 part/views.py:1383
msgid "Select valid part" msgid "Select valid part"
msgstr "" msgstr ""
#: part/views.py:1388 #: part/views.py:1389
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "" msgstr ""
#: part/views.py:1426 #: part/views.py:1427
msgid "Select a part" msgid "Select a part"
msgstr "" msgstr ""
#: part/views.py:1432 #: part/views.py:1433
msgid "Selected part creates a circular BOM" msgid "Selected part creates a circular BOM"
msgstr "" msgstr ""
#: part/views.py:1436 #: part/views.py:1437
msgid "Specify quantity" msgid "Specify quantity"
msgstr "" msgstr ""
#: part/views.py:1692 #: part/views.py:1693
msgid "Confirm Part Deletion" msgid "Confirm Part Deletion"
msgstr "" msgstr ""
#: part/views.py:1701 #: part/views.py:1702
msgid "Part was deleted" msgid "Part was deleted"
msgstr "" msgstr ""
#: part/views.py:1710 #: part/views.py:1711
msgid "Part Pricing" msgid "Part Pricing"
msgstr "" msgstr ""
#: part/views.py:1836 #: part/views.py:1837
msgid "Create Part Parameter Template" msgid "Create Part Parameter Template"
msgstr "" msgstr ""
#: part/views.py:1846 #: part/views.py:1847
msgid "Edit Part Parameter Template" msgid "Edit Part Parameter Template"
msgstr "" msgstr ""
#: part/views.py:1855 #: part/views.py:1856
msgid "Delete Part Parameter Template" msgid "Delete Part Parameter Template"
msgstr "" msgstr ""
#: part/views.py:1865 #: part/views.py:1866
msgid "Create Part Parameter" msgid "Create Part Parameter"
msgstr "" msgstr ""
#: part/views.py:1917 #: part/views.py:1918
msgid "Edit Part Parameter" msgid "Edit Part Parameter"
msgstr "" msgstr ""
#: part/views.py:1933 #: part/views.py:1934
msgid "Delete Part Parameter" msgid "Delete Part Parameter"
msgstr "" msgstr ""
#: part/views.py:1992 #: part/views.py:1993
msgid "Edit Part Category" msgid "Edit Part Category"
msgstr "" msgstr ""
#: part/views.py:2029 #: part/views.py:2030
msgid "Delete Part Category" msgid "Delete Part Category"
msgstr "" msgstr ""
#: part/views.py:2037 #: part/views.py:2038
msgid "Part category was deleted" msgid "Part category was deleted"
msgstr "" msgstr ""
#: part/views.py:2100 #: part/views.py:2101
msgid "Create BOM item" msgid "Create BOM Item"
msgstr "" msgstr ""
#: part/views.py:2168 #: part/views.py:2169
msgid "Edit BOM item" msgid "Edit BOM item"
msgstr "" msgstr ""
#: part/views.py:2218 #: part/views.py:2219
msgid "Confim BOM item deletion" msgid "Confim BOM item deletion"
msgstr "" msgstr ""
@ -3447,7 +3461,7 @@ msgstr ""
msgid "Result" msgid "Result"
msgstr "" msgstr ""
#: stock/models.py:1386 templates/js/table_filters.js:135 #: stock/models.py:1386 templates/js/table_filters.js:157
msgid "Test result" msgid "Test result"
msgstr "" msgstr ""
@ -4313,51 +4327,63 @@ msgstr ""
msgid "Barcode does not match Stock Item" msgid "Barcode does not match Stock Item"
msgstr "" msgstr ""
#: templates/js/bom.js:132 #: templates/js/bom.js:133 templates/js/part.js:117 templates/js/part.js:344
msgid "Trackable part"
msgstr ""
#: templates/js/bom.js:137 templates/js/part.js:121 templates/js/part.js:348
msgid "Virtual part"
msgstr ""
#: templates/js/bom.js:141
msgid "Templat part"
msgstr ""
#: templates/js/bom.js:146
msgid "Open subassembly" msgid "Open subassembly"
msgstr "" msgstr ""
#: templates/js/bom.js:173 #: templates/js/bom.js:191
msgid "Optional" msgid "Optional"
msgstr "" msgstr ""
#: templates/js/bom.js:188 templates/js/build.js:133 #: templates/js/bom.js:206 templates/js/build.js:133
msgid "Available" msgid "Available"
msgstr "" msgstr ""
#: templates/js/bom.js:213 #: templates/js/bom.js:231
msgid "No pricing available" msgid "No pricing available"
msgstr "" msgstr ""
#: templates/js/bom.js:232 #: templates/js/bom.js:250
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
#: templates/js/bom.js:240 #: templates/js/bom.js:258
msgid "Validate BOM Item" msgid "Validate BOM Item"
msgstr "" msgstr ""
#: templates/js/bom.js:242 #: templates/js/bom.js:260
msgid "This line has been validated" msgid "This line has been validated"
msgstr "" msgstr ""
#: templates/js/bom.js:244 #: templates/js/bom.js:262
msgid "Edit BOM Item" msgid "Edit BOM Item"
msgstr "" msgstr ""
#: templates/js/bom.js:246 #: templates/js/bom.js:264
msgid "Delete BOM Item" msgid "Delete BOM Item"
msgstr "" msgstr ""
#: templates/js/bom.js:478 #: templates/js/bom.js:496
msgid "INACTIVE" msgid "INACTIVE"
msgstr "" msgstr ""
#: templates/js/bom.js:492 #: templates/js/bom.js:510
msgid "Uses" msgid "Uses"
msgstr "" msgstr ""
#: templates/js/bom.js:503 #: templates/js/bom.js:521
msgid "No matching parts found" msgid "No matching parts found"
msgstr "" msgstr ""
@ -4381,19 +4407,21 @@ msgstr ""
msgid "No company information found" msgid "No company information found"
msgstr "" msgstr ""
#: templates/js/company.js:128 #: templates/js/company.js:129
msgid "No supplier parts found" msgid "No supplier parts found"
msgstr "" msgstr ""
#: templates/js/company.js:145 templates/js/part.js:314 #: templates/js/company.js:147 templates/js/part.js:125
#: templates/js/part.js:353
msgid "Template part" msgid "Template part"
msgstr "" msgstr ""
#: templates/js/company.js:149 templates/js/part.js:318 #: templates/js/company.js:151 templates/js/part.js:129
#: templates/js/part.js:357
msgid "Assembled part" msgid "Assembled part"
msgstr "" msgstr ""
#: templates/js/company.js:206 #: templates/js/company.js:208
msgid "Link" msgid "Link"
msgstr "" msgstr ""
@ -4413,59 +4441,59 @@ msgstr ""
msgid "Shipment Date" msgid "Shipment Date"
msgstr "" msgstr ""
#: templates/js/part.js:137 #: templates/js/part.js:166
msgid "No variants found" msgid "No variants found"
msgstr "" msgstr ""
#: templates/js/part.js:223 templates/js/part.js:411 #: templates/js/part.js:252 templates/js/part.js:450
msgid "No parts found" msgid "No parts found"
msgstr "" msgstr ""
#: templates/js/part.js:275 templates/js/stock.js:409 templates/js/stock.js:966 #: templates/js/part.js:304 templates/js/stock.js:409 templates/js/stock.js:966
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: templates/js/part.js:322 #: templates/js/part.js:361
msgid "Starred part" msgid "Starred part"
msgstr "" msgstr ""
#: templates/js/part.js:326 #: templates/js/part.js:365
msgid "Salable part" msgid "Salable part"
msgstr "" msgstr ""
#: templates/js/part.js:365 #: templates/js/part.js:404
msgid "No category" msgid "No category"
msgstr "" msgstr ""
#: templates/js/part.js:383 templates/js/table_filters.js:220 #: templates/js/part.js:422 templates/js/table_filters.js:251
msgid "Low stock" msgid "Low stock"
msgstr "" msgstr ""
#: templates/js/part.js:392 #: templates/js/part.js:431
msgid "Building" msgid "Building"
msgstr "" msgstr ""
#: templates/js/part.js:471 #: templates/js/part.js:510
msgid "YES" msgid "YES"
msgstr "" msgstr ""
#: templates/js/part.js:473 #: templates/js/part.js:512
msgid "NO" msgid "NO"
msgstr "" msgstr ""
#: templates/js/part.js:507 #: templates/js/part.js:546
msgid "No test templates matching query" msgid "No test templates matching query"
msgstr "" msgstr ""
#: templates/js/part.js:558 templates/js/stock.js:63 #: templates/js/part.js:597 templates/js/stock.js:63
msgid "Edit test result" msgid "Edit test result"
msgstr "" msgstr ""
#: templates/js/part.js:559 templates/js/stock.js:64 #: templates/js/part.js:598 templates/js/stock.js:64
msgid "Delete test result" msgid "Delete test result"
msgstr "" msgstr ""
#: templates/js/part.js:565 #: templates/js/part.js:604
msgid "This test is defined for a parent part" msgid "This test is defined for a parent part"
msgstr "" msgstr ""
@ -4529,7 +4557,7 @@ msgstr ""
msgid "Stock item is lost" msgid "Stock item is lost"
msgstr "" msgstr ""
#: templates/js/stock.js:498 templates/js/table_filters.js:84 #: templates/js/stock.js:498 templates/js/table_filters.js:106
msgid "Depleted" msgid "Depleted"
msgstr "" msgstr ""
@ -4553,7 +4581,7 @@ msgstr ""
msgid "Serial" msgid "Serial"
msgstr "" msgstr ""
#: templates/js/stock.js:997 templates/js/table_filters.js:94 #: templates/js/stock.js:997 templates/js/table_filters.js:116
msgid "Installed" msgid "Installed"
msgstr "" msgstr ""
@ -4561,132 +4589,132 @@ msgstr ""
msgid "Install item" msgid "Install item"
msgstr "" msgstr ""
#: templates/js/table_filters.js:19 #: templates/js/table_filters.js:41
msgid "Trackable Part" msgid "Trackable Part"
msgstr "" msgstr ""
#: templates/js/table_filters.js:23 #: templates/js/table_filters.js:45
msgid "Validated" msgid "Validated"
msgstr "" msgstr ""
#: templates/js/table_filters.js:43 templates/js/table_filters.js:104 #: templates/js/table_filters.js:65 templates/js/table_filters.js:126
msgid "Is Serialized" msgid "Is Serialized"
msgstr "" msgstr ""
#: templates/js/table_filters.js:46 templates/js/table_filters.js:111 #: templates/js/table_filters.js:68 templates/js/table_filters.js:133
msgid "Serial number GTE" msgid "Serial number GTE"
msgstr "" msgstr ""
#: templates/js/table_filters.js:47 templates/js/table_filters.js:112 #: templates/js/table_filters.js:69 templates/js/table_filters.js:134
msgid "Serial number greater than or equal to" msgid "Serial number greater than or equal to"
msgstr "" msgstr ""
#: templates/js/table_filters.js:50 templates/js/table_filters.js:115 #: templates/js/table_filters.js:72 templates/js/table_filters.js:137
msgid "Serial number LTE" msgid "Serial number LTE"
msgstr "" msgstr ""
#: templates/js/table_filters.js:51 templates/js/table_filters.js:116 #: templates/js/table_filters.js:73 templates/js/table_filters.js:138
msgid "Serial number less than or equal to" msgid "Serial number less than or equal to"
msgstr "" msgstr ""
#: templates/js/table_filters.js:54 templates/js/table_filters.js:55 #: templates/js/table_filters.js:76 templates/js/table_filters.js:77
#: templates/js/table_filters.js:107 templates/js/table_filters.js:108 #: templates/js/table_filters.js:129 templates/js/table_filters.js:130
msgid "Serial number" msgid "Serial number"
msgstr "" msgstr ""
#: templates/js/table_filters.js:59 templates/js/table_filters.js:125 #: templates/js/table_filters.js:81 templates/js/table_filters.js:147
msgid "Batch code" msgid "Batch code"
msgstr "" msgstr ""
#: templates/js/table_filters.js:69 #: templates/js/table_filters.js:91 templates/js/table_filters.js:218
msgid "Active parts" msgid "Active parts"
msgstr "" msgstr ""
#: templates/js/table_filters.js:70 #: templates/js/table_filters.js:92
msgid "Show stock for active parts" msgid "Show stock for active parts"
msgstr "" msgstr ""
#: templates/js/table_filters.js:74 #: templates/js/table_filters.js:96
msgid "Is allocated" msgid "Is allocated"
msgstr "" msgstr ""
#: templates/js/table_filters.js:75 #: templates/js/table_filters.js:97
msgid "Item has been alloacted" msgid "Item has been alloacted"
msgstr "" msgstr ""
#: templates/js/table_filters.js:79 #: templates/js/table_filters.js:101
msgid "Include sublocations" msgid "Include sublocations"
msgstr "" msgstr ""
#: templates/js/table_filters.js:80 #: templates/js/table_filters.js:102
msgid "Include stock in sublocations" msgid "Include stock in sublocations"
msgstr "" msgstr ""
#: templates/js/table_filters.js:85 #: templates/js/table_filters.js:107
msgid "Show stock items which are depleted" msgid "Show stock items which are depleted"
msgstr "" msgstr ""
#: templates/js/table_filters.js:90 #: templates/js/table_filters.js:112
msgid "Show items which are in stock" msgid "Show items which are in stock"
msgstr "" msgstr ""
#: templates/js/table_filters.js:95 #: templates/js/table_filters.js:117
msgid "Show stock items which are installed in another item" msgid "Show stock items which are installed in another item"
msgstr "" msgstr ""
#: templates/js/table_filters.js:99 #: templates/js/table_filters.js:121
msgid "Sent to customer" msgid "Sent to customer"
msgstr "" msgstr ""
#: templates/js/table_filters.js:100 #: templates/js/table_filters.js:122
msgid "Show items which have been assigned to a customer" msgid "Show items which have been assigned to a customer"
msgstr "" msgstr ""
#: templates/js/table_filters.js:120 templates/js/table_filters.js:121 #: templates/js/table_filters.js:142 templates/js/table_filters.js:143
msgid "Stock status" msgid "Stock status"
msgstr "" msgstr ""
#: templates/js/table_filters.js:154 #: templates/js/table_filters.js:176
msgid "Build status" msgid "Build status"
msgstr "" msgstr ""
#: templates/js/table_filters.js:169 templates/js/table_filters.js:182 #: templates/js/table_filters.js:191 templates/js/table_filters.js:204
msgid "Order status" msgid "Order status"
msgstr "" msgstr ""
#: templates/js/table_filters.js:174 templates/js/table_filters.js:187 #: templates/js/table_filters.js:196 templates/js/table_filters.js:209
msgid "Outstanding" msgid "Outstanding"
msgstr "" msgstr ""
#: templates/js/table_filters.js:197 #: templates/js/table_filters.js:228
msgid "Include subcategories" msgid "Include subcategories"
msgstr "" msgstr ""
#: templates/js/table_filters.js:198 #: templates/js/table_filters.js:229
msgid "Include parts in subcategories" msgid "Include parts in subcategories"
msgstr "" msgstr ""
#: templates/js/table_filters.js:202 #: templates/js/table_filters.js:233
msgid "Has IPN" msgid "Has IPN"
msgstr "" msgstr ""
#: templates/js/table_filters.js:203 #: templates/js/table_filters.js:234
msgid "Part has internal part number" msgid "Part has internal part number"
msgstr "" msgstr ""
#: templates/js/table_filters.js:208 #: templates/js/table_filters.js:239
msgid "Show active parts" msgid "Show active parts"
msgstr "" msgstr ""
#: templates/js/table_filters.js:216 #: templates/js/table_filters.js:247
msgid "Stock available" msgid "Stock available"
msgstr "" msgstr ""
#: templates/js/table_filters.js:232 #: templates/js/table_filters.js:263
msgid "Starred" msgid "Starred"
msgstr "" msgstr ""
#: templates/js/table_filters.js:244 #: templates/js/table_filters.js:275
msgid "Purchasable" msgid "Purchasable"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-28 11:37+0000\n" "POT-Creation-Date: 2020-10-29 02:25+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -91,7 +91,7 @@ msgid "User"
msgstr "" msgstr ""
#: InvenTree/models.py:106 part/templates/part/params.html:24 #: InvenTree/models.py:106 part/templates/part/params.html:24
#: templates/js/part.js:81 #: templates/js/part.js:90
msgid "Name" msgid "Name"
msgstr "" msgstr ""
@ -116,7 +116,7 @@ msgid "Polish"
msgstr "" msgstr ""
#: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135
#: InvenTree/status_codes.py:222 templates/js/table_filters.js:159 #: InvenTree/status_codes.py:222 templates/js/table_filters.js:181
msgid "Pending" msgid "Pending"
msgstr "" msgstr ""
@ -291,7 +291,7 @@ msgid "Build Order Reference"
msgstr "" msgstr ""
#: build/models.py:87 build/templates/build/allocate.html:342 #: build/models.py:87 build/templates/build/allocate.html:342
#: order/templates/order/purchase_order_detail.html:173 templates/js/bom.js:154 #: order/templates/order/purchase_order_detail.html:173 templates/js/bom.js:172
msgid "Reference" msgid "Reference"
msgstr "" msgstr ""
@ -300,10 +300,10 @@ msgstr ""
#: company/templates/company/supplier_part_detail.html:27 #: company/templates/company/supplier_part_detail.html:27
#: order/templates/order/purchase_order_detail.html:160 #: order/templates/order/purchase_order_detail.html:160
#: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14
#: templates/InvenTree/search.html:147 templates/js/bom.js:147 #: templates/InvenTree/search.html:147 templates/js/bom.js:165
#: templates/js/bom.js:486 templates/js/build.js:56 templates/js/company.js:56 #: templates/js/bom.js:504 templates/js/build.js:56 templates/js/company.js:56
#: templates/js/order.js:167 templates/js/order.js:249 templates/js/part.js:120 #: templates/js/order.js:167 templates/js/order.js:249 templates/js/part.js:149
#: templates/js/part.js:203 templates/js/part.js:345 templates/js/part.js:526 #: templates/js/part.js:232 templates/js/part.js:384 templates/js/part.js:565
#: templates/js/stock.js:445 templates/js/stock.js:672 #: templates/js/stock.js:445 templates/js/stock.js:672
msgid "Description" msgid "Description"
msgstr "" msgstr ""
@ -329,9 +329,9 @@ msgstr ""
#: order/templates/order/receive_parts.html:19 part/models.py:293 #: order/templates/order/receive_parts.html:19 part/models.py:293
#: part/templates/part/part_app_base.html:7 #: part/templates/part/part_app_base.html:7
#: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133
#: templates/js/barcode.js:336 templates/js/bom.js:124 templates/js/bom.js:471 #: templates/js/barcode.js:336 templates/js/bom.js:124 templates/js/bom.js:489
#: templates/js/build.js:61 templates/js/company.js:137 #: templates/js/build.js:61 templates/js/company.js:138
#: templates/js/part.js:184 templates/js/part.js:289 templates/js/stock.js:421 #: templates/js/part.js:213 templates/js/part.js:318 templates/js/stock.js:421
#: templates/js/stock.js:978 #: templates/js/stock.js:978
msgid "Part" msgid "Part"
msgstr "" msgstr ""
@ -400,7 +400,7 @@ msgstr ""
#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:70 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:70
#: stock/forms.py:306 stock/forms.py:338 stock/forms.py:366 stock/models.py:453 #: stock/forms.py:306 stock/forms.py:338 stock/forms.py:366 stock/models.py:453
#: stock/models.py:1404 stock/templates/stock/tabs.html:26 #: stock/models.py:1404 stock/templates/stock/tabs.html:26
#: templates/js/barcode.js:391 templates/js/bom.js:223 #: templates/js/barcode.js:391 templates/js/bom.js:241
#: templates/js/stock.js:116 templates/js/stock.js:544 #: templates/js/stock.js:116 templates/js/stock.js:544
msgid "Notes" msgid "Notes"
msgstr "" msgstr ""
@ -492,7 +492,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:32 #: stock/templates/stock/item_base.html:32
#: stock/templates/stock/item_base.html:184 #: stock/templates/stock/item_base.html:184
#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338
#: templates/js/bom.js:162 templates/js/build.js:72 templates/js/stock.js:691 #: templates/js/bom.js:180 templates/js/build.js:72 templates/js/stock.js:691
#: templates/js/stock.js:906 #: templates/js/stock.js:906
msgid "Quantity" msgid "Quantity"
msgstr "" msgstr ""
@ -516,12 +516,12 @@ msgstr ""
msgid "Delete stock allocation" msgid "Delete stock allocation"
msgstr "" msgstr ""
#: build/templates/build/allocate.html:238 templates/js/bom.js:334 #: build/templates/build/allocate.html:238 templates/js/bom.js:352
msgid "No BOM items found" msgid "No BOM items found"
msgstr "" msgstr ""
#: build/templates/build/allocate.html:347 part/models.py:1401 #: build/templates/build/allocate.html:347 part/models.py:1401
#: templates/js/part.js:530 templates/js/table_filters.js:145 #: templates/js/part.js:569 templates/js/table_filters.js:167
msgid "Required" msgid "Required"
msgstr "" msgstr ""
@ -693,8 +693,8 @@ msgstr ""
#: build/templates/build/detail.html:48 #: build/templates/build/detail.html:48
#: stock/templates/stock/item_base.html:238 templates/js/stock.js:514 #: stock/templates/stock/item_base.html:238 templates/js/stock.js:514
#: templates/js/stock.js:921 templates/js/table_filters.js:58 #: templates/js/stock.js:921 templates/js/table_filters.js:80
#: templates/js/table_filters.js:124 #: templates/js/table_filters.js:146
msgid "Batch" msgid "Batch"
msgstr "" msgstr ""
@ -1104,7 +1104,7 @@ msgstr ""
#: company/templates/company/detail.html:16 #: company/templates/company/detail.html:16
#: company/templates/company/supplier_part_base.html:84 #: company/templates/company/supplier_part_base.html:84
#: company/templates/company/supplier_part_detail.html:30 part/bom.py:172 #: company/templates/company/supplier_part_detail.html:30 part/bom.py:172
#: templates/js/company.js:44 templates/js/company.js:186 #: templates/js/company.js:44 templates/js/company.js:188
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -1114,7 +1114,7 @@ msgstr ""
#: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:79
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170
#: stock/templates/stock/item_base.html:273 templates/js/company.js:48 #: stock/templates/stock/item_base.html:273 templates/js/company.js:48
#: templates/js/company.js:162 templates/js/order.js:154 #: templates/js/company.js:164 templates/js/order.js:154
msgid "Supplier" msgid "Supplier"
msgstr "" msgstr ""
@ -1159,30 +1159,30 @@ msgstr ""
msgid "Delete Parts" msgid "Delete Parts"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:60 #: company/templates/company/detail_part.html:63
#: part/templates/part/category.html:116 templates/js/stock.js:792 #: part/templates/part/category.html:116 templates/js/stock.js:792
msgid "New Part" msgid "New Part"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:61 #: company/templates/company/detail_part.html:64
msgid "Create new Part" msgid "Create new Part"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:66 company/views.py:53 #: company/templates/company/detail_part.html:69 company/views.py:53
#: part/templates/part/supplier.html:47 #: part/templates/part/supplier.html:47
msgid "New Supplier" msgid "New Supplier"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:67 company/views.py:192 #: company/templates/company/detail_part.html:70 company/views.py:192
msgid "Create new Supplier" msgid "Create new Supplier"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:72 company/views.py:60 #: company/templates/company/detail_part.html:75 company/views.py:60
#: part/templates/part/supplier.html:53 #: part/templates/part/supplier.html:53
msgid "New Manufacturer" msgid "New Manufacturer"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:73 company/views.py:195 #: company/templates/company/detail_part.html:76 company/views.py:195
msgid "Create new Manufacturer" msgid "Create new Manufacturer"
msgstr "" msgstr ""
@ -1253,7 +1253,7 @@ msgstr ""
#: company/templates/company/supplier_part_base.html:6 #: company/templates/company/supplier_part_base.html:6
#: company/templates/company/supplier_part_base.html:19 stock/models.py:344 #: company/templates/company/supplier_part_base.html:19 stock/models.py:344
#: stock/templates/stock/item_base.html:278 templates/js/company.js:178 #: stock/templates/stock/item_base.html:278 templates/js/company.js:180
msgid "Supplier Part" msgid "Supplier Part"
msgstr "" msgstr ""
@ -1287,7 +1287,7 @@ msgstr ""
#: company/templates/company/supplier_part_base.html:88 #: company/templates/company/supplier_part_base.html:88
#: company/templates/company/supplier_part_detail.html:31 part/bom.py:173 #: company/templates/company/supplier_part_detail.html:31 part/bom.py:173
#: templates/js/company.js:202 #: templates/js/company.js:204
msgid "MPN" msgid "MPN"
msgstr "" msgstr ""
@ -1310,7 +1310,7 @@ msgid "Pricing Information"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_pricing.html:17 company/views.py:410 #: company/templates/company/supplier_part_pricing.html:17 company/views.py:410
#: part/templates/part/sale_prices.html:13 part/views.py:2228 #: part/templates/part/sale_prices.html:13 part/views.py:2229
msgid "Add Price Break" msgid "Add Price Break"
msgstr "" msgstr ""
@ -1320,7 +1320,7 @@ msgid "No price break information found"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_pricing.html:80 #: company/templates/company/supplier_part_pricing.html:80
#: part/templates/part/sale_prices.html:85 templates/js/bom.js:207 #: part/templates/part/sale_prices.html:85 templates/js/bom.js:225
msgid "Price" msgid "Price"
msgstr "" msgstr ""
@ -1345,8 +1345,8 @@ msgstr ""
#: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/supplier_part_tabs.html:8
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18
#: stock/templates/stock/location.html:17 templates/InvenTree/search.html:155 #: stock/templates/stock/location.html:17 templates/InvenTree/search.html:155
#: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:124 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:153
#: templates/js/part.js:372 templates/js/stock.js:453 templates/navbar.html:22 #: templates/js/part.js:411 templates/js/stock.js:453 templates/navbar.html:22
#: users/models.py:29 #: users/models.py:29
msgid "Stock" msgid "Stock"
msgstr "" msgstr ""
@ -1437,15 +1437,15 @@ msgstr ""
msgid "Delete Supplier Part" msgid "Delete Supplier Part"
msgstr "" msgstr ""
#: company/views.py:416 part/views.py:2234 #: company/views.py:416 part/views.py:2235
msgid "Added new price break" msgid "Added new price break"
msgstr "" msgstr ""
#: company/views.py:453 part/views.py:2279 #: company/views.py:453 part/views.py:2280
msgid "Edit Price Break" msgid "Edit Price Break"
msgstr "" msgstr ""
#: company/views.py:469 part/views.py:2295 #: company/views.py:469 part/views.py:2296
msgid "Delete Price Break" msgid "Delete Price Break"
msgstr "" msgstr ""
@ -1538,7 +1538,7 @@ msgstr ""
msgid "Date order was completed" msgid "Date order was completed"
msgstr "" msgstr ""
#: order/models.py:185 order/models.py:259 part/views.py:1345 #: order/models.py:185 order/models.py:259 part/views.py:1346
#: stock/models.py:241 stock/models.py:805 #: stock/models.py:241 stock/models.py:805
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "" msgstr ""
@ -1785,7 +1785,7 @@ msgid "Select parts to receive against this order"
msgstr "" msgstr ""
#: order/templates/order/receive_parts.html:21 #: order/templates/order/receive_parts.html:21
#: part/templates/part/part_base.html:145 templates/js/part.js:388 #: part/templates/part/part_base.html:145 templates/js/part.js:427
msgid "On Order" msgid "On Order"
msgstr "" msgstr ""
@ -2257,7 +2257,7 @@ msgstr ""
msgid "Test with this name already exists for this part" msgid "Test with this name already exists for this part"
msgstr "" msgstr ""
#: part/models.py:1389 templates/js/part.js:521 templates/js/stock.js:92 #: part/models.py:1389 templates/js/part.js:560 templates/js/stock.js:92
msgid "Test Name" msgid "Test Name"
msgstr "" msgstr ""
@ -2277,7 +2277,7 @@ msgstr ""
msgid "Is this test required to pass?" msgid "Is this test required to pass?"
msgstr "" msgstr ""
#: part/models.py:1407 templates/js/part.js:538 #: part/models.py:1407 templates/js/part.js:577
msgid "Requires Value" msgid "Requires Value"
msgstr "" msgstr ""
@ -2285,7 +2285,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?" msgid "Does this test require a value when adding a test result?"
msgstr "" msgstr ""
#: part/models.py:1413 templates/js/part.js:545 #: part/models.py:1413 templates/js/part.js:584
msgid "Requires Attachment" msgid "Requires Attachment"
msgstr "" msgstr ""
@ -2349,7 +2349,7 @@ msgstr ""
msgid "BOM line checksum" msgid "BOM line checksum"
msgstr "" msgstr ""
#: part/models.py:1612 part/views.py:1351 part/views.py:1403 #: part/models.py:1612 part/views.py:1352 part/views.py:1404
#: stock/models.py:231 #: stock/models.py:231
msgid "Quantity must be integer value for trackable parts" msgid "Quantity must be integer value for trackable parts"
msgstr "" msgstr ""
@ -2432,7 +2432,7 @@ msgstr ""
msgid "Validate" msgid "Validate"
msgstr "" msgstr ""
#: part/templates/part/bom.html:61 part/views.py:1642 #: part/templates/part/bom.html:61 part/views.py:1643
msgid "Export Bill of Materials" msgid "Export Bill of Materials"
msgstr "" msgstr ""
@ -2524,7 +2524,7 @@ msgstr ""
msgid "All parts" msgid "All parts"
msgstr "" msgstr ""
#: part/templates/part/category.html:24 part/views.py:2045 #: part/templates/part/category.html:24 part/views.py:2046
msgid "Create new part category" msgid "Create new part category"
msgstr "" msgstr ""
@ -2604,16 +2604,28 @@ msgstr ""
msgid "Parametric Table" msgid "Parametric Table"
msgstr "" msgstr ""
#: part/templates/part/create_part.html:11
msgid "Possible Matching Parts"
msgstr ""
#: part/templates/part/create_part.html:12
msgid "The new part may be a duplicate of these existing parts"
msgstr ""
#: part/templates/part/create_part.html:16
msgid "match"
msgstr ""
#: part/templates/part/detail.html:9 #: part/templates/part/detail.html:9
msgid "Part Details" msgid "Part Details"
msgstr "" msgstr ""
#: part/templates/part/detail.html:25 part/templates/part/part_base.html:95 #: part/templates/part/detail.html:25 part/templates/part/part_base.html:95
#: templates/js/part.js:112 #: templates/js/part.js:141
msgid "IPN" msgid "IPN"
msgstr "" msgstr ""
#: part/templates/part/detail.html:32 templates/js/part.js:116 #: part/templates/part/detail.html:32 templates/js/part.js:145
msgid "Revision" msgid "Revision"
msgstr "" msgstr ""
@ -2630,7 +2642,7 @@ msgid "Variant Of"
msgstr "" msgstr ""
#: part/templates/part/detail.html:70 part/templates/part/set_category.html:15 #: part/templates/part/detail.html:70 part/templates/part/set_category.html:15
#: templates/js/part.js:359 #: templates/js/part.js:398
msgid "Category" msgid "Category"
msgstr "" msgstr ""
@ -2658,7 +2670,7 @@ msgstr ""
msgid "Responsible User" msgid "Responsible User"
msgstr "" msgstr ""
#: part/templates/part/detail.html:136 #: part/templates/part/detail.html:136 templates/js/table_filters.js:27
msgid "Virtual" msgid "Virtual"
msgstr "" msgstr ""
@ -2671,7 +2683,7 @@ msgid "Part is not a virtual part"
msgstr "" msgstr ""
#: part/templates/part/detail.html:145 stock/forms.py:248 #: part/templates/part/detail.html:145 stock/forms.py:248
#: templates/js/table_filters.js:212 #: templates/js/table_filters.js:23 templates/js/table_filters.js:243
msgid "Template" msgid "Template"
msgstr "" msgstr ""
@ -2683,7 +2695,7 @@ msgstr ""
msgid "Part is not a template part" msgid "Part is not a template part"
msgstr "" msgstr ""
#: part/templates/part/detail.html:154 templates/js/table_filters.js:224 #: part/templates/part/detail.html:154 templates/js/table_filters.js:255
msgid "Assembly" msgid "Assembly"
msgstr "" msgstr ""
@ -2695,7 +2707,7 @@ msgstr ""
msgid "Part cannot be assembled from other parts" msgid "Part cannot be assembled from other parts"
msgstr "" msgstr ""
#: part/templates/part/detail.html:163 templates/js/table_filters.js:228 #: part/templates/part/detail.html:163 templates/js/table_filters.js:259
msgid "Component" msgid "Component"
msgstr "" msgstr ""
@ -2707,7 +2719,8 @@ msgstr ""
msgid "Part cannot be used in assemblies" msgid "Part cannot be used in assemblies"
msgstr "" msgstr ""
#: part/templates/part/detail.html:172 templates/js/table_filters.js:240 #: part/templates/part/detail.html:172 templates/js/table_filters.js:31
#: templates/js/table_filters.js:271
msgid "Trackable" msgid "Trackable"
msgstr "" msgstr ""
@ -2727,7 +2740,7 @@ msgstr ""
msgid "Part can be purchased from external suppliers" msgid "Part can be purchased from external suppliers"
msgstr "" msgstr ""
#: part/templates/part/detail.html:190 templates/js/table_filters.js:236 #: part/templates/part/detail.html:190 templates/js/table_filters.js:267
msgid "Salable" msgid "Salable"
msgstr "" msgstr ""
@ -2739,8 +2752,8 @@ msgstr ""
msgid "Part cannot be sold to customers" msgid "Part cannot be sold to customers"
msgstr "" msgstr ""
#: part/templates/part/detail.html:199 templates/js/table_filters.js:33 #: part/templates/part/detail.html:199 templates/js/table_filters.js:19
#: templates/js/table_filters.js:207 #: templates/js/table_filters.js:55 templates/js/table_filters.js:238
msgid "Active" msgid "Active"
msgstr "" msgstr ""
@ -2794,8 +2807,9 @@ msgstr ""
msgid "This part is a variant of" msgid "This part is a variant of"
msgstr "" msgstr ""
#: part/templates/part/part_base.html:36 templates/js/company.js:153 #: part/templates/part/part_base.html:36 templates/js/bom.js:152
#: templates/js/part.js:336 #: templates/js/company.js:155 templates/js/part.js:133
#: templates/js/part.js:375
msgid "Inactive" msgid "Inactive"
msgstr "" msgstr ""
@ -2845,7 +2859,7 @@ msgstr ""
msgid "Delete part" msgid "Delete part"
msgstr "" msgstr ""
#: part/templates/part/part_base.html:124 templates/js/table_filters.js:89 #: part/templates/part/part_base.html:124 templates/js/table_filters.js:111
msgid "In Stock" msgid "In Stock"
msgstr "" msgstr ""
@ -2905,8 +2919,8 @@ msgstr ""
msgid "Part Stock" msgid "Part Stock"
msgstr "" msgstr ""
#: part/templates/part/stock_count.html:7 templates/js/bom.js:197 #: part/templates/part/stock_count.html:7 templates/js/bom.js:215
#: templates/js/part.js:396 #: templates/js/part.js:435
msgid "No Stock" msgid "No Stock"
msgstr "" msgstr ""
@ -2962,11 +2976,11 @@ msgstr ""
msgid "Part Variants" msgid "Part Variants"
msgstr "" msgstr ""
#: part/templates/part/variants.html:21 #: part/templates/part/variants.html:22
msgid "Create new variant" msgid "Create new variant"
msgstr "" msgstr ""
#: part/templates/part/variants.html:21 #: part/templates/part/variants.html:23
msgid "New Variant" msgid "New Variant"
msgstr "" msgstr ""
@ -3023,127 +3037,127 @@ msgstr ""
msgid "Copied part" msgid "Copied part"
msgstr "" msgstr ""
#: part/views.py:513 templates/js/stock.js:793 #: part/views.py:514 templates/js/stock.js:793
msgid "Create New Part" msgid "Create New Part"
msgstr "" msgstr ""
#: part/views.py:520 #: part/views.py:521
msgid "Created new part" msgid "Created new part"
msgstr "" msgstr ""
#: part/views.py:735 #: part/views.py:736
msgid "Part QR Code" msgid "Part QR Code"
msgstr "" msgstr ""
#: part/views.py:754 #: part/views.py:755
msgid "Upload Part Image" msgid "Upload Part Image"
msgstr "" msgstr ""
#: part/views.py:762 part/views.py:799 #: part/views.py:763 part/views.py:800
msgid "Updated part image" msgid "Updated part image"
msgstr "" msgstr ""
#: part/views.py:771 #: part/views.py:772
msgid "Select Part Image" msgid "Select Part Image"
msgstr "" msgstr ""
#: part/views.py:802 #: part/views.py:803
msgid "Part image not found" msgid "Part image not found"
msgstr "" msgstr ""
#: part/views.py:813 #: part/views.py:814
msgid "Edit Part Properties" msgid "Edit Part Properties"
msgstr "" msgstr ""
#: part/views.py:837 #: part/views.py:838
msgid "Validate BOM" msgid "Validate BOM"
msgstr "" msgstr ""
#: part/views.py:1004 #: part/views.py:1005
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "" msgstr ""
#: part/views.py:1354 #: part/views.py:1355
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "" msgstr ""
#: part/views.py:1379 part/views.py:1382 #: part/views.py:1380 part/views.py:1383
msgid "Select valid part" msgid "Select valid part"
msgstr "" msgstr ""
#: part/views.py:1388 #: part/views.py:1389
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "" msgstr ""
#: part/views.py:1426 #: part/views.py:1427
msgid "Select a part" msgid "Select a part"
msgstr "" msgstr ""
#: part/views.py:1432 #: part/views.py:1433
msgid "Selected part creates a circular BOM" msgid "Selected part creates a circular BOM"
msgstr "" msgstr ""
#: part/views.py:1436 #: part/views.py:1437
msgid "Specify quantity" msgid "Specify quantity"
msgstr "" msgstr ""
#: part/views.py:1692 #: part/views.py:1693
msgid "Confirm Part Deletion" msgid "Confirm Part Deletion"
msgstr "" msgstr ""
#: part/views.py:1701 #: part/views.py:1702
msgid "Part was deleted" msgid "Part was deleted"
msgstr "" msgstr ""
#: part/views.py:1710 #: part/views.py:1711
msgid "Part Pricing" msgid "Part Pricing"
msgstr "" msgstr ""
#: part/views.py:1836 #: part/views.py:1837
msgid "Create Part Parameter Template" msgid "Create Part Parameter Template"
msgstr "" msgstr ""
#: part/views.py:1846 #: part/views.py:1847
msgid "Edit Part Parameter Template" msgid "Edit Part Parameter Template"
msgstr "" msgstr ""
#: part/views.py:1855 #: part/views.py:1856
msgid "Delete Part Parameter Template" msgid "Delete Part Parameter Template"
msgstr "" msgstr ""
#: part/views.py:1865 #: part/views.py:1866
msgid "Create Part Parameter" msgid "Create Part Parameter"
msgstr "" msgstr ""
#: part/views.py:1917 #: part/views.py:1918
msgid "Edit Part Parameter" msgid "Edit Part Parameter"
msgstr "" msgstr ""
#: part/views.py:1933 #: part/views.py:1934
msgid "Delete Part Parameter" msgid "Delete Part Parameter"
msgstr "" msgstr ""
#: part/views.py:1992 #: part/views.py:1993
msgid "Edit Part Category" msgid "Edit Part Category"
msgstr "" msgstr ""
#: part/views.py:2029 #: part/views.py:2030
msgid "Delete Part Category" msgid "Delete Part Category"
msgstr "" msgstr ""
#: part/views.py:2037 #: part/views.py:2038
msgid "Part category was deleted" msgid "Part category was deleted"
msgstr "" msgstr ""
#: part/views.py:2100 #: part/views.py:2101
msgid "Create BOM item" msgid "Create BOM Item"
msgstr "" msgstr ""
#: part/views.py:2168 #: part/views.py:2169
msgid "Edit BOM item" msgid "Edit BOM item"
msgstr "" msgstr ""
#: part/views.py:2218 #: part/views.py:2219
msgid "Confim BOM item deletion" msgid "Confim BOM item deletion"
msgstr "" msgstr ""
@ -3447,7 +3461,7 @@ msgstr ""
msgid "Result" msgid "Result"
msgstr "" msgstr ""
#: stock/models.py:1386 templates/js/table_filters.js:135 #: stock/models.py:1386 templates/js/table_filters.js:157
msgid "Test result" msgid "Test result"
msgstr "" msgstr ""
@ -4313,51 +4327,63 @@ msgstr ""
msgid "Barcode does not match Stock Item" msgid "Barcode does not match Stock Item"
msgstr "" msgstr ""
#: templates/js/bom.js:132 #: templates/js/bom.js:133 templates/js/part.js:117 templates/js/part.js:344
msgid "Trackable part"
msgstr ""
#: templates/js/bom.js:137 templates/js/part.js:121 templates/js/part.js:348
msgid "Virtual part"
msgstr ""
#: templates/js/bom.js:141
msgid "Templat part"
msgstr ""
#: templates/js/bom.js:146
msgid "Open subassembly" msgid "Open subassembly"
msgstr "" msgstr ""
#: templates/js/bom.js:173 #: templates/js/bom.js:191
msgid "Optional" msgid "Optional"
msgstr "" msgstr ""
#: templates/js/bom.js:188 templates/js/build.js:133 #: templates/js/bom.js:206 templates/js/build.js:133
msgid "Available" msgid "Available"
msgstr "" msgstr ""
#: templates/js/bom.js:213 #: templates/js/bom.js:231
msgid "No pricing available" msgid "No pricing available"
msgstr "" msgstr ""
#: templates/js/bom.js:232 #: templates/js/bom.js:250
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
#: templates/js/bom.js:240 #: templates/js/bom.js:258
msgid "Validate BOM Item" msgid "Validate BOM Item"
msgstr "" msgstr ""
#: templates/js/bom.js:242 #: templates/js/bom.js:260
msgid "This line has been validated" msgid "This line has been validated"
msgstr "" msgstr ""
#: templates/js/bom.js:244 #: templates/js/bom.js:262
msgid "Edit BOM Item" msgid "Edit BOM Item"
msgstr "" msgstr ""
#: templates/js/bom.js:246 #: templates/js/bom.js:264
msgid "Delete BOM Item" msgid "Delete BOM Item"
msgstr "" msgstr ""
#: templates/js/bom.js:478 #: templates/js/bom.js:496
msgid "INACTIVE" msgid "INACTIVE"
msgstr "" msgstr ""
#: templates/js/bom.js:492 #: templates/js/bom.js:510
msgid "Uses" msgid "Uses"
msgstr "" msgstr ""
#: templates/js/bom.js:503 #: templates/js/bom.js:521
msgid "No matching parts found" msgid "No matching parts found"
msgstr "" msgstr ""
@ -4381,19 +4407,21 @@ msgstr ""
msgid "No company information found" msgid "No company information found"
msgstr "" msgstr ""
#: templates/js/company.js:128 #: templates/js/company.js:129
msgid "No supplier parts found" msgid "No supplier parts found"
msgstr "" msgstr ""
#: templates/js/company.js:145 templates/js/part.js:314 #: templates/js/company.js:147 templates/js/part.js:125
#: templates/js/part.js:353
msgid "Template part" msgid "Template part"
msgstr "" msgstr ""
#: templates/js/company.js:149 templates/js/part.js:318 #: templates/js/company.js:151 templates/js/part.js:129
#: templates/js/part.js:357
msgid "Assembled part" msgid "Assembled part"
msgstr "" msgstr ""
#: templates/js/company.js:206 #: templates/js/company.js:208
msgid "Link" msgid "Link"
msgstr "" msgstr ""
@ -4413,59 +4441,59 @@ msgstr ""
msgid "Shipment Date" msgid "Shipment Date"
msgstr "" msgstr ""
#: templates/js/part.js:137 #: templates/js/part.js:166
msgid "No variants found" msgid "No variants found"
msgstr "" msgstr ""
#: templates/js/part.js:223 templates/js/part.js:411 #: templates/js/part.js:252 templates/js/part.js:450
msgid "No parts found" msgid "No parts found"
msgstr "" msgstr ""
#: templates/js/part.js:275 templates/js/stock.js:409 templates/js/stock.js:966 #: templates/js/part.js:304 templates/js/stock.js:409 templates/js/stock.js:966
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: templates/js/part.js:322 #: templates/js/part.js:361
msgid "Starred part" msgid "Starred part"
msgstr "" msgstr ""
#: templates/js/part.js:326 #: templates/js/part.js:365
msgid "Salable part" msgid "Salable part"
msgstr "" msgstr ""
#: templates/js/part.js:365 #: templates/js/part.js:404
msgid "No category" msgid "No category"
msgstr "" msgstr ""
#: templates/js/part.js:383 templates/js/table_filters.js:220 #: templates/js/part.js:422 templates/js/table_filters.js:251
msgid "Low stock" msgid "Low stock"
msgstr "" msgstr ""
#: templates/js/part.js:392 #: templates/js/part.js:431
msgid "Building" msgid "Building"
msgstr "" msgstr ""
#: templates/js/part.js:471 #: templates/js/part.js:510
msgid "YES" msgid "YES"
msgstr "" msgstr ""
#: templates/js/part.js:473 #: templates/js/part.js:512
msgid "NO" msgid "NO"
msgstr "" msgstr ""
#: templates/js/part.js:507 #: templates/js/part.js:546
msgid "No test templates matching query" msgid "No test templates matching query"
msgstr "" msgstr ""
#: templates/js/part.js:558 templates/js/stock.js:63 #: templates/js/part.js:597 templates/js/stock.js:63
msgid "Edit test result" msgid "Edit test result"
msgstr "" msgstr ""
#: templates/js/part.js:559 templates/js/stock.js:64 #: templates/js/part.js:598 templates/js/stock.js:64
msgid "Delete test result" msgid "Delete test result"
msgstr "" msgstr ""
#: templates/js/part.js:565 #: templates/js/part.js:604
msgid "This test is defined for a parent part" msgid "This test is defined for a parent part"
msgstr "" msgstr ""
@ -4529,7 +4557,7 @@ msgstr ""
msgid "Stock item is lost" msgid "Stock item is lost"
msgstr "" msgstr ""
#: templates/js/stock.js:498 templates/js/table_filters.js:84 #: templates/js/stock.js:498 templates/js/table_filters.js:106
msgid "Depleted" msgid "Depleted"
msgstr "" msgstr ""
@ -4553,7 +4581,7 @@ msgstr ""
msgid "Serial" msgid "Serial"
msgstr "" msgstr ""
#: templates/js/stock.js:997 templates/js/table_filters.js:94 #: templates/js/stock.js:997 templates/js/table_filters.js:116
msgid "Installed" msgid "Installed"
msgstr "" msgstr ""
@ -4561,132 +4589,132 @@ msgstr ""
msgid "Install item" msgid "Install item"
msgstr "" msgstr ""
#: templates/js/table_filters.js:19 #: templates/js/table_filters.js:41
msgid "Trackable Part" msgid "Trackable Part"
msgstr "" msgstr ""
#: templates/js/table_filters.js:23 #: templates/js/table_filters.js:45
msgid "Validated" msgid "Validated"
msgstr "" msgstr ""
#: templates/js/table_filters.js:43 templates/js/table_filters.js:104 #: templates/js/table_filters.js:65 templates/js/table_filters.js:126
msgid "Is Serialized" msgid "Is Serialized"
msgstr "" msgstr ""
#: templates/js/table_filters.js:46 templates/js/table_filters.js:111 #: templates/js/table_filters.js:68 templates/js/table_filters.js:133
msgid "Serial number GTE" msgid "Serial number GTE"
msgstr "" msgstr ""
#: templates/js/table_filters.js:47 templates/js/table_filters.js:112 #: templates/js/table_filters.js:69 templates/js/table_filters.js:134
msgid "Serial number greater than or equal to" msgid "Serial number greater than or equal to"
msgstr "" msgstr ""
#: templates/js/table_filters.js:50 templates/js/table_filters.js:115 #: templates/js/table_filters.js:72 templates/js/table_filters.js:137
msgid "Serial number LTE" msgid "Serial number LTE"
msgstr "" msgstr ""
#: templates/js/table_filters.js:51 templates/js/table_filters.js:116 #: templates/js/table_filters.js:73 templates/js/table_filters.js:138
msgid "Serial number less than or equal to" msgid "Serial number less than or equal to"
msgstr "" msgstr ""
#: templates/js/table_filters.js:54 templates/js/table_filters.js:55 #: templates/js/table_filters.js:76 templates/js/table_filters.js:77
#: templates/js/table_filters.js:107 templates/js/table_filters.js:108 #: templates/js/table_filters.js:129 templates/js/table_filters.js:130
msgid "Serial number" msgid "Serial number"
msgstr "" msgstr ""
#: templates/js/table_filters.js:59 templates/js/table_filters.js:125 #: templates/js/table_filters.js:81 templates/js/table_filters.js:147
msgid "Batch code" msgid "Batch code"
msgstr "" msgstr ""
#: templates/js/table_filters.js:69 #: templates/js/table_filters.js:91 templates/js/table_filters.js:218
msgid "Active parts" msgid "Active parts"
msgstr "" msgstr ""
#: templates/js/table_filters.js:70 #: templates/js/table_filters.js:92
msgid "Show stock for active parts" msgid "Show stock for active parts"
msgstr "" msgstr ""
#: templates/js/table_filters.js:74 #: templates/js/table_filters.js:96
msgid "Is allocated" msgid "Is allocated"
msgstr "" msgstr ""
#: templates/js/table_filters.js:75 #: templates/js/table_filters.js:97
msgid "Item has been alloacted" msgid "Item has been alloacted"
msgstr "" msgstr ""
#: templates/js/table_filters.js:79 #: templates/js/table_filters.js:101
msgid "Include sublocations" msgid "Include sublocations"
msgstr "" msgstr ""
#: templates/js/table_filters.js:80 #: templates/js/table_filters.js:102
msgid "Include stock in sublocations" msgid "Include stock in sublocations"
msgstr "" msgstr ""
#: templates/js/table_filters.js:85 #: templates/js/table_filters.js:107
msgid "Show stock items which are depleted" msgid "Show stock items which are depleted"
msgstr "" msgstr ""
#: templates/js/table_filters.js:90 #: templates/js/table_filters.js:112
msgid "Show items which are in stock" msgid "Show items which are in stock"
msgstr "" msgstr ""
#: templates/js/table_filters.js:95 #: templates/js/table_filters.js:117
msgid "Show stock items which are installed in another item" msgid "Show stock items which are installed in another item"
msgstr "" msgstr ""
#: templates/js/table_filters.js:99 #: templates/js/table_filters.js:121
msgid "Sent to customer" msgid "Sent to customer"
msgstr "" msgstr ""
#: templates/js/table_filters.js:100 #: templates/js/table_filters.js:122
msgid "Show items which have been assigned to a customer" msgid "Show items which have been assigned to a customer"
msgstr "" msgstr ""
#: templates/js/table_filters.js:120 templates/js/table_filters.js:121 #: templates/js/table_filters.js:142 templates/js/table_filters.js:143
msgid "Stock status" msgid "Stock status"
msgstr "" msgstr ""
#: templates/js/table_filters.js:154 #: templates/js/table_filters.js:176
msgid "Build status" msgid "Build status"
msgstr "" msgstr ""
#: templates/js/table_filters.js:169 templates/js/table_filters.js:182 #: templates/js/table_filters.js:191 templates/js/table_filters.js:204
msgid "Order status" msgid "Order status"
msgstr "" msgstr ""
#: templates/js/table_filters.js:174 templates/js/table_filters.js:187 #: templates/js/table_filters.js:196 templates/js/table_filters.js:209
msgid "Outstanding" msgid "Outstanding"
msgstr "" msgstr ""
#: templates/js/table_filters.js:197 #: templates/js/table_filters.js:228
msgid "Include subcategories" msgid "Include subcategories"
msgstr "" msgstr ""
#: templates/js/table_filters.js:198 #: templates/js/table_filters.js:229
msgid "Include parts in subcategories" msgid "Include parts in subcategories"
msgstr "" msgstr ""
#: templates/js/table_filters.js:202 #: templates/js/table_filters.js:233
msgid "Has IPN" msgid "Has IPN"
msgstr "" msgstr ""
#: templates/js/table_filters.js:203 #: templates/js/table_filters.js:234
msgid "Part has internal part number" msgid "Part has internal part number"
msgstr "" msgstr ""
#: templates/js/table_filters.js:208 #: templates/js/table_filters.js:239
msgid "Show active parts" msgid "Show active parts"
msgstr "" msgstr ""
#: templates/js/table_filters.js:216 #: templates/js/table_filters.js:247
msgid "Stock available" msgid "Stock available"
msgstr "" msgstr ""
#: templates/js/table_filters.js:232 #: templates/js/table_filters.js:263
msgid "Starred" msgid "Starred"
msgstr "" msgstr ""
#: templates/js/table_filters.js:244 #: templates/js/table_filters.js:275
msgid "Purchasable" msgid "Purchasable"
msgstr "" msgstr ""

View File

@ -461,8 +461,8 @@ class PartList(generics.ListCreateAPIView):
else: else:
queryset = queryset.exclude(pk__in=starred_parts) queryset = queryset.exclude(pk__in=starred_parts)
# Cascade? # Cascade? (Default = True)
cascade = str2bool(params.get('cascade', None)) cascade = str2bool(params.get('cascade', True))
# Does the user wish to filter by category? # Does the user wish to filter by category?
cat_id = params.get('category', None) cat_id = params.get('category', None)

View File

@ -245,7 +245,7 @@ def match_part_names(match, threshold=80, reverse=True, compare_length=False):
if ratio >= threshold: if ratio >= threshold:
matches.append({ matches.append({
'part': part, 'part': part,
'ratio': ratio 'ratio': round(ratio, 1)
}) })
matches = sorted(matches, key=lambda item: item['ratio'], reverse=reverse) matches = sorted(matches, key=lambda item: item['ratio'], reverse=reverse)

View File

@ -1,19 +1,23 @@
{% extends "modal_form.html" %} {% extends "modal_form.html" %}
{% load inventree_extras %}
{% load i18n %}
{% block pre_form_content %} {% block pre_form_content %}
{{ block.super }} {{ block.super }}
{% if matches %} {% if matches %}
<b>Possible Matching Parts</b> <div class='alert alert-block alert-warning'>
<p>The new part may be a duplicate of these existing parts:</p> <b>{% trans "Possible Matching Parts" %}</b>
<ul class='list-group'> <p>{% trans "The new part may be a duplicate of these existing parts" %}:</p>
{% for match in matches %} <ul class='list-group'>
<li class='list-group-item list-group-item-condensed'> {% for match in matches %}
{{ match.part.full_name }} - <i>{{ match.part.description }}</i> ({{ match.ratio }}%) <li class='list-group-item list-group-item-condensed'>
</li> {{ match.part.full_name }} - <i>{{ match.part.description }}</i> ({% decimal match.ratio %}% {% trans "match" %})
{% endfor %} </li>
{% endfor %}
</ul> </ul>
</div>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View File

@ -15,7 +15,7 @@
<table class='table table-striped'> <table class='table table-striped'>
<col width='25'> <col width='25'>
<tr> <tr>
<td></td> <td><span class='fas fa-font'></span></td>
<td><b>{% trans "Part name" %}</b></td> <td><b>{% trans "Part name" %}</b></td>
<td>{{ part.name }}</td> <td>{{ part.name }}</td>
</tr> </tr>
@ -28,7 +28,7 @@
{% endif %} {% endif %}
{% if part.revision %} {% if part.revision %}
<tr> <tr>
<td></td> <td><span class='fas fa-code-branch'></span></td>
<td><b>{% trans "Revision" %}</b></td> <td><b>{% trans "Revision" %}</b></td>
<td>{{ part.revision }}</td> <td>{{ part.revision }}</td>
</tr> </tr>
@ -132,7 +132,9 @@
</div> </div>
<div class='col-sm-6'> <div class='col-sm-6'>
<table class='table table-striped'> <table class='table table-striped'>
<col width='25'>
<tr> <tr>
<td><span class='fas fa-ghost'%></span></td>
<td><b>{% trans "Virtual" %}</b></td> <td><b>{% trans "Virtual" %}</b></td>
<td>{% include "slide.html" with state=part.virtual field='virtual' %}</td> <td>{% include "slide.html" with state=part.virtual field='virtual' %}</td>
{% if part.virtual %} {% if part.virtual %}
@ -142,6 +144,7 @@
{% endif %} {% endif %}
</tr> </tr>
<tr> <tr>
<td><span class='fas fa-clone'></span></td>
<td><b>{% trans "Template" %}</b></td> <td><b>{% trans "Template" %}</b></td>
<td>{% include "slide.html" with state=part.is_template field='is_template' %}</td> <td>{% include "slide.html" with state=part.is_template field='is_template' %}</td>
{% if part.is_template %} {% if part.is_template %}
@ -151,6 +154,7 @@
{% endif %} {% endif %}
</tr> </tr>
<tr> <tr>
<td><span class='fas fa-tools'></span></td>
<td><b>{% trans "Assembly" %}</b></td> <td><b>{% trans "Assembly" %}</b></td>
<td>{% include "slide.html" with state=part.assembly field='assembly' %}</td> <td>{% include "slide.html" with state=part.assembly field='assembly' %}</td>
{% if part.assembly %} {% if part.assembly %}
@ -160,6 +164,7 @@
{% endif %} {% endif %}
</tr> </tr>
<tr> <tr>
<td><span class='fas fa-th'></span></td>
<td><b>{% trans "Component" %}</b></td> <td><b>{% trans "Component" %}</b></td>
<td>{% include "slide.html" with state=part.component field='component' %}</td> <td>{% include "slide.html" with state=part.component field='component' %}</td>
{% if part.component %} {% if part.component %}
@ -169,6 +174,7 @@
{% endif %} {% endif %}
</tr> </tr>
<tr> <tr>
<td><span class='fas fa-directions'></span></td>
<td><b>{% trans "Trackable" %}</b></td> <td><b>{% trans "Trackable" %}</b></td>
<td>{% include "slide.html" with state=part.trackable field='trackable' %}</td> <td>{% include "slide.html" with state=part.trackable field='trackable' %}</td>
{% if part.trackable %} {% if part.trackable %}
@ -178,6 +184,7 @@
{% endif %} {% endif %}
</tr> </tr>
<tr> <tr>
<td><span class='fas fa-shopping-cart'></span></td>
<td><b>{% trans "Purchaseable" %}</b></td> <td><b>{% trans "Purchaseable" %}</b></td>
<td>{% include "slide.html" with state=part.purchaseable field='purchaseable' %}</td> <td>{% include "slide.html" with state=part.purchaseable field='purchaseable' %}</td>
{% if part.purchaseable %} {% if part.purchaseable %}
@ -187,6 +194,7 @@
{% endif %} {% endif %}
</tr> </tr>
<tr> <tr>
<td><span class='fas fa-dollar-sign'></span></td>
<td><b>{% trans "Salable" %}</b></td> <td><b>{% trans "Salable" %}</b></td>
<td>{% include "slide.html" with state=part.salable field='salable' %}</td> <td>{% include "slide.html" with state=part.salable field='salable' %}</td>
{% if part.salable %} {% if part.salable %}
@ -196,6 +204,13 @@
{% endif %} {% endif %}
</tr> </tr>
<tr> <tr>
<td>
{% if part.active %}
<span class='fas fa-check-square'></span>
{% else %}
<span class='fas fa-times-square'></span>
{% endif %}
</td>
<td><b>{% trans "Active" %}</b></td> <td><b>{% trans "Active" %}</b></td>
<td>{% include "slide.html" with state=part.active field='active' disabled=False %}</td> <td>{% include "slide.html" with state=part.active field='active' disabled=False %}</td>
{% if part.active %} {% if part.active %}

View File

@ -16,10 +16,17 @@
<hr> <hr>
<div id='button-toolbar'> <div id='button-toolbar'>
<div class='btn-group'> <div class='button-toolbar container-fluid'>
{% if part.is_template and part.active %} <div class='btn-group' role='group'>
<button class='btn btn-success' id='new-variant' title='{% trans "Create new variant" %}'>{% trans "New Variant" %}</button> {% if part.is_template and part.active %}
{% endif %} <button class='btn btn-success' id='new-variant' title='{% trans "Create new variant" %}'>
<span class='fas fa-plus-circle'></span> {% trans "New Variant" %}
</button>
{% endif %}
</div>
<div class='filter-list' id='filter-list-variants'>
<!-- Empty div (will be filled out with available BOM filters) -->
</div>
</div> </div>
</div> </div>

View File

@ -436,7 +436,8 @@ class PartDuplicate(AjaxCreateView):
matches = match_part_names(name) matches = match_part_names(name)
if len(matches) > 0: if len(matches) > 0:
context['matches'] = matches # Display the first five closest matches
context['matches'] = matches[:5]
# Enforce display of the checkbox # Enforce display of the checkbox
form.fields['confirm_creation'].widget = CheckboxInput() form.fields['confirm_creation'].widget = CheckboxInput()
@ -2097,7 +2098,7 @@ class BomItemCreate(AjaxCreateView):
model = BomItem model = BomItem
form_class = part_forms.EditBomItemForm form_class = part_forms.EditBomItemForm
ajax_template_name = 'modal_form.html' ajax_template_name = 'modal_form.html'
ajax_form_title = _('Create BOM item') ajax_form_title = _('Create BOM Item')
role_required = 'part.add' role_required = 'part.add'

View File

@ -234,7 +234,7 @@ InvenTree | {% trans "Stock Item" %} - {{ item }}
{% endif %} {% endif %}
{% if item.batch %} {% if item.batch %}
<tr> <tr>
<td></td> <td><span class='fas fa-layer-group'></span></td>
<td>{% trans "Batch" %}</td> <td>{% trans "Batch" %}</td>
<td>{{ item.batch }}</td> <td>{{ item.batch }}</td>
</tr> </tr>
@ -248,7 +248,7 @@ InvenTree | {% trans "Stock Item" %} - {{ item }}
{% endif %} {% endif %}
{% if item.purchase_order %} {% if item.purchase_order %}
<tr> <tr>
<td></td> <td><span class='fas fa-shopping-cart'></span></td>
<td>{% trans "Purchase Order" %}</td> <td>{% trans "Purchase Order" %}</td>
<td><a href="{% url 'po-detail' item.purchase_order.id %}">{{ item.purchase_order }}</a></td> <td><a href="{% url 'po-detail' item.purchase_order.id %}">{{ item.purchase_order }}</a></td>
</tr> </tr>

View File

@ -127,13 +127,31 @@ function loadBomTable(table, options) {
var url = `/part/${row.sub_part}/`; var url = `/part/${row.sub_part}/`;
var html = imageHoverIcon(row.sub_part_detail.thumbnail) + renderLink(row.sub_part_detail.full_name, url); var html = imageHoverIcon(row.sub_part_detail.thumbnail) + renderLink(row.sub_part_detail.full_name, url);
var sub_part = row.sub_part_detail;
if (sub_part.trackable) {
html += makeIconBadge('fa-directions', '{% trans "Trackable part" %}');
}
if (sub_part.virtual) {
html += makeIconBadge('fa-ghost', '{% trans "Virtual part" %}');
}
if (sub_part.is_template) {
html += makeIconBadge('fa-clone', '{% trans "Templat part" %}');
}
// Display an extra icon if this part is an assembly // Display an extra icon if this part is an assembly
if (row.sub_part_detail.assembly) { if (sub_part.assembly) {
var text = `<span title='{% trans "Open subassembly" %}' class='fas fa-stream label-right'></span>`; var text = `<span title='{% trans "Open subassembly" %}' class='fas fa-stream label-right'></span>`;
html += renderLink(text, `/part/${row.sub_part}/bom/`); html += renderLink(text, `/part/${row.sub_part}/bom/`);
} }
if (!sub_part.active) {
html += `<span class='label label-warning label-right'>{% trans "Inactive" %}</span>`;
}
return html; return html;
} }
} }

View File

@ -110,7 +110,7 @@ function loadSupplierPartTable(table, url, options) {
// Query parameters // Query parameters
var params = options.params || {}; var params = options.params || {};
// Load 'user' filters // Load filters
var filters = loadTableFilters("supplier-part"); var filters = loadTableFilters("supplier-part");
for (var key in params) { for (var key in params) {
@ -122,6 +122,7 @@ function loadSupplierPartTable(table, url, options) {
$(table).inventreeTable({ $(table).inventreeTable({
url: url, url: url,
method: 'get', method: 'get',
original: params,
queryParams: filters, queryParams: filters,
name: 'supplierparts', name: 'supplierparts',
groupBy: false, groupBy: false,
@ -135,6 +136,7 @@ function loadSupplierPartTable(table, url, options) {
sortable: true, sortable: true,
field: 'part_detail.full_name', field: 'part_detail.full_name',
title: '{% trans "Part" %}', title: '{% trans "Part" %}',
switchable: false,
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
var url = `/part/${row.part}/`; var url = `/part/${row.part}/`;

View File

@ -61,13 +61,22 @@ function toggleStar(options) {
} }
function loadPartVariantTable(table, partId, options) { function loadPartVariantTable(table, partId, options={}) {
/* Load part variant table /* Load part variant table
*/ */
var params = { var params = options.params || {};
ancestor: partId,
}; params.ancestor = partId;
// Load filters
var filters = loadTableFilters("variants");
for (var key in params) {
filters[key] = params[key];
}
setupFilterList("variants", $(table));
var cols = [ var cols = [
{ {
@ -104,16 +113,36 @@ function loadPartVariantTable(table, partId, options) {
html += imageHoverIcon(row.thumbnail); html += imageHoverIcon(row.thumbnail);
html += renderLink(name, `/part/${row.pk}/`); html += renderLink(name, `/part/${row.pk}/`);
if (row.trackable) {
html += makeIconBadge('fa-directions', '{% trans "Trackable part" %}');
}
if (row.virtual) {
html += makeIconBadge('fa-ghost', '{% trans "Virtual part" %}');
}
if (row.is_template) {
html += makeIconBadge('fa-clone', '{% trans "Template part" %}');
}
if (row.assembly) {
html += makeIconBadge('fa-tools', '{% trans "Assembled part" %}');
}
if (!row.active) {
html += `<span class='label label-warning label-right'>{% trans "Inactive" %}</span>`;
}
return html; return html;
}, },
}, },
{ {
field: 'IPN', field: 'IPN',
title: '{% trans 'IPN' %}', title: '{% trans "IPN" %}',
}, },
{ {
field: 'revision', field: 'revision',
title: '{% trans 'Revision' %}', title: '{% trans "Revision" %}',
}, },
{ {
field: 'description', field: 'description',
@ -133,7 +162,7 @@ function loadPartVariantTable(table, partId, options) {
name: 'partvariants', name: 'partvariants',
showColumns: true, showColumns: true,
original: params, original: params,
queryParams: params, queryParams: filters,
formatNoMatches: function() { return "{% trans "No variants found" %}"; }, formatNoMatches: function() { return "{% trans "No variants found" %}"; },
columns: cols, columns: cols,
treeEnable: true, treeEnable: true,
@ -272,7 +301,7 @@ function loadPartTable(table, url, options={}) {
if (options.checkbox) { if (options.checkbox) {
columns.push({ columns.push({
checkbox: true, checkbox: true,
title: '{% trans 'Select' %}', title: '{% trans "Select" %}',
searchable: false, searchable: false,
switchable: false, switchable: false,
}); });
@ -286,8 +315,9 @@ function loadPartTable(table, url, options={}) {
columns.push({ columns.push({
field: 'name', field: 'name',
title: '{% trans 'Part' %}', title: '{% trans "Part" %}',
sortable: true, sortable: true,
switchable: false,
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
var name = ''; var name = '';
@ -310,20 +340,29 @@ function loadPartTable(table, url, options={}) {
var display = imageHoverIcon(row.thumbnail) + renderLink(name, '/part/' + row.pk + '/'); var display = imageHoverIcon(row.thumbnail) + renderLink(name, '/part/' + row.pk + '/');
if (row.trackable) {
display += makeIconBadge('fa-directions', '{% trans "Trackable part" %}');
}
if (row.virtual) {
display += makeIconBadge('fa-ghost', '{% trans "Virtual part" %}');
}
if (row.is_template) { if (row.is_template) {
display += `<span class='fas fa-clone label-right' title='{% trans "Template part" %}'></span>`; display += makeIconBadge('fa-clone', '{% trans "Template part" %}');
} }
if (row.assembly) { if (row.assembly) {
display += `<span class='fas fa-tools label-right' title='{% trans "Assembled part" %}'></span>`; display += makeIconBadge('fa-tools', '{% trans "Assembled part" %}');
} }
if (row.starred) { if (row.starred) {
display += `<span class='fas fa-star label-right' title='{% trans "Starred part" %}'></span>`; display += makeIconBadge('fa-star', '{% trans "Starred part" %}');
} }
if (row.salable) { if (row.salable) {
display += `<span class='fas fa-dollar-sign label-right' title='{% trans "Salable part" %}'></span>`; display += makeIconBadge('fa-dollar-sign', title='{% trans "Salable part" %}');
} }
/* /*
@ -342,7 +381,7 @@ function loadPartTable(table, url, options={}) {
columns.push({ columns.push({
sortable: true, sortable: true,
field: 'description', field: 'description',
title: '{% trans 'Description' %}', title: '{% trans "Description" %}',
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
if (row.is_template) { if (row.is_template) {
@ -356,7 +395,7 @@ function loadPartTable(table, url, options={}) {
columns.push({ columns.push({
sortable: true, sortable: true,
field: 'category_detail', field: 'category_detail',
title: '{% trans 'Category' %}', title: '{% trans "Category" %}',
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
if (row.category) { if (row.category) {
return renderLink(value.pathstring, "/part/category/" + row.category + "/"); return renderLink(value.pathstring, "/part/category/" + row.category + "/");

View File

@ -11,6 +11,28 @@ function getAvailableTableFilters(tableKey) {
tableKey = tableKey.toLowerCase(); tableKey = tableKey.toLowerCase();
// Filters for "variant" table
if (tableKey == "variants") {
return {
active: {
type: 'bool',
title: '{% trans "Active" %}',
},
template: {
type: 'bool',
title: '{% trans "Template" %}',
},
virtual: {
type: 'bool',
title: '{% trans "Virtual" %}',
},
trackable: {
type: 'bool',
title: '{% trans "Trackable" %}',
},
};
}
// Filters for Bill of Materials table // Filters for Bill of Materials table
if (tableKey == "bom") { if (tableKey == "bom") {
return { return {
@ -189,6 +211,15 @@ function getAvailableTableFilters(tableKey) {
}; };
} }
if (tableKey == 'supplier-part') {
return {
active: {
type: 'bool',
title: '{% trans "Active parts" %}',
}
};
}
// Filters for the "Parts" table // Filters for the "Parts" table
if (tableKey == "parts") { if (tableKey == "parts") {
return { return {