105 lines
3.6 KiB
JavaScript
105 lines
3.6 KiB
JavaScript
const {ParameterizedSQL} = require('loopback-connector');
|
|
|
|
module.exports = Self => {
|
|
Self.remoteMethod('itemLackDetail', {
|
|
description: 'Retrieve detail from ticket',
|
|
accessType: 'READ',
|
|
accepts: [
|
|
{
|
|
arg: 'itemFk',
|
|
type: 'number',
|
|
description: 'The item id',
|
|
},
|
|
{
|
|
arg: 'warehouseFk',
|
|
type: 'number',
|
|
description: 'The warehouse id',
|
|
},
|
|
{
|
|
arg: 'filter',
|
|
type: 'object',
|
|
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
|
|
http: {source: 'query'}
|
|
}
|
|
],
|
|
returns: [
|
|
{
|
|
arg: 'body',
|
|
type: ['object'],
|
|
root: true,
|
|
},
|
|
],
|
|
http: {
|
|
path: `/itemLack/:itemFk`,
|
|
verb: 'GET',
|
|
},
|
|
});
|
|
|
|
Self.itemLackDetail = async(itemFk, warehouseFk, filter, options) => {
|
|
const conn = Self.dataSource.connector;
|
|
|
|
const myOptions = {};
|
|
if (typeof options == 'object') Object.assign(myOptions, options);
|
|
|
|
const stmt = new ParameterizedSQL(
|
|
`
|
|
SELECT
|
|
s.id saleFk,
|
|
st.code,
|
|
t.id ticketFk,
|
|
t.nickname,
|
|
t.shipped,
|
|
t.hour,
|
|
s.quantity,
|
|
ag.name agName,
|
|
ts.alertLevel alertLevel,
|
|
st.name stateName,
|
|
st.id stateId,
|
|
s.itemFk itemFk,
|
|
s.price price,
|
|
al.code alertLevelCode,
|
|
z.id zoneFk,
|
|
z.name zoneName,
|
|
z.hour theoreticalhour,
|
|
cn.isRookie,
|
|
IF(sc.saleClonedFk, 1, 0 ) as turno,
|
|
IF(tr.saleFk , 1, 0 ) as peticionCompra,
|
|
t.hour minTimed,
|
|
c.id customerId,
|
|
c.name customerName,
|
|
ot.code observationTypeCode
|
|
FROM
|
|
vn.sale s
|
|
JOIN vn.ticket t ON t.id=s.ticketFk
|
|
LEFT JOIN vn.zone z ON z.id = t.zoneFk
|
|
LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk
|
|
JOIN vn.client c ON c.id=t.clientFk
|
|
LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id
|
|
JOIN vn.agencyMode agm ON agm.id=t.agencyModeFk
|
|
JOIN vn.agency ag ON ag.id=agm.id
|
|
JOIN vn.ticketState ts ON ts.ticketFk=t.id
|
|
LEFT JOIN vn.state st ON st.id=ts.state
|
|
LEFT JOIN vn.alertLevel al ON al.id = st.alertLevel
|
|
LEFT JOIN vn.saleCloned sc ON sc.saleClonedFk = s.id
|
|
LEFT JOIN vn.ticketRequest tr ON tr.saleFk = s.id
|
|
LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id
|
|
LEFT JOIN vn.observationType ot ON ot.id = tob.observationTypeFk
|
|
WHERE
|
|
s.itemFk = ?
|
|
AND t.landed >= util.VN_CURDATE()
|
|
AND t.landed < util.VN_CURDATE() + INTERVAL ? + 1 DAY
|
|
`,
|
|
[itemFk, 2]);
|
|
|
|
if (filter.where.stateFk) {
|
|
stmt.merge({
|
|
sql: `AND ts.alertLevel=?`, params: [filter.where.stateFk]});
|
|
}
|
|
// }
|
|
// stmt.merge(conn.makeWhere(filter.where));
|
|
const sql = ParameterizedSQL.join([stmt], ';');
|
|
const result = await conn.executeStmt(sql, myOptions);
|
|
return result;
|
|
};
|
|
};
|