#6321 - Negative tickets #1945

Open
jsegarra wants to merge 145 commits from 6321_negative_tickets into dev
3 changed files with 51 additions and 34 deletions
Showing only changes of commit 871447cc6e - Show all commits

View File

@ -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');

View File

@ -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,

View File

@ -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

esta descripcion corresponde ?

esta descripcion corresponde ?
@ -8,62 +9,76 @@ module.exports = Self => {
arg: 'id', arg: 'id',
jsegarra marked this conversation as resolved Outdated

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,

este dos?

este dos?

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

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

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

ok, lo reviso

ok, lo reviso

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

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

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

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

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

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

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

La consulta que estas viendo está copiada y traducida desde access
Solo la he migrado.
Este campo sirve para ordenar los resultados

La consulta que estas viendo está copiada y traducida desde access Solo la he migrado. Este campo sirve para ordenar los resultados

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

(d.code = 'spainTeamVip') hasToIgnore

(d.code = 'spainTeamVip') hasToIgnore
ORDER BY s.Id_Movimiento DESC+ // WHERE
jgallego marked this conversation as resolved
Review

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
Review

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

esto seria hasObservation

esto seria hasObservation

Okey, reemplazaré

Okey, reemplazaré

cambiado

cambiado