From 77d0dcae0de7cc7ad26c88824a446cb5cc315ba3 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 2 Feb 2022 08:28:07 +0100 Subject: [PATCH] feat(setQuantitySale): back route and test --- back/methods/collection/setQuantitySale.js | 33 +++++++ .../collection/spec/setQuantitySale.spec.js | 15 ++++ .../spec/updateCollectionSale.spec.js | 62 ------------- .../collection/updateCollectionSale.js | 90 ------------------- back/models/collection.js | 2 +- 5 files changed, 49 insertions(+), 153 deletions(-) create mode 100644 back/methods/collection/setQuantitySale.js create mode 100644 back/methods/collection/spec/setQuantitySale.spec.js delete mode 100644 back/methods/collection/spec/updateCollectionSale.spec.js delete mode 100644 back/methods/collection/updateCollectionSale.js diff --git a/back/methods/collection/setQuantitySale.js b/back/methods/collection/setQuantitySale.js new file mode 100644 index 0000000000..f9448f46aa --- /dev/null +++ b/back/methods/collection/setQuantitySale.js @@ -0,0 +1,33 @@ +module.exports = Self => { + Self.remoteMethodCtx('setQuantitySale', { + description: 'Update sale quantity', + accessType: 'WRITE', + accepts: [{ + arg: 'sale', + type: 'Number', + required: true, + description: 'The sale id' + }, + { + arg: 'quantity', + type: 'Number', + required: true, + description: 'The quantity to picked' + }], + returns: { + type: 'Object', + root: true + }, + http: { + path: `/setQuantitySale`, + verb: 'POST' + } + }); + + Self.setQuantitySale = async(sale, quantity) => { + query = `CALL vn.sale_setQuantity(?,?)`; + const result = await Self.rawSql(query, [sale, quantity]); + + return result; + }; +}; diff --git a/back/methods/collection/spec/setQuantitySale.spec.js b/back/methods/collection/spec/setQuantitySale.spec.js new file mode 100644 index 0000000000..31c674b18f --- /dev/null +++ b/back/methods/collection/spec/setQuantitySale.spec.js @@ -0,0 +1,15 @@ +const models = require('vn-loopback/server/server').models; + +fdescribe('setQuantitySale()', () => { + it('should change quantity sale', async() => { + const saleId = 1; + const newQuantity = 1; + const originalSale = await models.Sale.findById(saleId); + + await models.Collection.setQuantitySale(saleId, newQuantity); + const updateSale = await models.Sale.findById(saleId); + + expect(updateSale.quantity).toBeLessThan(originalSale.quantity); + expect(updateSale.quantity).toEqual(newQuantity); + }); +}); diff --git a/back/methods/collection/spec/updateCollectionSale.spec.js b/back/methods/collection/spec/updateCollectionSale.spec.js deleted file mode 100644 index 951115e545..0000000000 --- a/back/methods/collection/spec/updateCollectionSale.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -const app = require('vn-loopback/server/server'); - -describe('updateCollectionSale()', () => { - it('should return a new collection', async() => { - const sectorOneWarehouseID = 1; - let ctx = {req: {accessToken: {userId: 1106}}}; - ctx.args = { - sale: 1, - originalQuantity: 5, - quantity: 5, - quantityPicked: 5, - ticketFk: 1, - stateFk: 4, - isNicho: false, - shelvingFk: 'UXN', - itemFk: 1, - sectorFk: 1 - }; - let originalSaleTracking = await app.models.SaleTracking.findOne({ - where: { - saleFk: ctx.args.sale, - stateFk: ctx.args.stateFk - } - }); - let itemPlacement = await app.models.ItemPlacement.findOne({ - where: { - itemFk: ctx.args.itemFk, - warehouseFk: sectorOneWarehouseID - } - }); - const originalSale = await app.models.Sale.findById(ctx.args.sale); - const originalItemShelving = await app.models.ItemShelving.findOne({where: {shelvingFk: ctx.args.shelvingFk, itemFk: ctx.args.itemFk}}); - const originalTicketLastState = await app.models.TicketLastState.findById(ctx.args.ticketFk); - - let response = await app.models.Collection.updateCollectionSale(ctx); - - expect(response.length).toBeGreaterThan(0); - expect(response[0][0].id).toEqual(1); - expect(response[0][0].quantity).toEqual(5); - - // restores - if (originalSaleTracking) - await originalSaleTracking.save(); - else { - originalSaleTracking = await app.models.SaleTracking.findOne({ - where: { - saleFk: ctx.args.sale, - stateFk: ctx.args.stateFk - } - }); - await originalSaleTracking.destroy(); - } - await originalSale.save(); - const itemShelvingsToDestroy = await app.models.ItemShelving.find({where: {shelvingFk: ctx.args.shelvingFk, itemFk: ctx.args.itemFk}}); - for (itemShelving of itemShelvingsToDestroy) - await itemShelving.destroy(); - - await originalItemShelving.save(); - await originalTicketLastState.save(); - await itemPlacement.save(); - }); -}); diff --git a/back/methods/collection/updateCollectionSale.js b/back/methods/collection/updateCollectionSale.js deleted file mode 100644 index 608250d186..0000000000 --- a/back/methods/collection/updateCollectionSale.js +++ /dev/null @@ -1,90 +0,0 @@ -module.exports = Self => { - Self.remoteMethodCtx('updateCollectionSale', { - description: 'Update sale of a collection', - accessType: 'WRITE', - accepts: [{ - arg: 'sale', - type: 'Number', - required: true, - description: 'The sale id' - }, { - arg: 'originalQuantity', - type: 'Number', - required: true, - description: 'The quantity to sale' - }, - { - arg: 'quantity', - type: 'Number', - required: true, - description: 'The quantity to picked' - }, - { - arg: 'quantityPicked', - type: 'Number', - required: true, - description: 'The quantity to picked' - }, { - arg: 'ticketFk', - type: 'Number', - required: true, - description: 'The ticket id' - }, { - arg: 'stateFk', - type: 'Number', - required: true, - description: 'The state id' - }, { - arg: 'isNicho', - type: 'Boolean', - required: true, - description: 'Determine if sale is picked from nicho or not' - }, { - arg: 'shelvingFk', - type: 'String', - required: false, - description: 'The shelving id' - }, { - arg: 'itemFk', - type: 'Number', - required: true, - description: 'The item id' - }, { - arg: 'sectorFk', - type: 'Number', - required: true, - description: 'The sector id' - }], - returns: { - type: 'Object', - root: true - }, - http: { - path: `/updateCollectionSale`, - verb: 'POST' - } - }); - - Self.updateCollectionSale = async ctx => { - const userId = ctx.req.accessToken.userId; - const args = ctx.args; - - if (args.originalQuantity == args.quantity) { - query = `CALL vn.collection_updateSale(?,?,?,?,?)`; - await Self.rawSql(query, [args.sale, args.originalQuantity, userId, args.stateFk, args.ticketFk]); - } - - if (!args.isNicho) { - query = `CALL vn.collection_faults(?,?,?)`; - await Self.rawSql(query, [args.shelvingFk, args.quantityPicked, args.itemFk]); - } else { - query = `CALL vn.sector_getWarehouse(?)`; - const [result] = await Self.rawSql(query, [args.sectorFk]); - - query = `CALL vn.itemPlacementSave(?,?,?)`; - await Self.rawSql(query, [args.shelvingFk, args.quantityPicked, result[0]['warehouseFk']]); - } - query = `CALL vn.sale_updateOriginalQuantity(?,?)`; - return await Self.rawSql(query, [args.sale, args.quantity]); - }; -}; diff --git a/back/models/collection.js b/back/models/collection.js index d3670d56b5..7ac46f2634 100644 --- a/back/models/collection.js +++ b/back/models/collection.js @@ -2,6 +2,6 @@ module.exports = Self => { require('../methods/collection/getCollection')(Self); require('../methods/collection/newCollection')(Self); require('../methods/collection/getSectors')(Self); - require('../methods/collection/updateCollectionSale')(Self); + require('../methods/collection/setQuantitySale')(Self); require('../methods/collection/collectionFaults')(Self); };