diff --git a/modules/item/back/methods/item-barcode/specs/toItem.spec.js b/modules/item/back/methods/item-barcode/specs/toItem.spec.js new file mode 100644 index 000000000..9e81dc590 --- /dev/null +++ b/modules/item/back/methods/item-barcode/specs/toItem.spec.js @@ -0,0 +1,10 @@ +const app = require('vn-loopback/server/server'); + +describe('item-barcode toItem()', () => { + it('should return the same number if there is a barcode and a item with the same ID', async() => { + let barcode = 3; + let result = await app.models.ItemBarcode.toItem(barcode); + + expect(result).toBe(3); + }); +}); diff --git a/modules/item/back/methods/item-barcode/toItem.js b/modules/item/back/methods/item-barcode/toItem.js new file mode 100644 index 000000000..0fbbf4508 --- /dev/null +++ b/modules/item/back/methods/item-barcode/toItem.js @@ -0,0 +1,28 @@ +module.exports = Self => { + Self.remoteMethod('toItem', { + description: 'Returns last entries', + accessType: 'READ', + accepts: [{ + arg: 'barcode', + type: 'Number', + required: true, + description: 'barcode' + }], + returns: { + type: 'Number', + root: true + }, + http: { + path: `/:barcode/toItem`, + verb: 'GET' + } + }); + + Self.toItem = async barcode => { + let query = `SELECT vn.barcodeToItem(?)`; + let [item] = await Self.rawSql(query, [barcode]); + if (item) + item = Object.values(item); + return item[0]; + }; +}; diff --git a/modules/item/back/models/item-barcode.js b/modules/item/back/models/item-barcode.js index 094701113..b608a7fe9 100644 --- a/modules/item/back/models/item-barcode.js +++ b/modules/item/back/models/item-barcode.js @@ -1,4 +1,6 @@ module.exports = Self => { + require('../methods/item-barcode/toItem')(Self); + Self.validatesUniquenessOf('code', { message: `Barcode must be unique` });