diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index 8f62f2c852..dd77d26d1c 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -505,7 +505,12 @@ $("#barcode-unlink").click(function() { }); $("#barcode-scan-into-location").click(function() { - scanItemsIntoLocation([{{ item.id }}]); + + inventreeGet('{% url "api-stock-detail" item.pk %}', {}, { + success: function(item) { + scanItemsIntoLocation([item]); + } + }); }); function itemAdjust(action) { diff --git a/InvenTree/templates/js/translated/api.js b/InvenTree/templates/js/translated/api.js index eadf2e2afc..fccd6bf5ef 100644 --- a/InvenTree/templates/js/translated/api.js +++ b/InvenTree/templates/js/translated/api.js @@ -179,6 +179,11 @@ function showApiError(xhr, url) { var title = null; var message = null; + if (xhr.statusText == 'abort') { + // Don't show errors for requests which were intentionally aborted + return; + } + switch (xhr.status || 0) { // No response case 0: diff --git a/InvenTree/templates/js/translated/barcode.js b/InvenTree/templates/js/translated/barcode.js index 6be56d14f1..b08d9170bc 100644 --- a/InvenTree/templates/js/translated/barcode.js +++ b/InvenTree/templates/js/translated/barcode.js @@ -359,14 +359,13 @@ function unlinkBarcode(stockitem) { /* * Display dialog to check multiple stock items in to a stock location. */ -function barcodeCheckIn(location_id) { +function barcodeCheckIn(location_id, options={}) { var modal = '#modal-form'; // List of items we are going to checkin var items = []; - function reloadTable() { modalEnable(modal, false); @@ -389,10 +388,17 @@ function barcodeCheckIn(location_id) { `; items.forEach(function(item) { + + var location_info = `${item.location}`; + + if (item.location_detail) { + location_info = `${item.location_detail.name}`; + } + html += ` ${imageHoverIcon(item.part_detail.thumbnail)} ${item.part_detail.name} - ${item.location_detail.name} + ${location_info} ${item.quantity} ${makeIconButton('fa-times-circle icon-red', 'button-item-remove', item.pk, '{% trans "Remove stock item" %}')} `; @@ -469,6 +475,12 @@ function barcodeCheckIn(location_id) { data.items = entries; + // Prevent submission without any entries + if (entries.length == 0) { + showBarcodeMessage(modal, '{% trans "No barcode provided" %}', 'warning'); + return; + } + inventreePut( '{% url "api-stock-transfer" %}', data, @@ -477,15 +489,11 @@ function barcodeCheckIn(location_id) { success: function(response, status) { // Hide the modal $(modal).modal('hide'); - if (status == 'success' && 'success' in response) { - addCachedAlert(response.success); - location.reload(); + if (options.success) { + options.success(response); } else { - showMessage('{% trans "Error transferring stock" %}', { - style: 'danger', - icon: 'fas fa-times-circle', - }); + location.reload(); } } } @@ -533,7 +541,7 @@ function barcodeCheckIn(location_id) { /* * Display dialog to check a single stock item into a stock location */ -function scanItemsIntoLocation(item_id_list, options={}) { +function scanItemsIntoLocation(item_list, options={}) { var modal = options.modal || '#modal-form'; @@ -583,9 +591,10 @@ function scanItemsIntoLocation(item_id_list, options={}) { var items = []; - item_id_list.forEach(function(pk) { + item_list.forEach(function(item) { items.push({ - pk: pk, + pk: item.pk || item.id, + quantity: item.quantity, }); }); @@ -605,13 +614,10 @@ function scanItemsIntoLocation(item_id_list, options={}) { // First hide the modal $(modal).modal('hide'); - if (status == 'success' && 'success' in response) { - addCachedAlert(response.success); - location.reload(); + if (options.success) { + options.success(response); } else { - showMessage('{% trans "Error transferring stock" %}', { - style: 'danger', - }); + location.reload(); } } } diff --git a/InvenTree/templates/js/translated/search.js b/InvenTree/templates/js/translated/search.js index c0c1a07db7..4db310a062 100644 --- a/InvenTree/templates/js/translated/search.js +++ b/InvenTree/templates/js/translated/search.js @@ -89,7 +89,8 @@ function updateSearch() { var params = {}; if (user_settings.SEARCH_HIDE_INACTIVE_PARTS) { - params.active = false; + // Return *only* active parts + params.active = true; } // Search for matching parts diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index ade8bc5a0a..b7afdbca44 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -1972,7 +1972,7 @@ function loadStockTable(table, options) { var items = []; selections.forEach(function(item) { - items.push(item.pk); + items.push(item); }); scanItemsIntoLocation(items);