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; }; };