salix/modules/ticket/back/methods/sale/replaceItem.js

71 lines
2.1 KiB
JavaScript
Raw Normal View History

module.exports = Self => {
Self.remoteMethodCtx('replaceItem', {
description: 'Replace item from sale',
accessType: 'WRITE',
accepts: [{
arg: 'saleFk',
type: 'number',
required: true,
},
{
2024-09-24 11:54:32 +00:00
arg: 'substitutionFk',
type: 'number',
required: true
},
{
arg: 'quantity',
type: 'number',
required: true
}
],
returns: {
type: 'object',
root: true
},
http: {
2024-06-14 09:43:06 +00:00
path: `/replaceItem`,
verb: 'POST'
}
});
2024-09-24 11:54:32 +00:00
Self.replaceItem = async(ctx, saleFk, substitutionFk, quantity, options) => {
const myOptions = {userId: ctx.req.accessToken.userId};
let tx;
2025-01-20 13:32:26 +00:00
const $t = ctx.req.__;
const models = Self.app.models;
// const {_saleFk, _substitutionFk, _quantity} = ctx.args;
if (typeof options == 'object')
Object.assign(myOptions, options);
if (!myOptions.transaction) {
tx = await Self.beginTransaction({});
myOptions.transaction = tx;
}
try {
2025-01-20 13:32:26 +00:00
const _replaceItem = {sql: 'CALL sale_replaceItem(?,?,?)', query: [saleFk, substitutionFk, quantity]};
const result = await Self.rawSql(_replaceItem.sql, _replaceItem.query, myOptions);
const _salesPerson = {sql: 'SELECT vn.client_getSalesPersonByTicket(?)', query: [saleFk.ticket.id]};
const salesPerson = await Self.rawSql(_salesPerson.query, _salesPerson.sql, myOptions);
const message = $t('negativeReplaced', {
old: itemFk,
oldUrl: `${url}item/${itemFk}/summary`,
new: itemFk,
newUrl: `${url}item/${itemFk}/summary`,
ticket: ticketFk,
ticketUrl: `${url}ticket/${ticketFk}/sale`,
});
await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message);
return result;
} catch (e) {
if (tx) await tx.rollback();
throw e;
}
};
};