diff --git a/modules/item/back/methods/item-shelving/return.js b/modules/item/back/methods/item-shelving/return.js new file mode 100644 index 000000000..dc17719de --- /dev/null +++ b/modules/item/back/methods/item-shelving/return.js @@ -0,0 +1,77 @@ +module.exports = Self => { + Self.remoteMethod('return', { + description: 'Returns a list of items and possible alternative locations', + accessType: 'READ', + accepts: [{ + arg: 'shelvingFk', + type: 'string', + required: true, + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/return`, + verb: 'POST' + } + }); + + Self.return = async(shelvingFk, options) => { + const models = Self.app.models; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const filterItemShelvings = { + fields: ['id', 'visible', 'itemFk', 'packing', 'grouping', 'isChecked', 'shelvingFk'], + where: {shelvingFk}, + include: [ + { + relation: 'item', + scope: { + fields: ['longName', 'name', 'size'] + } + }, + { + relation: 'shelving', + + scope: { + include: { + fields: ['id', 'name', 'code'], + relation: 'parking', + } + + } + }, + ] + }; + + let itemShelvings = await models.ItemShelving.find(filterItemShelvings, myOptions); + + let alternatives = await models.ItemShelving.rawSql('CALL vn.itemShelving_getAlternatives(?)', [shelvingFk]); + console.log(alternatives); + + if (itemShelvings) { + itemShelvings = itemShelvings.map(itemShelving => { + const item = itemShelving.item(); + const shelving = itemShelving.shelving(); + const parking = shelving ? shelving.parking() : null; + + return { + item: itemShelving.itemFk, + description: item ? item.longName || `${item.name} ${item.size}` : '', + visible: itemShelving.visible, + stickers: Math.ceil(itemShelving.visible / itemShelving.packing), + packing: itemShelving.packing, + grouping: itemShelving.grouping, + code: parking ? parking.code : '', + id: itemShelving.id, + priority: shelving ? shelving.priority : 0, + isChecked: itemShelving.isChecked + }; + }); + } + }; +}; diff --git a/modules/item/back/models/item-shelving.js b/modules/item/back/models/item-shelving.js index 4684d49e2..e610aabec 100644 --- a/modules/item/back/models/item-shelving.js +++ b/modules/item/back/models/item-shelving.js @@ -2,4 +2,5 @@ module.exports = Self => { require('../methods/item-shelving/deleteItemShelvings')(Self); require('../methods/item-shelving/getInventory')(Self); require('../methods/item-shelving/makeMulti')(Self); + require('../methods/item-shelving/return')(Self); }; diff --git a/modules/item/back/models/item-shelving.json b/modules/item/back/models/item-shelving.json index 61d05539e..bf9e5e4b1 100644 --- a/modules/item/back/models/item-shelving.json +++ b/modules/item/back/models/item-shelving.json @@ -51,7 +51,8 @@ "shelving": { "type": "belongsTo", "model": "Shelving", - "foreignKey": "shelvingFk" - } + "foreignKey": "shelvingFk", + "primaryKey": "code" + } } }