diff --git a/app/Presenters/AccessoryPresenter.php b/app/Presenters/AccessoryPresenter.php index fece3e3c1..df855ba06 100644 --- a/app/Presenters/AccessoryPresenter.php +++ b/app/Presenters/AccessoryPresenter.php @@ -102,7 +102,7 @@ class AccessoryPresenter extends Presenter 'searchable' => true, 'sortable' => true, 'title' => trans('general.purchase_cost'), - 'footerFormatter' => 'sumFormatter', + 'footerFormatter' => 'sumFormatterQuantity', 'class' => 'text-right', ], [ 'field' => 'order_number', diff --git a/app/Presenters/ComponentPresenter.php b/app/Presenters/ComponentPresenter.php index 1b3a43ae2..ca0f310f5 100644 --- a/app/Presenters/ComponentPresenter.php +++ b/app/Presenters/ComponentPresenter.php @@ -101,7 +101,7 @@ class ComponentPresenter extends Presenter 'sortable' => true, 'title' => trans('general.purchase_cost'), 'visible' => true, - 'footerFormatter' => 'sumFormatter', + 'footerFormatter' => 'sumFormatterQuantity', 'class' => 'text-right', ], ]; diff --git a/app/Presenters/ConsumablePresenter.php b/app/Presenters/ConsumablePresenter.php index ba87e9aec..0fd88fe67 100644 --- a/app/Presenters/ConsumablePresenter.php +++ b/app/Presenters/ConsumablePresenter.php @@ -113,7 +113,7 @@ class ConsumablePresenter extends Presenter 'sortable' => true, 'title' => trans('general.purchase_cost'), 'visible' => true, - 'footerFormatter' => 'sumFormatter', + 'footerFormatter' => 'sumFormatterQuantity', 'class' => 'text-right', ], [ 'field' => 'change', diff --git a/app/Presenters/LicensePresenter.php b/app/Presenters/LicensePresenter.php index 3836c4cc6..cce2a8ecd 100644 --- a/app/Presenters/LicensePresenter.php +++ b/app/Presenters/LicensePresenter.php @@ -136,7 +136,7 @@ class LicensePresenter extends Presenter 'sortable' => true, 'visible' => false, 'title' => trans('general.purchase_cost'), - 'footerFormatter' => 'sumFormatter', + 'footerFormatter' => 'sumFormatterQuantity', 'class' => 'text-right', ], [ 'field' => 'purchase_order', diff --git a/resources/views/partials/bootstrap-table.blade.php b/resources/views/partials/bootstrap-table.blade.php index b0562fefe..6e69b9cc5 100644 --- a/resources/views/partials/bootstrap-table.blade.php +++ b/resources/views/partials/bootstrap-table.blade.php @@ -653,6 +653,31 @@ return 'not an array'; } + function sumFormatterQuantity(data){ + if(Array.isArray(data)) { + + // Prevents issues on page load where data is an empty array + if(data[0] == undefined){ + return 0.00 + } + // Check that we are actually trying to sum cost from a table + // that has a quantity column. We must perform this check to + // support licences which use seats instead of qty + if('qty' in data[0]) { + var multiplier = 'qty'; + } else if('seats' in data[0]) { + var multiplier = 'seats'; + } else { + return 'no quantity'; + } + var total_sum = data.reduce(function(sum, row) { + return (sum) + (cleanFloat(row["purchase_cost"])*row[multiplier] || 0); + }, 0); + return numberWithCommas(total_sum.toFixed(2)); + } + return 'not an array'; + } + function numberWithCommas(value) { if ((value) && ("{{$snipeSettings->digit_separator}}" == "1.234,56")){ var parts = value.toString().split(".");