diff --git a/InvenTree/static/script/inventree/api.js b/InvenTree/static/script/inventree/api.js index 7cd3c3d66c..a2f0e14814 100644 --- a/InvenTree/static/script/inventree/api.js +++ b/InvenTree/static/script/inventree/api.js @@ -46,6 +46,12 @@ function inventreeUpdate(url, data={}, options={}) { data["_is_final"] = true; } + var method = 'put'; + + if ('method' in options) { + method = options.method; + } + // Middleware token required for data update //var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val(); var csrftoken = getCookie('csrftoken'); @@ -55,7 +61,7 @@ function inventreeUpdate(url, data={}, options={}) { xhr.setRequestHeader('X-CSRFToken', csrftoken); }, url: url, - type: 'put', + type: method, data: data, dataType: 'json', success: function(response, status) { diff --git a/InvenTree/static/script/inventree/stock.js b/InvenTree/static/script/inventree/stock.js new file mode 100644 index 0000000000..77341fe363 --- /dev/null +++ b/InvenTree/static/script/inventree/stock.js @@ -0,0 +1,72 @@ + +function moveStock(rows, options) { + + var modal = '#modal-form'; + + if ('modal' in options) { + modal = options.modal; + } + + if (rows.length == 0) { + alert('No stock items selected'); + return; + } + + function doMove(location, parts) { + inventreeUpdate("/api/stock/move/", + { + location: location, + parts: parts + }, + { + success: function(response) { + closeModal(modal); + if (options.success) { + options.success(); + } + }, + error: function(error) { + alert('error!:\n' + error); + }, + method: 'post' + }); + } + + getStockLocations({}, + { + success: function(response) { + openModal(modal); + modalSetTitle(modal, "Move " + rows.length + " stock items"); + modalSetButtonText(modal, "Move"); + + // Extact part row info + var parts = []; + + for (i = 0; i < rows.length; i++) { + parts.push(rows[i].pk); + } + + var form = "