#6321 - Negative tickets #1945

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

View File

@ -3,11 +3,11 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(
vForce BOOLEAN, vForce BOOLEAN,
vDays INT, vDays INT,
vId INT, vId INT,
jsegarra marked this conversation as resolved
Review

si esto es el id del artículo, lo ponemos en primer lugar y se llama vSelf

si esto es el id del artículo, lo ponemos en primer lugar y se llama vSelf
vLongname INT, vLongname VARCHAR(255),
vSupplierFk VARCHAR(255), vSupplierFk VARCHAR(255),
vColor VARCHAR(255), vColor VARCHAR(255),
vSize INT, vSize INT,
vOrigen VARCHAR(255), vOrigen INT,
vLack INT, vLack INT,
vWarehouseFk INT vWarehouseFk INT
) )
@ -59,11 +59,11 @@ BEGIN
AND ic.display AND ic.display
AND it.code != 'GEN' AND it.code != 'GEN'
AND (vId IS NULL OR i.id = vId) AND (vId IS NULL OR i.id = vId)
AND (vLongname IS NULL OR i.longName = vLongname) AND (vLongname IS NULL OR i.name = vLongname)
AND (vSupplierFk IS NULL OR p.`name` LIKE CONCAT('%', vSupplierFk, '%')) AND (vSupplierFk IS NULL OR p.`name` LIKE CONCAT('%', vSupplierFk, '%'))
Review

estas seguro que quieren esto? si hay un productor que se llama flor, saldran tambien todos los floral, floristeria... yo creo que conviene dejar el =

estas seguro que quieren esto? si hay un productor que se llama flor, saldran tambien todos los floral, floristeria... yo creo que conviene dejar el =
AND (vColor IS NULL OR vColor = i.inkFk) AND (vColor IS NULL OR vColor = i.inkFk)
AND (vSize IS NULL OR vSize = i.`size`) AND (vSize IS NULL OR vSize = i.`size`)
AND (vOrigen IS NULL OR vOrigen = w.name) AND (vOrigen IS NULL OR vOrigen = w.id)
AND (vLack IS NULL OR vLack = sub.amount) AND (vLack IS NULL OR vLack = sub.amount)
AND (vWarehouseFk IS NULL OR vWarehouseFk = w.id) AND (vWarehouseFk IS NULL OR vWarehouseFk = w.id)
GROUP BY i.id, w.id GROUP BY i.id, w.id

View File

@ -8,6 +8,12 @@ module.exports = Self => {
type: 'object', type: 'object',
http: {source: 'context'} http: {source: 'context'}
}, },
{
arg: 'filter',
type: 'object',
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
http: {source: 'query'}
},
{ {
arg: 'id', arg: 'id',
type: 'number', type: 'number',
@ -62,18 +68,25 @@ module.exports = Self => {
} }
}); });
Self.itemLack = async(ctx, options) => { Self.itemLack = async(ctx, filter, options) => {
const myOptions = {}; const myOptions = {};
if (typeof options == 'object') if (typeof options == 'object')
Object.assign(myOptions, options); Object.assign(myOptions, options);
const filterKeyOrder = ['id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouse']; const filterKeyOrder = ['id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouse'];
delete ctx.args.ctx; delete ctx?.args?.ctx;
delete ctx.args.filter;
delete ctx?.args?.filter;
if (filter)
ctx.args = Object.assign(ctx.args ?? {}, filter);
let procedureParams = [true, 2]; let procedureParams = [true, 2];
procedureParams.push(...filterKeyOrder.map(clave => ctx.args[clave] ?? null)); procedureParams.push(...filterKeyOrder.map(clave => ctx.args[clave] ?? null));
const procedureArgs = Array(procedureParams.length).fill('?').join(', '); const procedureArgs = Array(procedureParams.length).fill('?').join(', ');
let query = `CALL vn.item_getLack(${procedureArgs})`; let query = `CALL vn.item_getLack(${procedureArgs})`;
const result = await Self.rawSql(query, procedureParams, myOptions); const result = await Self.rawSql(query, procedureParams, myOptions);

View File

@ -6,7 +6,7 @@ module.exports = Self => {
accessType: 'READ', accessType: 'READ',
accepts: [ accepts: [
{ {
arg: 'id', arg: 'itemFk',
type: 'number', type: 'number',
description: 'The item id', description: 'The item id',
}, },
@ -19,7 +19,7 @@ module.exports = Self => {
}, },
], ],
http: { http: {
path: `/itemLack/:id/detail`, path: `/itemLack/:itemFk/detail`,
verb: 'GET', verb: 'GET',
}, },
}); });

View File

@ -1,7 +1,7 @@
const models = require('vn-loopback/server/server').models; const models = require('vn-loopback/server/server').models;
describe('Item Lack', () => { fdescribe('Item Lack', () => {
jsegarra marked this conversation as resolved
Review

modules/ticket/back/methods/ticket/specs/closure.spec.js dile a chatgpt que coja este arhcivo como plantilla y cambie el tuyo para dejar los beginTransaction y los rollback en un beforeEach y afterEach

modules/ticket/back/methods/ticket/specs/closure.spec.js dile a chatgpt que coja este arhcivo como plantilla y cambie el tuyo para dejar los beginTransaction y los rollback en un beforeEach y afterEach
beforeAll(async() => { beforeEach(async() => {
ctx = { ctx = {
req: { req: {
accessToken: {}, accessToken: {},
@ -85,7 +85,7 @@ describe('Item Lack', () => {
const options = {transaction: tx}; const options = {transaction: tx};
const filter = { const filter = {
color: 'BRW' colour: 'BRW'
}; };
try { try {
const result = await models.Ticket.itemLack(ctx, filter, options); const result = await models.Ticket.itemLack(ctx, filter, options);

View File

@ -1,6 +1,6 @@
const models = require('vn-loopback/server/server').models; const models = require('vn-loopback/server/server').models;
describe('Item Lack Detail', () => { fdescribe('Item Lack Detail', () => {
it('should return false if id is null', async() => { it('should return false if id is null', async() => {
const tx = await models.Ticket.beginTransaction({}); const tx = await models.Ticket.beginTransaction({});