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