diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js index bba41ab980..c6dd0c7e8f 100644 --- a/InvenTree/templates/js/translated/part.js +++ b/InvenTree/templates/js/translated/part.js @@ -2368,6 +2368,38 @@ function loadPartTable(table, url, options={}) { }); return text; + }, + footerFormatter: function(data) { + // Display "total" stock quantity of all rendered rows + // Requires that all parts have the same base units! + + let total = 0; + let units = new Set(); + + data.forEach(function(row) { + units.add(row.units || null); + if (row.total_in_stock != null) { + total += row.total_in_stock; + } + }); + + if (data.length == 0) { + return '-'; + } else if (units.size > 1) { + return '-'; + } else { + let output = `${total}`; + + if (units.size == 1) { + let unit = units.values().next().value; + + if (unit) { + output += ` [${unit}]`; + } + } + + return output; + } } }); @@ -2443,6 +2475,7 @@ function loadPartTable(table, url, options={}) { showColumns: true, showCustomView: grid_view, showCustomViewButton: false, + showFooter: true, onPostBody: function() { grid_view = inventreeLoad('part-grid-view') == 1; if (grid_view) { diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index 94d77e8719..931d3e2600 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -2068,13 +2068,36 @@ function loadStockTable(table, options) { // Display "total" stock quantity of all rendered rows let total = 0; + // Keep track of the whether all units are the same + // If different units are found, we cannot aggregate the quantities + let units = new Set(); + data.forEach(function(row) { + + units.add(row.part_detail.units || null); + if (row.quantity != null) { total += row.quantity; } }); - return total; + if (data.length == 0) { + return '-'; + } else if (units.size > 1) { + return '-'; + } else { + let output = `${total}`; + + if (units.size == 1) { + let unit = units.values().next().value; + + if (unit) { + output += ` [${unit}]`; + } + } + + return output; + } } };