From 04f6059d6f67978947f7f385bded3c2c90640839 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 3 Jul 2024 12:03:28 +0200 Subject: [PATCH] feat: refs #6822 --- modules/entry/back/methods/entry/transfer.js | 38 ++++++++++++++++++++ modules/entry/back/models/entry.js | 1 + 2 files changed, 39 insertions(+) create mode 100644 modules/entry/back/methods/entry/transfer.js diff --git a/modules/entry/back/methods/entry/transfer.js b/modules/entry/back/methods/entry/transfer.js new file mode 100644 index 0000000000..9778326943 --- /dev/null +++ b/modules/entry/back/methods/entry/transfer.js @@ -0,0 +1,38 @@ +module.exports = Self => { + Self.remoteMethodCtx('transfer', { + description: 'Trasladar la mercancia de una entrada al dia siguiente', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + http: {source: 'path'} + } + ], + http: { + path: '/:id/transfer', + verb: 'POST' + } + }); + + Self.transfer = async(ctx, id, options) => { + const myOptions = {userId: ctx.req.accessToken.userId}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + await Self.rawSql('CALL vn.entryTransfer(?)', [id], myOptions); + if (tx) await tx.commit(); + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/entry/back/models/entry.js b/modules/entry/back/models/entry.js index 6e27e1ece5..5f47d718e2 100644 --- a/modules/entry/back/models/entry.js +++ b/modules/entry/back/models/entry.js @@ -10,6 +10,7 @@ module.exports = Self => { require('../methods/entry/addFromPackaging')(Self); require('../methods/entry/addFromBuy')(Self); require('../methods/entry/buyLabel')(Self); + require('../methods/entry/transfer')(Self); Self.observe('before save', async function(ctx, options) { if (ctx.isNewInstance) return;