#6321 - Negative tickets #1945

Merged
jsegarra merged 146 commits from 6321_negative_tickets into dev 2025-02-11 08:45:33 +00:00
3 changed files with 116 additions and 0 deletions
Showing only changes of commit 1a21dda00b - Show all commits

View File

@ -0,0 +1,69 @@
/* eslint-disable no-console */
module.exports = Self => {
Self.remoteMethod('itemLackDetail', {
description: 'Download a ticket delivery note document',
accessType: 'READ',
jsegarra marked this conversation as resolved Outdated

esta descripcion corresponde ?

esta descripcion corresponde ?
accepts: [
{
arg: 'id',
type: 'number',
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
description: 'The item id',
}
],
returns: [
{
arg: 'body',
type: ['object'],
root: true
}
],
http: {
path: `/itemLack/:id/detail`,
verb: 'GET'
}
});
Self.itemLackDetail = async(id, options) => {
const myOptions = {};
// const versionSQL = false;
if (typeof options == 'object')
Object.assign(myOptions, options);
const detail = await Self.rawSQL(`
SELECT
s.Id_Movimiento, st.code, t.Id_Ticket, t.Alias, t.Fecha, s.Cantidad, ag.Agencia,
ts.alertLevel alertLevel,
st.name stateName,
st.id stateId,
s.Id_Article id,
al.code alertLevelCode,
z.name,

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

mejora aun, no pases nada si no pasan nada.

mejora aun, no pases nada si no pasan nada.
z.hour theoreticalhour,
cn.isRookie,
sc.saleClonedFk turno,
tr.saleFk peticionCompra,
t.Fecha minTimed
FROM
Sale s
JOIN Tickets t ON t.Id_Ticket=s.Id_Ticket -- vn.ticket
LEFT JOIN zone z ON z.id = t.zoneFk -- vn.zone
LEFT JOIN 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
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í
LEFT JOIN clientNewBorn cn ON cn.clientFk=c.Id_Cliente
JOIN Agencias ag ON ag.Id_Agencia=t.Id_Agencia -- vn.agencyMode
JOIN ticketState tls ON ts.ticketFk=t.Id_Ticket -- vn.sale
LEFT JOIN state s ON st.id=ts.state
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
LEFT JOIN alertLevel al ON al.id = st.alertLevel
jsegarra marked this conversation as resolved Outdated

tls.alertLevel

tls.alertLevel
LEFT JOIN saleCloned sc ON sc.saleClonedFk = s.Id_Movimiento
LEFT JOIN ticketRequest tr ON tr.saleFk = s.Id_Movimiento
WHERE
AND s.Id_Article = ?
AND NOT Cantidad
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
AND Fecha >= util.VN_CURDATE()
AND Fecha < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY
ORDER BY s.Id_Movimiento DESC+
`, [id, 2], myOptions);
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
return detail;
};
};

View File

@ -0,0 +1,46 @@
const models = require('vn-loopback/server/server').models;
describe('Item Lack Detail', () => {
it('should return false if id is null', async() => {
const tx = await models.Ticket.beginTransaction({});
try {
const options = {transaction: tx};
const id = null;
const result = await models.Ticket.itemLackDetail(id, options);
expect(result).toBeFalsy();
} catch (e) {
throw e;
}
});
it('should return data if id exists', async() => {
const tx = await models.Ticket.beginTransaction({});
try {
const options = {transaction: tx};
const id = 1167;
const result = await models.Ticket.itemLackDetail(id, options);
expect(result).toBeFalsy();
} catch (e) {
throw e;
}
});
it('should return error is if not exists', async() => {
const tx = await models.Ticket.beginTransaction({});
try {
const options = {transaction: tx};
const id = 0;
const result = await models.Ticket.itemLackDetail(id, options);
expect(result).toBeFalsy();
} catch (e) {
throw e;
}
});
});

View File

@ -44,4 +44,5 @@ module.exports = function(Self) {
require('../methods/ticket/invoiceTickets')(Self);
require('../methods/ticket/docuwareDownload')(Self);
require('../methods/ticket/itemLack')(Self);
require('../methods/ticket/itemLackDetail')(Self);
};