#6321 - Negative tickets #1945
|
@ -1,3 +1,5 @@
|
||||||
-- Auto-generated SQL script #202401191358
|
-- Auto-generated SQL script #202401191358
|
||||||
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
||||||
VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee');
|
VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee');
|
||||||
|
INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
|
||||||
|
VALUES ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee');
|
||||||
|
|
|
@ -167,7 +167,7 @@ module.exports = Self => {
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
'itemFk': 7176,
|
'itemFk': 72176,
|
||||||
'longName': 'Anthurium Olivius x20',
|
'longName': 'Anthurium Olivius x20',
|
||||||
'warehouseFk': 60,
|
'warehouseFk': 60,
|
||||||
'producer': null,
|
'producer': null,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
|
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethod('itemLackDetail', {
|
Self.remoteMethod('itemLackDetail', {
|
||||||
description: 'Download a ticket delivery note document',
|
description: 'Download a ticket delivery note document',
|
||||||
jsegarra marked this conversation as resolved
Outdated
|
|||||||
|
@ -8,62 +9,76 @@ module.exports = Self => {
|
||||||
arg: 'id',
|
arg: 'id',
|
||||||
jsegarra marked this conversation as resolved
Outdated
jgallego
commented
si estamos en la seccion ticket, yo el argumento lo llamaria itemFk, porque a mitad codigo, id puede dar confusion a que es el id de la entidad, en este caso ticket si estamos en la seccion ticket, yo el argumento lo llamaria itemFk, porque a mitad codigo, id puede dar confusion a que es el id de la entidad, en este caso ticket
|
|||||||
type: 'number',
|
type: 'number',
|
||||||
description: 'The item id',
|
description: 'The item id',
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
returns: [
|
returns: [
|
||||||
{
|
{
|
||||||
arg: 'body',
|
arg: 'body',
|
||||||
type: ['object'],
|
type: ['object'],
|
||||||
root: true
|
root: true,
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
http: {
|
http: {
|
||||||
path: `/itemLack/:id/detail`,
|
path: `/itemLack/:id/detail`,
|
||||||
verb: 'GET'
|
verb: 'GET',
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.itemLackDetail = async(id, options) => {
|
Self.itemLackDetail = async(id, options) => {
|
||||||
const myOptions = {};
|
const conn = Self.dataSource.connector;
|
||||||
// const versionSQL = false;
|
|
||||||
if (typeof options == 'object')
|
|
||||||
Object.assign(myOptions, options);
|
|
||||||
|
|
||||||
const detail = await Self.rawSQL(`
|
const myOptions = {};
|
||||||
|
if (typeof options == 'object') Object.assign(myOptions, options);
|
||||||
|
|
||||||
|
const stmt = new ParameterizedSQL(
|
||||||
|
`
|
||||||
SELECT
|
SELECT
|
||||||
s.Id_Movimiento, st.code, t.Id_Ticket, t.Alias, t.Fecha, s.Cantidad, ag.Agencia,
|
s.id saleFk,
|
||||||
|
st.code,
|
||||||
|
t.id ticketFk,
|
||||||
|
t.nickname,
|
||||||
|
t.hour,
|
||||||
jgallego
commented
este dos? este dos?
jsegarra
commented
Este 2 lo he puesto para que cuando filter.where no tenga scopeDays no de error la consulta, sin embargo, para ser lo mas agnóstico posible a quien lo llame, si no me lo pasas, asigno un 0 que es más lógico Este 2 lo he puesto para que cuando filter.where no tenga scopeDays no de error la consulta, sin embargo, para ser lo mas agnóstico posible a quien lo llame, si no me lo pasas, asigno un 0 que es más lógico
jsegarra
commented
Si lo ves correcto, te pido fusionar Si lo ves correcto, te pido fusionar
|
|||||||
|
s.quantity,
|
||||||
|
ag.name,
|
||||||
ts.alertLevel alertLevel,
|
ts.alertLevel alertLevel,
|
||||||
st.name stateName,
|
st.name stateName,
|
||||||
st.id stateId,
|
st.id stateId,
|
||||||
s.Id_Article id,
|
s.itemFk itemFk,
|
||||||
al.code alertLevelCode,
|
al.code alertLevelCode,
|
||||||
z.name,
|
z.name,
|
||||||
z.hour theoreticalhour,
|
z.hour theoreticalhour,
|
||||||
cn.isRookie,
|
cn.isRookie,
|
||||||
sc.saleClonedFk turno,
|
sc.saleClonedFk turno,
|
||||||
jgallego marked this conversation as resolved
Outdated
jgallego
commented
yo estoy cambiando los alertLevel, no podemos poner numero en el codigo, si no hay ..null yo estoy cambiando los alertLevel, no podemos poner numero en el codigo, si no hay ..null
jsegarra
commented
ok, lo reviso ok, lo reviso
jsegarra
commented
Lo he valorado con otros compañeros y esto de momento lo dejamos así Lo he valorado con otros compañeros y esto de momento lo dejamos así
|
|||||||
tr.saleFk peticionCompra,
|
tr.saleFk peticionCompra,
|
||||||
t.Fecha minTimed
|
t.hour minTimed
|
||||||
FROM
|
FROM
|
||||||
Sale s
|
vn.sale s
|
||||||
jsegarra marked this conversation as resolved
Outdated
jgallego
commented
es una chorrada pero comovas a cambiar cosas, no solemos poner los AS en los select es una chorrada pero comovas a cambiar cosas, no solemos poner los AS en los select
|
|||||||
JOIN Tickets t ON t.Id_Ticket=s.Id_Ticket -- vn.ticket
|
JOIN vn.ticket t ON t.id=s.ticketFk -- vn.ticket
|
||||||
jsegarra marked this conversation as resolved
Outdated
jgallego
commented
tls.alertLevel tls.alertLevel
|
|||||||
LEFT JOIN zone z ON z.id = t.zoneFk -- vn.zone
|
LEFT JOIN vn.zone z ON z.id = t.zoneFk -- vn.zone
|
||||||
LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = DateValue(t.Fecha)
|
LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk -- AND zc.dated = DateValue(t.Fecha)
|
||||||
JOIN Clientes c ON c.Id_Cliente=t.Id_Cliente -- vn.client
|
JOIN vn.client c ON c.id=t.clientFk -- vn.client
|
||||||
LEFT JOIN clientNewBorn cn ON cn.clientFk=c.Id_Cliente
|
LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id
|
||||||
JOIN Agencias ag ON ag.Id_Agencia=t.Id_Agencia -- vn.agencyMode
|
JOIN vn.agencyMode agm ON agm.id=t.agencyModeFk -- vn.agencyMode
|
||||||
jgallego marked this conversation as resolved
Outdated
jgallego
commented
aqui puedes devolver el codigo y en front gestionas como necesites, sino estas haciendo 2 funciones por cada linea..lo cual tiene un coste en velocidad al select aqui puedes devolver el codigo y en front gestionas como necesites, sino estas haciendo 2 funciones por cada linea..lo cual tiene un coste en velocidad al select
jsegarra
commented
cual select? al de zona? El siguiente es de hora y a continuación son booleanos cual select? al de zona? El siguiente es de hora y a continuación son booleanos
jsegarra
commented
cambiado cambiado
|
|||||||
JOIN ticketState tls ON ts.ticketFk=t.Id_Ticket -- vn.sale
|
JOIN vn.agency ag ON ag.id=agm.id -- vn.agencyMode
|
||||||
LEFT JOIN state s ON st.id=ts.state
|
JOIN vn.ticketState ts ON ts.ticketFk=t.id -- vn.sale
|
||||||
LEFT JOIN alertLevel al ON al.id = st.alertLevel
|
LEFT JOIN vn.state st ON st.id=ts.state
|
||||||
LEFT JOIN saleCloned sc ON sc.saleClonedFk = s.Id_Movimiento
|
LEFT JOIN vn.alertLevel al ON al.id = st.alertLevel
|
||||||
LEFT JOIN ticketRequest tr ON tr.saleFk = s.Id_Movimiento
|
LEFT JOIN vn.saleCloned sc ON sc.saleClonedFk = s.id
|
||||||
jgallego marked this conversation as resolved
Outdated
jgallego
commented
esto lo confirmamos con ellos, yo intentaria llevarlo a front sin este campo hasToIgnore y que se lo filtren, de lo contrario..mañana cuando cambien codigos esto habra que cambiarlo esto lo confirmamos con ellos, yo intentaria llevarlo a front sin este campo hasToIgnore y que se lo filtren, de lo contrario..mañana cuando cambien codigos esto habra que cambiarlo
jsegarra
commented
La consulta que estas viendo está copiada y traducida desde access La consulta que estas viendo está copiada y traducida desde access
Solo la he migrado.
Este campo sirve para ordenar los resultados
jsegarra
commented
cambiado cambiado
|
|||||||
WHERE
|
LEFT JOIN vn.ticketRequest tr ON tr.saleFk = s.id
|
||||||
AND s.Id_Article = ?
|
LIMIT 1
|
||||||
AND NOT Cantidad
|
`,
|
||||||
AND Fecha >= util.VN_CURDATE()
|
null
|
||||||
AND Fecha < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY
|
);
|
||||||
jsegarra marked this conversation as resolved
Outdated
jgallego
commented
(d.code = 'spainTeamVip') hasToIgnore (d.code = 'spainTeamVip') hasToIgnore
|
|||||||
ORDER BY s.Id_Movimiento DESC+
|
// WHERE
|
||||||
jgallego marked this conversation as resolved
jgallego
commented
esto hace que las consultas sean muy lentas, hay que buscar alternativa, busca si encuentras otra consulta similar por la BBDD esto hace que las consultas sean muy lentas, hay que buscar alternativa, busca si encuentras otra consulta similar por la BBDD
jsegarra
commented
cambiado cambiado
|
|||||||
`, [id, 2], myOptions);
|
// s.itemFk = ?
|
||||||
|
|
||||||
return detail;
|
// AND t.landed >= util.VN_CURDATE()
|
||||||
|
// AND t.landed < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY
|
||||||
|
// ORDER BY s.id DESC+
|
||||||
|
// [id,2]
|
||||||
|
|
||||||
|
const sql = ParameterizedSQL.join([stmt], ';');
|
||||||
|
const result = await conn.executeStmt(sql, myOptions);
|
||||||
|
return result;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
jgallego
commented
esto seria hasObservation esto seria hasObservation
jsegarra
commented
Okey, reemplazaré Okey, reemplazaré
jsegarra
commented
cambiado cambiado
|
|||||||
|
|
esta descripcion corresponde ?