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

82 lines
2.8 KiB
JavaScript

module.exports = Self => {
Self.remoteMethodCtx('getFromSectorCollection', {
description: 'Get sales from sector collection',
accessType: 'READ',
accepts: [
{
arg: 'sectorCollectionFk',
type: 'number',
required: true,
},
{
arg: 'sectorFk',
type: 'number',
required: true
}
],
returns: {
type: ['object'],
root: true
},
http: {
path: `/getFromSectorCollection`,
verb: 'GET'
},
});
Self.getFromSectorCollection = async(ctx, sectorCollectionFk, sectorFk, options) => {
const myOptions = {};
const userId = ctx.req.accessToken.userId;
if (typeof options == 'object') Object.assign(myOptions, options);
const sales = await Self.rawSql(
`SELECT s.ticketFk,
s.itemFk,
i.longName,
itemPackingTypeFk,
subName,
s.quantity,
w.code workerCode,
sgd.saleFk,
iss.quantity pickedQuantity,
c.salesPersonFk
FROM vn.sale s
JOIN item i ON i.id = s.itemFk
JOIN saleGroupDetail sgd ON sgd.saleFk = s.id
JOIN sectorCollectionSaleGroup scsg ON scsg.saleGroupFk = sgd.saleGroupFk
JOIN saleTracking st ON st.saleFk = s.id
JOIN state stt ON stt.id = st.stateFk AND stt.code = 'PREVIOUS_PREPARATION'
JOIN worker w ON w.id = st.workerFk
JOIN ticket t ON t.id= s.ticketFk
JOIN client c ON c.id=t.clientFk
LEFT JOIN itemShelvingSaleSum iss ON iss.saleFk = s.id
WHERE scsg.sectorCollectionFk = ?
AND st.workerFk = ?;`, [sectorCollectionFk, userId]);
const itemShelvings = [];
for (let sale of sales) {
const [carros] = await Self.rawSql(
'CALL vn.itemPlacementSupplyStockGetTargetList(?, ?)',
[sale.itemFk, sectorFk]
);
itemShelvings.push({
id: sale.ticketFk,
itemFk: sale.itemFk,
longName: sale.longName,
packingType: sale.itemPackingTypeFk,
subName: sale.subName,
quantity: {saldo: sale.quantity},
trabajador: sale.workerCode,
idMovimiento: sale.saleFk,
salesPersonFk: sale.salesPersonFk,
picked: sale.pickedQuantity,
carros
});
}
return itemShelvings;
};
};