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 @@
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;