diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 2b4d28b064..40b3fa5cab 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -28,6 +28,8 @@
+ {% include "expand_rows.html" with label="sales-lines" %} + {% include "collapse_rows.html" with label="sales-lines" %} {% include "filter_list.html" with id="sales-order-lines" %}
diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index 52ff8c12ee..0909c02808 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -3427,6 +3427,15 @@ function loadSalesOrderLineItemTable(table, options={}) { // Show detail view if the PurchaseOrder is PENDING or SHIPPED var show_detail = pending || shipped; + // Add callbacks for expand / collapse buttons + $('#sales-lines-expand').click(function() { + $(table).bootstrapTable('expandAllRows'); + }); + + $('#sales-lines-collapse').click(function() { + $(table).bootstrapTable('collapseAllRows'); + }); + // Table columns to display var columns = [ /* @@ -3554,29 +3563,26 @@ function loadSalesOrderLineItemTable(table, options={}) { title: '{% trans "Available Stock" %}', formatter: function(value, row) { var available = row.available_stock; - var total = row.part_detail.stock; var required = Math.max(row.quantity - row.allocated - row.shipped, 0); var html = ''; - if (total > 0) { + if (available > 0) { var url = `/part/${row.part}/?display=part-stock`; var text = available; - if (total != available) { - text += ` / ${total}`; - } - html = renderLink(text, url); } else { html += `{% trans "No Stock Available" %}`; } - if (available >= required) { - html += ``; - } else { - html += ``; + if (required > 0) { + if (available >= required) { + html += ``; + } else { + html += ``; + } } return html;