From 91f5ee3b93b755a581b1b46674cca2cc507b059a Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 20 Jan 2024 12:29:41 +0100 Subject: [PATCH 001/217] refs #6321 feat: new remoteMethod --- db/dump/fixtures.sql | 3 + .../ticket/back/methods/ticket/itemLack.js | 781 ++++++++++++++++++ modules/ticket/back/models/ticket-methods.js | 1 + 3 files changed, 785 insertions(+) create mode 100644 modules/ticket/back/methods/ticket/itemLack.js diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index b243692bb2..ba513ee15a 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -3043,3 +3043,6 @@ INSERT INTO `vn`.`clientSms` (`id`, `clientFk`, `smsFk`, `ticketFk`) (4, 1103, 4, 32), (13, 1101, 1, NULL), (14, 1101, 4, 27); +-- Auto-generated SQL script #202401191358 +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js new file mode 100644 index 0000000000..35f299e6c1 --- /dev/null +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -0,0 +1,781 @@ +module.exports = Self => { + Self.remoteMethod('itemLack', { + description: 'Download a ticket delivery note document', + accessType: 'READ', + accepts: [ + { + 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`, + verb: 'GET' + } + }); + + Self.itemLack = async(ctx, filter, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + // let query = 'CALL vn.item_getLack(?, ?)'; + + // const result = await Self.rawSql(query, [true, 2]); + + // if (tx) await tx.commit(); + + return [ + { + 'itemFk': 7176, + 'longName': 'Anthurium Olivius x20', + 'warehouseFk': 60, + 'producer': null, + 'size': null, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -40, + 'inkFk': 'VRD', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 14613, + 'longName': 'Crisantemo Uniflora Anastasia Topsin', + 'warehouseFk': 60, + 'producer': null, + 'size': 70, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -10, + 'inkFk': 'BLN', + 'timed': '2024-01-19T15:20:00.000Z', + 'minTimed': '16:20' + }, + { + 'itemFk': 28619, + 'longName': 'Clavel Mix Fancy', + 'warehouseFk': 60, + 'producer': 'Benchmark', + 'size': 60, + 'category': 'Fan', + 'warehouse': 'Algemesi', + 'lack': -700, + 'inkFk': 'MIX', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 29422, + 'longName': 'Lisianthus Doble Green', + 'warehouseFk': 60, + 'producer': 'L.I.S.', + 'size': 65, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -10, + 'inkFk': 'VRC', + 'timed': '2024-01-19T16:00:00.000Z', + 'minTimed': '17:00' + }, + { + 'itemFk': 29590, + 'longName': 'Schlumbergera (3 Colors)', + 'warehouseFk': 60, + 'producer': 'Gartneriet Thoruplund', + 'size': 18, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -18, + 'inkFk': 'MIX', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 33636, + 'longName': 'Antirrinum Lavander', + 'warehouseFk': 60, + 'producer': null, + 'size': 80, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -10, + 'inkFk': 'LAV', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 36864, + 'longName': 'Kattegrass (Comida para gatos)', + 'warehouseFk': 60, + 'producer': 'Willem Jongenotter Kw.', + 'size': 10, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -10, + 'inkFk': 'VRD', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 38631, + 'longName': 'Triple Accion Listo Uso', + 'warehouseFk': 60, + 'producer': 'Flower', + 'size': null, + 'category': 'ml', + 'warehouse': 'Algemesi', + 'lack': -24, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 53233, + 'longName': 'Clavel Cheerio Fancy', + 'warehouseFk': 60, + 'producer': 'Benchmark', + 'size': 60, + 'category': 'Fan', + 'warehouse': 'Algemesi', + 'lack': -50, + 'inkFk': 'R\/B', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 60525, + 'longName': 'Rosa Explorer Extra', + 'warehouseFk': 60, + 'producer': 'Floraroma', + 'size': 60, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -500, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 68998, + 'longName': 'Clavel Hot Pink Select', + 'warehouseFk': 60, + 'producer': 'Funza', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -25, + 'inkFk': 'FUC', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 77807, + 'longName': 'Hydrangea Mix 4Flo', + 'warehouseFk': 60, + 'producer': 'Schroll-Flowers', + 'size': 35, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -6, + 'inkFk': 'MIX', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 84883, + 'longName': 'Rosa Freedom Standard', + 'warehouseFk': 60, + 'producer': 'El Milagro', + 'size': 40, + 'category': 'Sta', + 'warehouse': 'Algemesi', + 'lack': -600, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 92466, + 'longName': 'Clavel Kino Select', + 'warehouseFk': 60, + 'producer': 'Funza', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -25, + 'inkFk': 'P\/B', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 93355, + 'longName': 'Clavel Caramel Fancy', + 'warehouseFk': 60, + 'producer': 'Funza', + 'size': 60, + 'category': 'Fan', + 'warehouse': 'Algemesi', + 'lack': -50, + 'inkFk': 'TRR', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 95068, + 'longName': 'Alstroemeria Fifi Plus', + 'warehouseFk': 60, + 'producer': 'Funza', + 'size': 80, + 'category': 'Plu', + 'warehouse': 'Algemesi', + 'lack': -30, + 'inkFk': 'SWE', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 107891, + 'longName': 'Rosa Freedom Select', + 'warehouseFk': 60, + 'producer': 'Excellence', + 'size': 40, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -1000, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 113163, + 'longName': 'Lilium Oriental Roselily Aisha 2', + 'warehouseFk': 60, + 'producer': 'Moerman Lilium BV', + 'size': 65, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -10, + 'inkFk': 'BLN', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 117832, + 'longName': 'Rosa Freedom Standard', + 'warehouseFk': 60, + 'producer': 'Multiflora', + 'size': 50, + 'category': 'Sta', + 'warehouse': 'Algemesi', + 'lack': -200, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 123005, + 'longName': 'Rosa Orange Crush Extra', + 'warehouseFk': 60, + 'producer': 'Trebol', + 'size': 50, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -125, + 'inkFk': 'NAR', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 123380, + 'longName': 'Clavel Hypnosis Standard', + 'warehouseFk': 60, + 'producer': 'GEOFLORA', + 'size': 50, + 'category': 'Sta', + 'warehouse': 'Algemesi', + 'lack': -25, + 'inkFk': 'LAV', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 124948, + 'longName': 'Cymbidium Mon Amour', + 'warehouseFk': 60, + 'producer': 'New Orchids', + 'size': 60, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -1, + 'inkFk': 'BLN', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 125062, + 'longName': 'Hoya Kerri Cerámica', + 'warehouseFk': 60, + 'producer': 'Gartneriet Lundager', + 'size': 15, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -18, + 'inkFk': 'VRD', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 125593, + 'longName': 'Hoya Kerri Cerámica Roja', + 'warehouseFk': 60, + 'producer': 'v.d. Arend Tropical', + 'size': 12, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -1, + 'inkFk': 'VRD', + 'timed': '2024-01-19T15:20:00.000Z', + 'minTimed': '16:20' + }, + { + 'itemFk': 126428, + 'longName': 'Rosa Freedom Extra', + 'warehouseFk': 60, + 'producer': 'Matina', + 'size': 50, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -25, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 128417, + 'longName': 'Rosa Brighton Select', + 'warehouseFk': 60, + 'producer': 'Excellence', + 'size': 50, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -75, + 'inkFk': 'AMA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 132651, + 'longName': 'Rosa Freedom Select', + 'warehouseFk': 60, + 'producer': 'Excellence', + 'size': 60, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -1250, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 135194, + 'longName': 'Eucalipto Torreliana Small', + 'warehouseFk': 60, + 'producer': null, + 'size': 40, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -20, + 'inkFk': 'M\/V', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 135516, + 'longName': 'Hydrangea Curaçao Petite', + 'warehouseFk': 60, + 'producer': 'Flores del Este', + 'size': 60, + 'category': 'Pet', + 'warehouse': 'Algemesi', + 'lack': -15, + 'inkFk': 'AZL', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 136169, + 'longName': 'Hydrangea Turquesa Jumbo', + 'warehouseFk': 60, + 'producer': null, + 'size': 0, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -1, + 'inkFk': 'TUR', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 136518, + 'longName': 'Rosa Freedom Select', + 'warehouseFk': 60, + 'producer': 'Excellence', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -200, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 136733, + 'longName': 'Rosa LightHouse Premium', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 50, + 'category': 'Pre', + 'warehouse': 'Algemesi', + 'lack': -100, + 'inkFk': 'AMA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137200, + 'longName': 'Rosa Luciano Extra', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 50, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -250, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137203, + 'longName': 'Rosa Satina Extra', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 40, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -600, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137204, + 'longName': 'Rosa Satina Extra', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 50, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -125, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137207, + 'longName': 'Rosa Mix Extra', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 40, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -875, + 'inkFk': 'MIX', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137213, + 'longName': 'Rosa Vendela Extra', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 40, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -1800, + 'inkFk': 'BLN', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137233, + 'longName': 'Rosa Freedom Extra', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 40, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -1200, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137234, + 'longName': 'Rosa Freedom Extra', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 50, + 'category': 'Ext', + 'warehouse': 'Algemesi', + 'lack': -600, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 137748, + 'longName': 'Clavel Mini Hot Pink Select', + 'warehouseFk': 60, + 'producer': null, + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -20, + 'inkFk': 'FUC', + 'timed': '2024-01-19T12:45:00.000Z', + 'minTimed': '13:45' + }, + { + 'itemFk': 137814, + 'longName': 'Rosa Freedom Premium', + 'warehouseFk': 60, + 'producer': 'Santa Dorotea', + 'size': 80, + 'category': 'Pre', + 'warehouse': 'Algemesi', + 'lack': -1200, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 139016, + 'longName': 'Cesta Cassius', + 'warehouseFk': 60, + 'producer': 'Mega Ceramics', + 'size': 29, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -2, + 'inkFk': 'NAT', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 142330, + 'longName': 'Rosa Glam Dome Rosa', + 'warehouseFk': 60, + 'producer': null, + 'size': 0, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -3, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 142331, + 'longName': 'Rosa Glam Dome Rojo', + 'warehouseFk': 60, + 'producer': null, + 'size': 0, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -6, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143511, + 'longName': 'Clavel White Florafil Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -200, + 'inkFk': 'BLN', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143512, + 'longName': 'Clavel Red Florafil Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -200, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143513, + 'longName': 'Clavel Lege Pink Florafil Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -200, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143556, + 'longName': 'Clavel Mini White Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -400, + 'inkFk': 'BLN', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143557, + 'longName': 'Clavel Mini Red Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -400, + 'inkFk': 'ROJ', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143575, + 'longName': 'Clavel Mini Bicolor Mix Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -2000, + 'inkFk': 'MIX', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143697, + 'longName': 'Syngonium Rosa Colgante', + 'warehouseFk': 60, + 'producer': 'Quakelplant BV', + 'size': 35, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -3, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143833, + 'longName': 'Cymbidium Magic', + 'warehouseFk': 60, + 'producer': 'HVS Orchids', + 'size': 50, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -3, + 'inkFk': 'BLN', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143918, + 'longName': 'Ranunculus Sprinkles Mix', + 'warehouseFk': 60, + 'producer': 'Firma P.A.M. van Os', + 'size': 27, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -12, + 'inkFk': 'MIX', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 143923, + 'longName': 'Dieff se Tropic Snow 2 Plantas', + 'warehouseFk': 60, + 'producer': 'Floramiata', + 'size': 80, + 'category': null, + 'warehouse': 'Algemesi', + 'lack': -1, + 'inkFk': 'VRD', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 144034, + 'longName': 'Clavel Pink Florafil Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -200, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 144035, + 'longName': 'Clavel Bicolor Mix Florafil Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -2000, + 'inkFk': 'MIX', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }, + { + 'itemFk': 144115, + 'longName': 'Clavel Mini Hot Pink Select', + 'warehouseFk': 60, + 'producer': 'Colibri', + 'size': 70, + 'category': 'Sel', + 'warehouse': 'Algemesi', + 'lack': -400, + 'inkFk': 'RSA', + 'timed': '2024-01-19T22:59:59.000Z', + 'minTimed': '2024-01-19 23:59:59' + }]; + }; +}; diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index 14cb104be5..5c7fdb7268 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -43,4 +43,5 @@ module.exports = function(Self) { require('../methods/ticket/saveSign')(Self); require('../methods/ticket/invoiceTickets')(Self); require('../methods/ticket/docuwareDownload')(Self); + require('../methods/ticket/itemLack')(Self); }; From 0111aa1b75cdf9012dccdecf2b2037662f66a32b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 22 Jan 2024 09:56:10 +0100 Subject: [PATCH 002/217] refs #6321 feat: fixtures and update procedure --- db/changes/240601/01-updateACLItemLack.sql | 3 + .../240601/01-updateProcedureGetItemLack.sql | 65 +++++++++++++++++++ db/dump/fixtures.sql | 12 +++- 3 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 db/changes/240601/01-updateACLItemLack.sql create mode 100644 db/changes/240601/01-updateProcedureGetItemLack.sql diff --git a/db/changes/240601/01-updateACLItemLack.sql b/db/changes/240601/01-updateACLItemLack.sql new file mode 100644 index 0000000000..13521325fb --- /dev/null +++ b/db/changes/240601/01-updateACLItemLack.sql @@ -0,0 +1,3 @@ +-- Auto-generated SQL script #202401191358 +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'); diff --git a/db/changes/240601/01-updateProcedureGetItemLack.sql b/db/changes/240601/01-updateProcedureGetItemLack.sql new file mode 100644 index 0000000000..a5cb41b3a3 --- /dev/null +++ b/db/changes/240601/01-updateProcedureGetItemLack.sql @@ -0,0 +1,65 @@ +DROP PROCEDURE IF EXISTS vn.item_getLack; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(IN vForce BOOLEAN, IN vDays INT, IN vSearch VARCHAR(500)) +BEGIN +/** + * Calcula una tabla con el máximo negativo visible para cada producto y almacen + * + * @param vForce Fuerza el recalculo del stock + * @param vDays Numero de dias a considerar + * @param vSearch Filtro items +**/ + + DECLARE vIsSearch BOOL DEFAULT vSearch IS NOT NULL AND vSearch <> ''; + CALL `cache`.stock_refresh(vForce); + CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL); + CALL item_getMinETD(); + CALL item_zoneClosure(); + + IF vIsSearch THEN + SET vSearch =' '; + END IF; + + SELECT i.id itemFk, + i.longName, + w.id warehouseFk, + p.`name` producer, + i.`size`, + i.category, + w.name warehouse, + SUM(IFNULL(sub.amount,0)) lack, + i.inkFk, + IFNULL(im.timed, util.midnight()) timed, + IFNULL(izc.timed, util.midnight()) minTimed + FROM (SELECT item_id, + warehouse_id, + amount + FROM cache.stock + WHERE amount > 0 + UNION ALL + SELECT itemFk, + warehouseFk, + amount + FROM tmp.itemMinacum + ) sub + JOIN warehouse w ON w.id = sub.warehouse_id + JOIN item i ON i.id = sub.item_id + LEFT JOIN producer p ON p.id = i.producerFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id + LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id + WHERE w.isForTicket + AND ic.display + AND it.code != 'GEN' + GROUP BY i.id, w.id + HAVING lack < 0; + + DROP TEMPORARY TABLE tmp.itemMinacum; + DROP TEMPORARY TABLE tmp.itemMinETD; + DROP TEMPORARY TABLE tmp.itemZoneClosure; +END +$$ +DELIMITER ; diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index ba513ee15a..6533cf273d 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -3043,6 +3043,12 @@ INSERT INTO `vn`.`clientSms` (`id`, `clientFk`, `smsFk`, `ticketFk`) (4, 1103, 4, 32), (13, 1101, 1, NULL), (14, 1101, 4, 27); --- Auto-generated SQL script #202401191358 -INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) - VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'); +INSERT INTO cache.stock (warehouse_id,item_id,amount) VALUES + (60,1,25), + (13,1,-20), + (4,1,-1000); + -- Auto-generated SQL script #202401220930 +UPDATE vn.warehouse + SET isForTicket=1 + WHERE id=2; + From 2bcb6366b248f872c2ba91107436ca6e545e52bf Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 22 Jan 2024 10:10:38 +0100 Subject: [PATCH 003/217] refs #6321 feat: vCustomWhere --- db/changes/240601/01-updateProcedureGetItemLack.sql | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/db/changes/240601/01-updateProcedureGetItemLack.sql b/db/changes/240601/01-updateProcedureGetItemLack.sql index a5cb41b3a3..8c36a762d6 100644 --- a/db/changes/240601/01-updateProcedureGetItemLack.sql +++ b/db/changes/240601/01-updateProcedureGetItemLack.sql @@ -2,7 +2,7 @@ DROP PROCEDURE IF EXISTS vn.item_getLack; DELIMITER $$ $$ -CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(IN vForce BOOLEAN, IN vDays INT, IN vSearch VARCHAR(500)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(IN vForce BOOLEAN, IN vDays INT, IN vCustomWhere VARCHAR(500)) BEGIN /** * Calcula una tabla con el máximo negativo visible para cada producto y almacen @@ -12,15 +12,11 @@ BEGIN * @param vSearch Filtro items **/ - DECLARE vIsSearch BOOL DEFAULT vSearch IS NOT NULL AND vSearch <> ''; CALL `cache`.stock_refresh(vForce); CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL); CALL item_getMinETD(); CALL item_zoneClosure(); - IF vIsSearch THEN - SET vSearch =' '; - END IF; SELECT i.id itemFk, i.longName, @@ -54,6 +50,7 @@ BEGIN WHERE w.isForTicket AND ic.display AND it.code != 'GEN' + AND (vCustomWhere IS NULL OR vCustomWhere = '' OR vCustomWhere) GROUP BY i.id, w.id HAVING lack < 0; From 895d9bff6436c7e74315b4e229c7f25b9f9b4535 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 29 Jan 2024 09:55:34 +0100 Subject: [PATCH 004/217] refs #6321 feat itemLAck with SQL --- .../01-updateProcedureGetItemLack copy.sql | 68 +++++++++ .../240601/01-updateProcedureGetItemLack.sql | 22 ++- .../ticket/back/methods/ticket/itemLack.js | 138 +++++++++++++++++- .../methods/ticket/specs/itemLack.spec.js | 31 ++++ 4 files changed, 253 insertions(+), 6 deletions(-) create mode 100644 db/changes/240601/01-updateProcedureGetItemLack copy.sql create mode 100644 modules/ticket/back/methods/ticket/specs/itemLack.spec.js diff --git a/db/changes/240601/01-updateProcedureGetItemLack copy.sql b/db/changes/240601/01-updateProcedureGetItemLack copy.sql new file mode 100644 index 0000000000..7372ad6998 --- /dev/null +++ b/db/changes/240601/01-updateProcedureGetItemLack copy.sql @@ -0,0 +1,68 @@ +DROP PROCEDURE IF EXISTS vn.item_getLack; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`( + IN vForce BOOLEAN DEFAULT TRUE, + IN vDays INT DEFAULT 2, + IN vCustomWhere TEXT, + ) + +BEGIN +/** + * Calcula una tabla con el máximo negativo visible para cada producto y almacen + * + * @param vForce Fuerza el recalculo del stock + * @param vDays Numero de dias a considerar + * @param vSearch Filtro items +**/ + + CALL `cache`.stock_refresh(vForce); + CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL); + CALL item_getMinETD(); + CALL item_zoneClosure(); + + + SET @sqlQuery = CONCAT(`SELECT i.id itemFk, + i.longName, + w.id warehouseFk, + p.`name` producer, + i.`size`, + i.category, + w.name warehouse, + SUM(IFNULL(sub.amount,0)) lack, + i.inkFk, + IFNULL(im.timed, util.midnight()) timed, + IFNULL(izc.timed, util.midnight()) minTimed + FROM (SELECT item_id, + warehouse_id, + amount + FROM cache.stock + WHERE amount > 0 + UNION ALL + SELECT itemFk, + warehouseFk, + amount + FROM tmp.itemMinacum + ) sub + JOIN warehouse w ON w.id = sub.warehouse_id + JOIN item i ON i.id = sub.item_id + LEFT JOIN producer p ON p.id = i.producerFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id + LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id + WHERE w.isForTicket + AND ic.display + AND it.code != 'GEN' + AND `,vCustomWhere,` + GROUP BY i.id, w.id + HAVING lack < 0;`); + CALL `exec`(@sqlQuery); + + DROP TEMPORARY TABLE tmp.itemMinacum; + DROP TEMPORARY TABLE tmp.itemMinETD; + DROP TEMPORARY TABLE tmp.itemZoneClosure; +END +$$ +DELIMITER ; diff --git a/db/changes/240601/01-updateProcedureGetItemLack.sql b/db/changes/240601/01-updateProcedureGetItemLack.sql index 8c36a762d6..0a59ecb2b7 100644 --- a/db/changes/240601/01-updateProcedureGetItemLack.sql +++ b/db/changes/240601/01-updateProcedureGetItemLack.sql @@ -2,7 +2,18 @@ DROP PROCEDURE IF EXISTS vn.item_getLack; DELIMITER $$ $$ -CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(IN vForce BOOLEAN, IN vDays INT, IN vCustomWhere VARCHAR(500)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`( + IN vForce BOOLEAN DEFAULT TRUE, + IN vDays INT DEFAULT 2, + IN vId INT DEFAULT NULL, + IN vLongname INT DEFAULT NULL, + IN vSupplier VARCHAR DEFAULT NULL, + IN vColor VARCHAR DEFAULT NULL, + IN vSize INT DEFAULT NULL, + IN vOrigen VARCHAR DEFAULT NULL, + IN vLack INT DEFAULT NULL + ) + BEGIN /** * Calcula una tabla con el máximo negativo visible para cada producto y almacen @@ -50,7 +61,14 @@ BEGIN WHERE w.isForTicket AND ic.display AND it.code != 'GEN' - AND (vCustomWhere IS NULL OR vCustomWhere = '' OR vCustomWhere) + AND (vId IS NULL OR i.id = vId) + AND (vLongname IS NULL OR i.longName = vLongname) + AND (vSupplier IS NULL OR p.`name` LIKE CONCAT('%', vSupplier, '%')) + AND (vColor IS NULL OR vColor = i.inkFk) + AND (vSize IS NULL OR vSize = i.`size`) + AND (vOrigen IS NULL OR vOrigen = w.name) + AND (vLack IS NULL OR vLack = lack) + GROUP BY i.id, w.id HAVING lack < 0; diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 35f299e6c1..fa4b500fbe 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -1,14 +1,52 @@ +/* eslint-disable no-console */ module.exports = Self => { Self.remoteMethod('itemLack', { description: 'Download a ticket delivery note document', accessType: 'READ', accepts: [ + { + arg: 'ctx', + type: 'object', + 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', + type: 'number', + description: 'The item id', + }, + { + arg: 'longname', + type: 'string', + description: 'The item id', + }, + { + arg: 'supplier', + type: 'string', + description: 'The client fiscal id', + }, + { + arg: 'color', + type: 'string', + description: 'The item id', + }, + { + arg: 'size', + type: 'string', description: 'The item id', + }, + { + arg: 'origen', + type: 'string', description: 'The item id', + }, + { + arg: 'lack', + type: 'number', description: 'The item id', + } ], returns: [ { @@ -25,15 +63,107 @@ module.exports = Self => { Self.itemLack = async(ctx, filter, options) => { const myOptions = {}; - + // const versionSQL = false; if (typeof options == 'object') Object.assign(myOptions, options); + // if (versionSQL) { + // const filterKeyOrder = ['id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack']; - // let query = 'CALL vn.item_getLack(?, ?)'; + // const {body} = ctx; - // const result = await Self.rawSql(query, [true, 2]); + // let procedureParams = [true, 2]; + // procedureParams.push(...filterKeyOrder.map(clave => body || null)); + // const procedureArgs = Array(procedureParams.length).fill('?').join(', '); + // let query = `CALL vn.item_getLack(${procedureArgs})`; - // if (tx) await tx.commit(); + // const result = await Self.rawSql(query, procedureParams, myOptions); + // console.log('qUERY:', query); + // console.log('Argumentos procedimiento:', procedureArgs); + // console.log('PArametros del procedimiento:', procedureParams); + // // const result = await Self.rawSql(query, [true, 2, ...procedureParams]); + // // console.log('Resultado', result); + // return result; + // } else { + // const where = buildFilter(ctx.args, (param, value) => { + // switch (param) { + // case 'id': + // return {'i.id': value}; + // case 'longname': + // return {'i.longName': value}; + // case 'name': + // return {'p.name': {like: `%${value}%`}}; + // case 'color': + // return {'i.inkFk': value}; + // case 'size': + // return {'i.size': value}; + // case 'origen': + // return {'w.name': value}; + // case 'lack': + // return {'lack': value}; + // } + // }) ?? {}; + + // const stmts = [ + // 'CALL cache.stock_refresh(vForce);', + // 'CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL);', + // 'CALL item_getMinETD();', + // 'CALL item_zoneClosure();' + // ]; + + // const stmt = new ParameterizedSQL(` + // SELECT i.id itemFk, + // i.longName, + // w.id warehouseFk, + // p.name producer, + // i.size, + // i.category, + // w.name warehouse, + // SUM(IFNULL(sub.amount,0)) lack, + // i.inkFk, + // IFNULL(im.timed, util.midnight()) timed, + // IFNULL(izc.timed, util.midnight()) minTimed + // FROM (SELECT item_id, + // warehouse_id, + // amount + // FROM cache.stock + // WHERE amount > 0 + // UNION ALL + // SELECT itemFk, + // warehouseFk, + // amount + // FROM tmp.itemMinacum + // ) sub + // JOIN warehouse w ON w.id = sub.warehouse_id + // JOIN item i ON i.id = sub.item_id + // LEFT JOIN producer p ON p.id = i.producerFk + // JOIN itemType it ON it.id = i.typeFk + // JOIN itemCategory ic ON ic.id = it.categoryFk + // LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id + // LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id + // WHERE w.isForTicket + // AND ic.display + // AND it.code != 'GEN' + // `); + + // const sqlWhere = conn.makeWhere(where); + + // stmt.merge(sqlWhere); + // stmt.merge(` + // GROUP BY i.id, w.id + // HAVING lack < 0;` + // ); + // stmts.push(` + // DROP TEMPORARY TABLE tmp.itemMinacum; + // DROP TEMPORARY TABLE tmp.itemMinETD; + // DROP TEMPORARY TABLE tmp.itemZoneClosure; + // `); + // stmt.merge(conn.makeSuffix(filter)); + // const itemsIndex = stmts.push(stmt) - 1; + + // const sql = ParameterizedSQL.join(stmts, ';'); + // const result = await conn.executeStmt(sql, myOptions); + // return itemsIndex === 0 ? result : result[itemsIndex]; + // } return [ { diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js new file mode 100644 index 0000000000..49651abb8b --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -0,0 +1,31 @@ +const models = require('vn-loopback/server/server').models; + +describe('Item Lack', () => { + it('should return data with NO filters', async() => { + const tx = await models.Ticket.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const result = await models.Ticket.itemLack(3, options); + + expect(result).toBeFalsy(); + } catch (e) { + throw e; + } + }); + + it('should return data with filters', async() => { + const tx = await models.Ticket.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const result = await models.Ticket.isEmpty(8, options); + + expect(result).toBeFalsy(); + } catch (e) { + throw e; + } + }); +}); From 1a21dda00b93c0c3b9d68fc9b2e79282f861a6f2 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 29 Jan 2024 09:55:44 +0100 Subject: [PATCH 005/217] refs #6321 feat itemLackDetail --- .../back/methods/ticket/itemLackDetail.js | 69 +++++++++++++++++++ .../ticket/specs/itemLackDetail.spec.js | 46 +++++++++++++ modules/ticket/back/models/ticket-methods.js | 1 + 3 files changed, 116 insertions(+) create mode 100644 modules/ticket/back/methods/ticket/itemLackDetail.js create mode 100644 modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js new file mode 100644 index 0000000000..e0efc4c192 --- /dev/null +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -0,0 +1,69 @@ +/* eslint-disable no-console */ +module.exports = Self => { + Self.remoteMethod('itemLackDetail', { + description: 'Download a ticket delivery note document', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + 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, + 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 + 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 + LEFT JOIN alertLevel al ON al.id = st.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 + AND Fecha >= util.VN_CURDATE() + AND Fecha < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY + ORDER BY s.Id_Movimiento DESC+ + `, [id, 2], myOptions); + + return detail; + }; +}; diff --git a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js new file mode 100644 index 0000000000..6b2881a842 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js @@ -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; + } + }); +}); diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index 5c7fdb7268..7482f7b394 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -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); }; From 871447cc6e1aaf309928676b74a07fca494515de Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 5 Mar 2024 08:07:54 +0100 Subject: [PATCH 006/217] refs #6321 feat: updates --- db/changes/240601/01-updateACLItemLack.sql | 2 + .../ticket/back/methods/ticket/itemLack.js | 2 +- .../back/methods/ticket/itemLackDetail.js | 81 +++++++++++-------- 3 files changed, 51 insertions(+), 34 deletions(-) diff --git a/db/changes/240601/01-updateACLItemLack.sql b/db/changes/240601/01-updateACLItemLack.sql index 13521325fb..90f05e14b6 100644 --- a/db/changes/240601/01-updateACLItemLack.sql +++ b/db/changes/240601/01-updateACLItemLack.sql @@ -1,3 +1,5 @@ -- Auto-generated SQL script #202401191358 INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'); +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index fa4b500fbe..383d0ba5bb 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -167,7 +167,7 @@ module.exports = Self => { return [ { - 'itemFk': 7176, + 'itemFk': 72176, 'longName': 'Anthurium Olivius x20', 'warehouseFk': 60, 'producer': null, diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index e0efc4c192..fc3ecd6756 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -1,4 +1,5 @@ /* eslint-disable no-console */ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethod('itemLackDetail', { description: 'Download a ticket delivery note document', @@ -8,62 +9,76 @@ module.exports = Self => { arg: 'id', type: 'number', description: 'The item id', - } + }, ], returns: [ { arg: 'body', type: ['object'], - root: true - } + root: true, + }, ], http: { path: `/itemLack/:id/detail`, - verb: 'GET' - } + verb: 'GET', + }, }); Self.itemLackDetail = async(id, options) => { - const myOptions = {}; - // const versionSQL = false; - if (typeof options == 'object') - Object.assign(myOptions, options); + const conn = Self.dataSource.connector; - const detail = await Self.rawSQL(` + const myOptions = {}; + if (typeof options == 'object') Object.assign(myOptions, options); + + const stmt = new ParameterizedSQL( + ` 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, + s.quantity, + ag.name, ts.alertLevel alertLevel, st.name stateName, st.id stateId, - s.Id_Article id, + s.itemFk itemFk, al.code alertLevelCode, z.name, z.hour theoreticalhour, cn.isRookie, sc.saleClonedFk turno, tr.saleFk peticionCompra, - t.Fecha minTimed + t.hour 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 - 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 - LEFT JOIN alertLevel al ON al.id = st.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 - AND Fecha >= util.VN_CURDATE() - AND Fecha < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY - ORDER BY s.Id_Movimiento DESC+ - `, [id, 2], myOptions); + vn.sale s + JOIN vn.ticket t ON t.id=s.ticketFk -- vn.ticket + LEFT JOIN vn.zone z ON z.id = t.zoneFk -- vn.zone + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk -- AND zc.dated = DateValue(t.Fecha) + JOIN vn.client c ON c.id=t.clientFk -- vn.client + LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id + JOIN vn.agencyMode agm ON agm.id=t.agencyModeFk -- vn.agencyMode + JOIN vn.agency ag ON ag.id=agm.id -- vn.agencyMode + JOIN vn.ticketState ts ON ts.ticketFk=t.id -- vn.sale + 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 + LIMIT 1 + `, + null + ); + // WHERE + // 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; }; }; From d1e7e133332566e1372c552b903115c3051f227c Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 6 Mar 2024 14:37:28 +0100 Subject: [PATCH 007/217] refs #6321 feat: acl --- db/versions/10936-wheatAnthurium/00-updateACL.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 db/versions/10936-wheatAnthurium/00-updateACL.sql diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql new file mode 100644 index 0000000000..35c81ce588 --- /dev/null +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -0,0 +1,4 @@ +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES + ('Ticket','itemLack','READ','ALLOW','ROLE','employee'), + ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'); From c8446eb9a1c580e07ab9fce8986311d695ebe190 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 13 Mar 2024 09:20:32 +0100 Subject: [PATCH 008/217] refs #6321 perf: updatemethod --- .../ticket/back/methods/ticket/itemLack.js | 931 ++---------------- 1 file changed, 89 insertions(+), 842 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 383d0ba5bb..b934d7b153 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -1,4 +1,7 @@ -/* eslint-disable no-console */ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const {buildFilter} = require('vn-loopback/util/filter'); + module.exports = Self => { Self.remoteMethod('itemLack', { description: 'Download a ticket delivery note document', @@ -23,25 +26,27 @@ module.exports = Self => { { arg: 'longname', type: 'string', - description: 'The item id', + description: 'Article name', }, { arg: 'supplier', type: 'string', - description: 'The client fiscal id', + description: 'Supplier id', }, { arg: 'color', type: 'string', - description: 'The item id', + description: 'Color\'s item', }, { arg: 'size', - type: 'string', description: 'The item id', + type: 'string', + description: 'Size\'s item', }, { arg: 'origen', - type: 'string', description: 'The item id', + type: 'string', + description: 'origen id', }, { arg: 'lack', @@ -63,849 +68,91 @@ module.exports = Self => { Self.itemLack = async(ctx, filter, options) => { const myOptions = {}; - // const versionSQL = false; if (typeof options == 'object') Object.assign(myOptions, options); - // if (versionSQL) { - // const filterKeyOrder = ['id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack']; + const conn = Self.dataSource.connector; + let where = {}; + where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'id': + return {'i.id': value}; + case 'longname': + return {'i.longName': value}; + case 'name': + return {'p.name': {like: `%${value}%`}}; + case 'color': + return {'i.inkFk': value}; + case 'size': + return {'i.size': value}; + case 'origen': + return {'w.name': value}; + case 'lack': + return {'lack': value}; + } + }) ?? {}; - // const {body} = ctx; + const stmts = []; + stmts.push(`SET @_optimizer_search_depth = @@optimizer_search_depth`); + stmts.push(`SET SESSION optimizer_search_depth = 0`); - // let procedureParams = [true, 2]; - // procedureParams.push(...filterKeyOrder.map(clave => body || null)); - // const procedureArgs = Array(procedureParams.length).fill('?').join(', '); - // let query = `CALL vn.item_getLack(${procedureArgs})`; + stmts.push(`CALL cache.stock_refresh(true)`); + stmts.push(`CALL item_getMinacum(NULL, util.VN_CURDATE(), 2, NULL)`); + stmts.push(`CALL item_getMinETD()`); + stmts.push(`CALL item_zoneClosure()`); - // const result = await Self.rawSql(query, procedureParams, myOptions); - // console.log('qUERY:', query); - // console.log('Argumentos procedimiento:', procedureArgs); - // console.log('PArametros del procedimiento:', procedureParams); - // // const result = await Self.rawSql(query, [true, 2, ...procedureParams]); - // // console.log('Resultado', result); - // return result; - // } else { - // const where = buildFilter(ctx.args, (param, value) => { - // switch (param) { - // case 'id': - // return {'i.id': value}; - // case 'longname': - // return {'i.longName': value}; - // case 'name': - // return {'p.name': {like: `%${value}%`}}; - // case 'color': - // return {'i.inkFk': value}; - // case 'size': - // return {'i.size': value}; - // case 'origen': - // return {'w.name': value}; - // case 'lack': - // return {'lack': value}; - // } - // }) ?? {}; + const stmt = new ParameterizedSQL(` + SELECT i.id itemFk, + i.longName, + w.id warehouseFk, + p.name producer, + i.size, + i.category, + w.name warehouse, + SUM(IFNULL(sub.amount,0)) lack, + i.inkFk, + IFNULL(im.timed, util.midnight()) timed, + IFNULL(izc.timed, util.midnight()) minTimed + FROM (SELECT item_id, + warehouse_id, + amount + FROM cache.stock + WHERE amount > 0 + UNION ALL + SELECT itemFk, + warehouseFk, + amount + FROM tmp.itemMinacum + ) sub + JOIN warehouse w ON w.id = sub.warehouse_id + JOIN item i ON i.id = sub.item_id + LEFT JOIN producer p ON p.id = i.producerFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id + LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id + `); - // const stmts = [ - // 'CALL cache.stock_refresh(vForce);', - // 'CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL);', - // 'CALL item_getMinETD();', - // 'CALL item_zoneClosure();' - // ]; + const sqlWhere = conn.makeWhere(where); + stmt.merge(sqlWhere); + const prefix = Object.keys(where).length > 0 ? 'AND' : 'WHERE'; + stmt.merge(`${prefix} w.isForTicket + AND ic.display + AND it.code != 'GEN'`); - // const stmt = new ParameterizedSQL(` - // SELECT i.id itemFk, - // i.longName, - // w.id warehouseFk, - // p.name producer, - // i.size, - // i.category, - // w.name warehouse, - // SUM(IFNULL(sub.amount,0)) lack, - // i.inkFk, - // IFNULL(im.timed, util.midnight()) timed, - // IFNULL(izc.timed, util.midnight()) minTimed - // FROM (SELECT item_id, - // warehouse_id, - // amount - // FROM cache.stock - // WHERE amount > 0 - // UNION ALL - // SELECT itemFk, - // warehouseFk, - // amount - // FROM tmp.itemMinacum - // ) sub - // JOIN warehouse w ON w.id = sub.warehouse_id - // JOIN item i ON i.id = sub.item_id - // LEFT JOIN producer p ON p.id = i.producerFk - // JOIN itemType it ON it.id = i.typeFk - // JOIN itemCategory ic ON ic.id = it.categoryFk - // LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id - // LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id - // WHERE w.isForTicket - // AND ic.display - // AND it.code != 'GEN' - // `); + stmt.merge(` + GROUP BY i.id, w.id + HAVING lack < 0` + ); + stmt.merge(conn.makeSuffix(filter)); + const itemsIndex = stmts.push(stmt) - 1; + stmts.push( + `DROP TEMPORARY TABLE + tmp.itemMinacum, + tmp.itemMinETD, + tmp.itemZoneClosure`); - // const sqlWhere = conn.makeWhere(where); - - // stmt.merge(sqlWhere); - // stmt.merge(` - // GROUP BY i.id, w.id - // HAVING lack < 0;` - // ); - // stmts.push(` - // DROP TEMPORARY TABLE tmp.itemMinacum; - // DROP TEMPORARY TABLE tmp.itemMinETD; - // DROP TEMPORARY TABLE tmp.itemZoneClosure; - // `); - // stmt.merge(conn.makeSuffix(filter)); - // const itemsIndex = stmts.push(stmt) - 1; - - // const sql = ParameterizedSQL.join(stmts, ';'); - // const result = await conn.executeStmt(sql, myOptions); - // return itemsIndex === 0 ? result : result[itemsIndex]; - // } - - return [ - { - 'itemFk': 72176, - 'longName': 'Anthurium Olivius x20', - 'warehouseFk': 60, - 'producer': null, - 'size': null, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -40, - 'inkFk': 'VRD', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 14613, - 'longName': 'Crisantemo Uniflora Anastasia Topsin', - 'warehouseFk': 60, - 'producer': null, - 'size': 70, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -10, - 'inkFk': 'BLN', - 'timed': '2024-01-19T15:20:00.000Z', - 'minTimed': '16:20' - }, - { - 'itemFk': 28619, - 'longName': 'Clavel Mix Fancy', - 'warehouseFk': 60, - 'producer': 'Benchmark', - 'size': 60, - 'category': 'Fan', - 'warehouse': 'Algemesi', - 'lack': -700, - 'inkFk': 'MIX', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 29422, - 'longName': 'Lisianthus Doble Green', - 'warehouseFk': 60, - 'producer': 'L.I.S.', - 'size': 65, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -10, - 'inkFk': 'VRC', - 'timed': '2024-01-19T16:00:00.000Z', - 'minTimed': '17:00' - }, - { - 'itemFk': 29590, - 'longName': 'Schlumbergera (3 Colors)', - 'warehouseFk': 60, - 'producer': 'Gartneriet Thoruplund', - 'size': 18, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -18, - 'inkFk': 'MIX', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 33636, - 'longName': 'Antirrinum Lavander', - 'warehouseFk': 60, - 'producer': null, - 'size': 80, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -10, - 'inkFk': 'LAV', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 36864, - 'longName': 'Kattegrass (Comida para gatos)', - 'warehouseFk': 60, - 'producer': 'Willem Jongenotter Kw.', - 'size': 10, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -10, - 'inkFk': 'VRD', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 38631, - 'longName': 'Triple Accion Listo Uso', - 'warehouseFk': 60, - 'producer': 'Flower', - 'size': null, - 'category': 'ml', - 'warehouse': 'Algemesi', - 'lack': -24, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 53233, - 'longName': 'Clavel Cheerio Fancy', - 'warehouseFk': 60, - 'producer': 'Benchmark', - 'size': 60, - 'category': 'Fan', - 'warehouse': 'Algemesi', - 'lack': -50, - 'inkFk': 'R\/B', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 60525, - 'longName': 'Rosa Explorer Extra', - 'warehouseFk': 60, - 'producer': 'Floraroma', - 'size': 60, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -500, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 68998, - 'longName': 'Clavel Hot Pink Select', - 'warehouseFk': 60, - 'producer': 'Funza', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -25, - 'inkFk': 'FUC', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 77807, - 'longName': 'Hydrangea Mix 4Flo', - 'warehouseFk': 60, - 'producer': 'Schroll-Flowers', - 'size': 35, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -6, - 'inkFk': 'MIX', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 84883, - 'longName': 'Rosa Freedom Standard', - 'warehouseFk': 60, - 'producer': 'El Milagro', - 'size': 40, - 'category': 'Sta', - 'warehouse': 'Algemesi', - 'lack': -600, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 92466, - 'longName': 'Clavel Kino Select', - 'warehouseFk': 60, - 'producer': 'Funza', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -25, - 'inkFk': 'P\/B', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 93355, - 'longName': 'Clavel Caramel Fancy', - 'warehouseFk': 60, - 'producer': 'Funza', - 'size': 60, - 'category': 'Fan', - 'warehouse': 'Algemesi', - 'lack': -50, - 'inkFk': 'TRR', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 95068, - 'longName': 'Alstroemeria Fifi Plus', - 'warehouseFk': 60, - 'producer': 'Funza', - 'size': 80, - 'category': 'Plu', - 'warehouse': 'Algemesi', - 'lack': -30, - 'inkFk': 'SWE', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 107891, - 'longName': 'Rosa Freedom Select', - 'warehouseFk': 60, - 'producer': 'Excellence', - 'size': 40, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -1000, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 113163, - 'longName': 'Lilium Oriental Roselily Aisha 2', - 'warehouseFk': 60, - 'producer': 'Moerman Lilium BV', - 'size': 65, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -10, - 'inkFk': 'BLN', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 117832, - 'longName': 'Rosa Freedom Standard', - 'warehouseFk': 60, - 'producer': 'Multiflora', - 'size': 50, - 'category': 'Sta', - 'warehouse': 'Algemesi', - 'lack': -200, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 123005, - 'longName': 'Rosa Orange Crush Extra', - 'warehouseFk': 60, - 'producer': 'Trebol', - 'size': 50, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -125, - 'inkFk': 'NAR', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 123380, - 'longName': 'Clavel Hypnosis Standard', - 'warehouseFk': 60, - 'producer': 'GEOFLORA', - 'size': 50, - 'category': 'Sta', - 'warehouse': 'Algemesi', - 'lack': -25, - 'inkFk': 'LAV', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 124948, - 'longName': 'Cymbidium Mon Amour', - 'warehouseFk': 60, - 'producer': 'New Orchids', - 'size': 60, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -1, - 'inkFk': 'BLN', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 125062, - 'longName': 'Hoya Kerri Cerámica', - 'warehouseFk': 60, - 'producer': 'Gartneriet Lundager', - 'size': 15, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -18, - 'inkFk': 'VRD', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 125593, - 'longName': 'Hoya Kerri Cerámica Roja', - 'warehouseFk': 60, - 'producer': 'v.d. Arend Tropical', - 'size': 12, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -1, - 'inkFk': 'VRD', - 'timed': '2024-01-19T15:20:00.000Z', - 'minTimed': '16:20' - }, - { - 'itemFk': 126428, - 'longName': 'Rosa Freedom Extra', - 'warehouseFk': 60, - 'producer': 'Matina', - 'size': 50, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -25, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 128417, - 'longName': 'Rosa Brighton Select', - 'warehouseFk': 60, - 'producer': 'Excellence', - 'size': 50, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -75, - 'inkFk': 'AMA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 132651, - 'longName': 'Rosa Freedom Select', - 'warehouseFk': 60, - 'producer': 'Excellence', - 'size': 60, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -1250, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 135194, - 'longName': 'Eucalipto Torreliana Small', - 'warehouseFk': 60, - 'producer': null, - 'size': 40, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -20, - 'inkFk': 'M\/V', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 135516, - 'longName': 'Hydrangea Curaçao Petite', - 'warehouseFk': 60, - 'producer': 'Flores del Este', - 'size': 60, - 'category': 'Pet', - 'warehouse': 'Algemesi', - 'lack': -15, - 'inkFk': 'AZL', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 136169, - 'longName': 'Hydrangea Turquesa Jumbo', - 'warehouseFk': 60, - 'producer': null, - 'size': 0, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -1, - 'inkFk': 'TUR', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 136518, - 'longName': 'Rosa Freedom Select', - 'warehouseFk': 60, - 'producer': 'Excellence', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -200, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 136733, - 'longName': 'Rosa LightHouse Premium', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 50, - 'category': 'Pre', - 'warehouse': 'Algemesi', - 'lack': -100, - 'inkFk': 'AMA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137200, - 'longName': 'Rosa Luciano Extra', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 50, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -250, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137203, - 'longName': 'Rosa Satina Extra', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 40, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -600, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137204, - 'longName': 'Rosa Satina Extra', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 50, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -125, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137207, - 'longName': 'Rosa Mix Extra', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 40, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -875, - 'inkFk': 'MIX', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137213, - 'longName': 'Rosa Vendela Extra', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 40, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -1800, - 'inkFk': 'BLN', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137233, - 'longName': 'Rosa Freedom Extra', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 40, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -1200, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137234, - 'longName': 'Rosa Freedom Extra', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 50, - 'category': 'Ext', - 'warehouse': 'Algemesi', - 'lack': -600, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 137748, - 'longName': 'Clavel Mini Hot Pink Select', - 'warehouseFk': 60, - 'producer': null, - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -20, - 'inkFk': 'FUC', - 'timed': '2024-01-19T12:45:00.000Z', - 'minTimed': '13:45' - }, - { - 'itemFk': 137814, - 'longName': 'Rosa Freedom Premium', - 'warehouseFk': 60, - 'producer': 'Santa Dorotea', - 'size': 80, - 'category': 'Pre', - 'warehouse': 'Algemesi', - 'lack': -1200, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 139016, - 'longName': 'Cesta Cassius', - 'warehouseFk': 60, - 'producer': 'Mega Ceramics', - 'size': 29, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -2, - 'inkFk': 'NAT', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 142330, - 'longName': 'Rosa Glam Dome Rosa', - 'warehouseFk': 60, - 'producer': null, - 'size': 0, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -3, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 142331, - 'longName': 'Rosa Glam Dome Rojo', - 'warehouseFk': 60, - 'producer': null, - 'size': 0, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -6, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143511, - 'longName': 'Clavel White Florafil Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -200, - 'inkFk': 'BLN', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143512, - 'longName': 'Clavel Red Florafil Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -200, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143513, - 'longName': 'Clavel Lege Pink Florafil Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -200, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143556, - 'longName': 'Clavel Mini White Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -400, - 'inkFk': 'BLN', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143557, - 'longName': 'Clavel Mini Red Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -400, - 'inkFk': 'ROJ', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143575, - 'longName': 'Clavel Mini Bicolor Mix Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -2000, - 'inkFk': 'MIX', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143697, - 'longName': 'Syngonium Rosa Colgante', - 'warehouseFk': 60, - 'producer': 'Quakelplant BV', - 'size': 35, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -3, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143833, - 'longName': 'Cymbidium Magic', - 'warehouseFk': 60, - 'producer': 'HVS Orchids', - 'size': 50, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -3, - 'inkFk': 'BLN', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143918, - 'longName': 'Ranunculus Sprinkles Mix', - 'warehouseFk': 60, - 'producer': 'Firma P.A.M. van Os', - 'size': 27, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -12, - 'inkFk': 'MIX', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 143923, - 'longName': 'Dieff se Tropic Snow 2 Plantas', - 'warehouseFk': 60, - 'producer': 'Floramiata', - 'size': 80, - 'category': null, - 'warehouse': 'Algemesi', - 'lack': -1, - 'inkFk': 'VRD', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 144034, - 'longName': 'Clavel Pink Florafil Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -200, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 144035, - 'longName': 'Clavel Bicolor Mix Florafil Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -2000, - 'inkFk': 'MIX', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }, - { - 'itemFk': 144115, - 'longName': 'Clavel Mini Hot Pink Select', - 'warehouseFk': 60, - 'producer': 'Colibri', - 'size': 70, - 'category': 'Sel', - 'warehouse': 'Algemesi', - 'lack': -400, - 'inkFk': 'RSA', - 'timed': '2024-01-19T22:59:59.000Z', - 'minTimed': '2024-01-19 23:59:59' - }]; + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + return itemsIndex === 0 ? result : result[itemsIndex]; }; }; From ed6b25455b1f26e9ef2310ac41c13814d97ca974 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 13 Mar 2024 14:27:45 +0100 Subject: [PATCH 009/217] refs #5858 feat: improve itemLackDetail --- .../back/methods/ticket/itemLackDetail.js | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index fc3ecd6756..c7671c2e76 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -53,29 +53,24 @@ module.exports = Self => { t.hour minTimed FROM vn.sale s - JOIN vn.ticket t ON t.id=s.ticketFk -- vn.ticket - LEFT JOIN vn.zone z ON z.id = t.zoneFk -- vn.zone - LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk -- AND zc.dated = DateValue(t.Fecha) - JOIN vn.client c ON c.id=t.clientFk -- vn.client + 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 -- vn.agencyMode - JOIN vn.agency ag ON ag.id=agm.id -- vn.agencyMode - JOIN vn.ticketState ts ON ts.ticketFk=t.id -- vn.sale + 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 - LIMIT 1 + WHERE + s.itemFk = ? + AND t.landed >= util.VN_CURDATE() + AND t.landed < util.VN_CURDATE() + INTERVAL ? + 1 DAY `, - null - ); - // WHERE - // s.itemFk = ? - - // AND t.landed >= util.VN_CURDATE() - // AND t.landed < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY - // ORDER BY s.id DESC+ - // [id,2] + [id, 2]); const sql = ParameterizedSQL.join([stmt], ';'); const result = await conn.executeStmt(sql, myOptions); From 6a12af2eb9f4d6a026c085a3b80cfb52c2b92427 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 14 Mar 2024 15:26:30 +0100 Subject: [PATCH 010/217] refs #6321 feat: add producerFk --- db/dump/fixtures.before.sql | 36 +++++++++--------- .../ticket/back/methods/ticket/itemDetail.sql | 38 +++++++++++++++++++ .../ticket/back/methods/ticket/itemLack.js | 1 + 3 files changed, 57 insertions(+), 18 deletions(-) create mode 100644 modules/ticket/back/methods/ticket/itemDetail.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 646120462a..3ce756c776 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -938,25 +938,25 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`) ('VT', 'Sales'); INSERT INTO `vn`.`item`(`id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`, - `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `weightByPiece`) + `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `weightByPiece`, `category`) VALUES - (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3), - (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2), - (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5), - (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), - (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL), - (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), - (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), - (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), - (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL); + (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3, 'SEL'), + (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2, 'SEL'), + (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5, 'SEL'), + (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (6, 5, 1, 2, NULL, 1, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (7, 5, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 'SEL'), + (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), + (13, 5, 1, 2, NULL, 1, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL, 'SEL'), + (14, 5, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 'SEL'), + (15, 4, NULL, 1, NULL, 1, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 'SEL'), + (16, 6, NULL, 1, NULL, 1, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 'SEL'), + (71, 6, NULL, 1, NULL, 2, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'); -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 diff --git a/modules/ticket/back/methods/ticket/itemDetail.sql b/modules/ticket/back/methods/ticket/itemDetail.sql new file mode 100644 index 0000000000..8538378e76 --- /dev/null +++ b/modules/ticket/back/methods/ticket/itemDetail.sql @@ -0,0 +1,38 @@ + SELECT + s.id saleFk, + st.code, + t.id ticketFk, + t.nickname, + t.hour, + s.quantity, + ag.name, + ts.alertLevel alertLevel, + st.name stateName, + st.id stateId, + s.itemFk itemFk, + al.code alertLevelCode, + z.name, + z.hour theoreticalhour, + cn.isRookie, + sc.saleClonedFk turno, + tr.saleFk peticionCompra, + t.hour minTimed + FROM + vn.sale s + JOIN vn.ticket t ON t.id=s.ticketFk -- vn.ticket + LEFT JOIN vn.zone z ON z.id = t.zoneFk -- vn.zone + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk -- AND zc.dated = DateValue(t.Fecha) + JOIN vn.client c ON c.id=t.clientFk -- vn.client + LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id + JOIN vn.agencyMode agm ON agm.id=t.agencyModeFk -- vn.agencyMode + JOIN vn.agency ag ON ag.id=agm.id -- vn.agencyMode + JOIN vn.ticketState ts ON ts.ticketFk=t.id -- vn.sale + 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 + WHERE + s.itemFk = ? + AND t.landed >= util.VN_CURDATE() + AND t.landed < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY + `, diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index b934d7b153..b384084003 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -105,6 +105,7 @@ module.exports = Self => { i.longName, w.id warehouseFk, p.name producer, + p.id producerFk, i.size, i.category, w.name warehouse, From f83f7808c8d41fa66f103199e69bea9b8e84f8fe Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 15 Mar 2024 09:32:36 +0100 Subject: [PATCH 011/217] refs #6321 feat: negativeOrigin method --- db/changes/240601/01-updateACLItemLack.sql | 4 ++ .../back/methods/ticket/itemLackOrigin.js | 40 +++++++++++++++++++ .../ticket/specs/itemLackoOrigin.spec.js | 19 +++++++++ modules/ticket/back/models/ticket-methods.js | 1 + 4 files changed, 64 insertions(+) create mode 100644 modules/ticket/back/methods/ticket/itemLackOrigin.js create mode 100644 modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js diff --git a/db/changes/240601/01-updateACLItemLack.sql b/db/changes/240601/01-updateACLItemLack.sql index 90f05e14b6..197dea786f 100644 --- a/db/changes/240601/01-updateACLItemLack.sql +++ b/db/changes/240601/01-updateACLItemLack.sql @@ -1,5 +1,9 @@ -- Auto-generated SQL script #202401191358 INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'); + INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'); + +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/ticket/itemLackOrigin.js b/modules/ticket/back/methods/ticket/itemLackOrigin.js new file mode 100644 index 0000000000..f720f3d633 --- /dev/null +++ b/modules/ticket/back/methods/ticket/itemLackOrigin.js @@ -0,0 +1,40 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +module.exports = Self => { + Self.remoteMethod('itemLackOrigin', { + description: 'Insert ticket negative into negativeOrigin', + accessType: 'WRITE', + accepts: [{ + arg: 'ctx', + type: 'Object', + http: {source: 'context'} + }, {arg: 'tickets', type: 'array', http: {source: 'body'}}], + returns: + { + type: 'boolean', + root: true + }, + http: { + path: `/itemLack`, + verb: 'POST' + } + }); + + Self.itemLackOrigin = async(ctx, data, options) => { + const myOptions = {}; + if (typeof options == 'object') + Object.assign(myOptions, options); + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + const conn = Self.dataSource.connector; + const stmts = data.map(({itemFk, negativeType, lack}) => + `INSERT INTO vn.negativeOrigin (itemFk, type, quantity) + VALUES (${itemFk}, '${negativeType}', ${lack}) + ON DUPLICATE KEY UPDATE quantity = quantity + VALUES(quantity)`) ?? []; + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + return result; + }; +}; diff --git a/modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js new file mode 100644 index 0000000000..901bd12bb7 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js @@ -0,0 +1,19 @@ +const models = require('vn-loopback/server/server').models; + +describe('Item Lack NegativeOrigin', () => { + it('should return OK', async() => { + const tx = await models.Ticket.beginTransaction({}); + const ctx = {req: {accessToken: {userId: 9}}}; + + const options = {transaction: tx}; + const data = [{itemFk: 1, negativeType: 'FALTAS', lack: 1}, {itemFk: 1, negativeType: 'FALTAS', lack: 2}]; + + await models.Ticket.itemLackOrigin(ctx, data, options); + const query = 'SELECT * FROM vn.negativeOrigin'; + + const negativeOrigin = await models.Application.rawSql(query, null, options); + + expect(negativeOrigin.length).toEqual(1); + expect(negativeOrigin[0].quantity).toEqual(3); + }); +}); diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index 687eb8e58c..b057e7ffd2 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -48,4 +48,5 @@ module.exports = function(Self) { require('../methods/ticket/myLastModified')(Self); require('../methods/ticket/itemLack')(Self); require('../methods/ticket/itemLackDetail')(Self); + require('../methods/ticket/itemLackOrigin')(Self); }; From 6c0706cc566dab7c846897a13e54aed7c1854693 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 15 Mar 2024 09:33:06 +0100 Subject: [PATCH 012/217] refs #6321 perf: query to retrieve results --- modules/ticket/back/methods/ticket/itemLackDetail.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index c7671c2e76..0821633924 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -37,19 +37,20 @@ module.exports = Self => { st.code, t.id ticketFk, t.nickname, + t.shipped, t.hour, s.quantity, - ag.name, + ag.name agName, ts.alertLevel alertLevel, st.name stateName, st.id stateId, s.itemFk itemFk, al.code alertLevelCode, - z.name, + z.name zoneName, z.hour theoreticalhour, cn.isRookie, - sc.saleClonedFk turno, - tr.saleFk peticionCompra, + IF(sc.saleClonedFk, 1, 0 ) as turno, + IF(tr.saleFk , 1, 0 ) as peticionCompra, t.hour minTimed FROM vn.sale s From a943e39ba74429c601bf39566b6f962805900069 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 22 Mar 2024 22:44:37 +0100 Subject: [PATCH 013/217] refs #6321 feat: negativeOrigin --- .../10936-wheatAnthurium/00-updateACL.sql | 4 ++- .../back/methods/ticket/negativeOrigin.js | 36 +++++++++++++++++++ modules/ticket/back/models/ticket-methods.js | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 modules/ticket/back/methods/ticket/negativeOrigin.js diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql index 35c81ce588..42cf734e77 100644 --- a/db/versions/10936-wheatAnthurium/00-updateACL.sql +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -1,4 +1,6 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'), - ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'); + ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'), + ('Ticket','itemLackOrigin','READ','ALLOW','ROLE','employee'), + ('Ticket','negativeOrigin','READ','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/ticket/negativeOrigin.js b/modules/ticket/back/methods/ticket/negativeOrigin.js new file mode 100644 index 0000000000..ee251ff3e0 --- /dev/null +++ b/modules/ticket/back/methods/ticket/negativeOrigin.js @@ -0,0 +1,36 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +module.exports = Self => { + Self.remoteMethod('negativeOrigin', { + description: 'Insert ticket negative into negativeOrigin', + accessType: 'READ', + accepts: [{ + arg: 'ctx', + type: 'Object', + http: {source: 'context'} + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/negativeOrigin`, + verb: 'GET' + } + }); + + Self.negativeOrigin = async(ctx, data, options) => { + const myOptions = {}; + if (typeof options == 'object') + Object.assign(myOptions, options); + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + const conn = Self.dataSource.connector; + const stmts = ['SELECT * FROM vn.negativeOrigin']; + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + return result; + }; +}; diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index b057e7ffd2..88fdb435e3 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -49,4 +49,5 @@ module.exports = function(Self) { require('../methods/ticket/itemLack')(Self); require('../methods/ticket/itemLackDetail')(Self); require('../methods/ticket/itemLackOrigin')(Self); + require('../methods/ticket/negativeOrigin')(Self); }; From e6fe245b276946fa61b6875fddcc8913901fb90e Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 27 Mar 2024 14:09:25 +0100 Subject: [PATCH 014/217] refs #6321 feat: new split method --- .../10936-wheatAnthurium/00-updateACL.sql | 3 +- .../back/methods/ticket/itemLackOrigin.js | 2 +- modules/ticket/back/methods/ticket/split.js | 83 +++++++++++++++++++ modules/ticket/back/models/ticket-methods.js | 1 + 4 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 modules/ticket/back/methods/ticket/split.js diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql index 42cf734e77..32acce8a2b 100644 --- a/db/versions/10936-wheatAnthurium/00-updateACL.sql +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -2,5 +2,6 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,princi VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'), ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'), - ('Ticket','itemLackOrigin','READ','ALLOW','ROLE','employee'), + ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee'), + ('Ticket','split','WRITE','ALLOW','ROLE','employee'), ('Ticket','negativeOrigin','READ','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/ticket/itemLackOrigin.js b/modules/ticket/back/methods/ticket/itemLackOrigin.js index f720f3d633..ca485b9879 100644 --- a/modules/ticket/back/methods/ticket/itemLackOrigin.js +++ b/modules/ticket/back/methods/ticket/itemLackOrigin.js @@ -15,7 +15,7 @@ module.exports = Self => { root: true }, http: { - path: `/itemLack`, + path: `/itemLackOrigin`, verb: 'POST' } }); diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js new file mode 100644 index 0000000000..a5905663c4 --- /dev/null +++ b/modules/ticket/back/methods/ticket/split.js @@ -0,0 +1,83 @@ +const {ParameterizedSQL} = require('loopback-connector/lib/sql'); +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('split', { + description: 'Split a ticket or n tickets', + accessType: 'WRITE', + accepts: [ + { + + type: ['Object'], + required: true, + http: {source: 'body'} + } + ], + returns: { + type: ['Object'], + root: true + }, + http: { + path: `/split`, + verb: 'POST' + } + }); + + Self.split = async(ctx, tickets, options) => { + // const models = Self.app.models; + const myOptions = {}; + let tx; + let results = []; + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + // const conn = Self.dataSource.connector; + // const stmts = []; + try { + const ticketsIds = tickets.map(({id}, index) => id); + const ticketsCount = await Self.rawSql(` + Select t.id tid, s.id sid, count(s.id) count from + vn.ticket t + LEFT JOIN vn.sale s + ON s.ticketFk = t.id + WHERE t.id IN (?) GROUP BY t.id;`, + [ticketsIds], myOptions); + console.log(ticketsCount); + + // stmts.push(stmt); + // const sql = ParameterizedSQL.join(stmts, ';'); + // const result = await conn.executeStmt(sql, myOptions); + for (const {tid, sid, count} of ticketsCount) { + try { + if (count === 1) { + results.push({ticket: tid, message: 'noSplit'}); + continue; + } + const [, [{vNewTicket}]] = await Self.rawSql(` + CALL vn.ticket_clone(?, @vNewTicket); + SELECT @vNewTicket vNewTicket;`, + [tid], myOptions); + + if (vNewTicket === 0) continue; + await Self.rawSql(` + UPDATE vn.sale SET isPicked = (id = ?) WHERE ticketFk = ?`, + [sid, tid], myOptions); + await Self.transferSales(ctx, tid, vNewTicket, sid, myOptions); + + await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [tid, 'FIXING'], myOptions); + results.push({ticket: tid, message: 'split'}); + } catch (error) { + throw new UserError('You cannot close tickets for today'); + } + } + return results; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index f5c5edeb38..7e189bcc7d 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -52,4 +52,5 @@ module.exports = function(Self) { require('../methods/ticket/itemLackDetail')(Self); require('../methods/ticket/itemLackOrigin')(Self); require('../methods/ticket/negativeOrigin')(Self); + require('../methods/ticket/split')(Self); }; From 65a6174e2b3655ed0a4fbb12d1ac48e82486220f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 28 Mar 2024 12:01:06 +0100 Subject: [PATCH 015/217] refs #6321 updates --- modules/ticket/back/methods/ticket/split.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index a5905663c4..8772bad87e 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -38,7 +38,7 @@ module.exports = Self => { // const conn = Self.dataSource.connector; // const stmts = []; try { - const ticketsIds = tickets.map(({id}, index) => id); + const ticketsIds = tickets.map(({ticketFk}, index) => ticketFk); const ticketsCount = await Self.rawSql(` Select t.id tid, s.id sid, count(s.id) count from vn.ticket t From d62c55dc9feb0b76dea34d5fe5d5c840630816cf Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 1 Apr 2024 13:11:58 +0200 Subject: [PATCH 016/217] refs #6321 test: negativeOrigin --- .../back/methods/ticket/itemLackOrigin.js | 2 +- .../ticket/specs/itemLackoOrigin.spec.js | 19 ------- .../ticket/specs/negativeOrigin.spec.js | 51 +++++++++++++++++++ 3 files changed, 52 insertions(+), 20 deletions(-) delete mode 100644 modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js create mode 100644 modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js diff --git a/modules/ticket/back/methods/ticket/itemLackOrigin.js b/modules/ticket/back/methods/ticket/itemLackOrigin.js index ca485b9879..73673c17da 100644 --- a/modules/ticket/back/methods/ticket/itemLackOrigin.js +++ b/modules/ticket/back/methods/ticket/itemLackOrigin.js @@ -31,7 +31,7 @@ module.exports = Self => { const conn = Self.dataSource.connector; const stmts = data.map(({itemFk, negativeType, lack}) => `INSERT INTO vn.negativeOrigin (itemFk, type, quantity) - VALUES (${itemFk}, '${negativeType}', ${lack}) + VALUES (${itemFk}, "${negativeType}", ${lack}) ON DUPLICATE KEY UPDATE quantity = quantity + VALUES(quantity)`) ?? []; const sql = ParameterizedSQL.join(stmts, ';'); const result = await conn.executeStmt(sql, myOptions); diff --git a/modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js deleted file mode 100644 index 901bd12bb7..0000000000 --- a/modules/ticket/back/methods/ticket/specs/itemLackoOrigin.spec.js +++ /dev/null @@ -1,19 +0,0 @@ -const models = require('vn-loopback/server/server').models; - -describe('Item Lack NegativeOrigin', () => { - it('should return OK', async() => { - const tx = await models.Ticket.beginTransaction({}); - const ctx = {req: {accessToken: {userId: 9}}}; - - const options = {transaction: tx}; - const data = [{itemFk: 1, negativeType: 'FALTAS', lack: 1}, {itemFk: 1, negativeType: 'FALTAS', lack: 2}]; - - await models.Ticket.itemLackOrigin(ctx, data, options); - const query = 'SELECT * FROM vn.negativeOrigin'; - - const negativeOrigin = await models.Application.rawSql(query, null, options); - - expect(negativeOrigin.length).toEqual(1); - expect(negativeOrigin[0].quantity).toEqual(3); - }); -}); diff --git a/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js b/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js new file mode 100644 index 0000000000..899f3c63a0 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js @@ -0,0 +1,51 @@ +const models = require('vn-loopback/server/server').models; + +fdescribe('NegativeOrigin', () => { + it('should return OK', async() => { + const tx = await models.Ticket.beginTransaction({}); + const ctx = {req: {accessToken: {userId: 9}}}; + + const options = {transaction: tx}; + const data = [ + {itemFk: 1, negativeType: 'FALTAS', lack: 1}, + {itemFk: 1, negativeType: 'FALTAS', lack: 2} + ]; + try { + await models.Ticket.itemLackOrigin(ctx, data, options); + const query = 'SELECT * FROM vn.negativeOrigin'; + + const negativeOrigin = await models.Application.rawSql(query, null, options); + + expect(negativeOrigin.length).toEqual(1); + expect(negativeOrigin[0].quantity).toEqual(3); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should add 2 lines', async() => { + const tx = await models.Ticket.beginTransaction({}); + const ctx = {req: {accessToken: {userId: 9}}}; + + const options = {transaction: tx}; + const data = [ + {itemFk: 2, negativeType: 'FALTAS', lack: 1}, + {itemFk: 3, negativeType: 'FALTAS', lack: 2} + ]; + try { + await models.Ticket.itemLackOrigin(ctx, data, options); + const query = 'SELECT * FROM vn.negativeOrigin'; + + const negativeOrigin = await models.Application.rawSql(query, null, options); + + expect(negativeOrigin.length).toEqual(2); + expect(negativeOrigin[0].quantity).toEqual(1); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); From d225821a41e83232e33a20694973d40e8e1fc1a7 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 1 Apr 2024 13:59:35 +0200 Subject: [PATCH 017/217] refs #6321 test: itemLack --- .../ticket/back/methods/ticket/itemLack.js | 7 +- .../methods/ticket/specs/itemLack.spec.js | 143 ++++++++++++++++-- 2 files changed, 137 insertions(+), 13 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index b384084003..932d50b52a 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -72,7 +72,8 @@ module.exports = Self => { Object.assign(myOptions, options); const conn = Self.dataSource.connector; let where = {}; - where = buildFilter(ctx.args, (param, value) => { + filter = Object.assign(ctx.args ?? {}, filter); + where = buildFilter(filter, (param, value) => { switch (param) { case 'id': return {'i.id': value}; @@ -85,9 +86,9 @@ module.exports = Self => { case 'size': return {'i.size': value}; case 'origen': - return {'w.name': value}; + return {'w.id': value}; case 'lack': - return {'lack': value}; + return {'sub.amount': value}; } }) ?? {}; diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index 49651abb8b..5bf1e422a5 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -1,30 +1,153 @@ const models = require('vn-loopback/server/server').models; -describe('Item Lack', () => { +fdescribe('Item Lack', () => { + beforeAll(async() => { + ctx = { + req: { + accessToken: {}, + headers: {origin: 'http://localhost'}, + } + }; + }); + it('should return data with NO filters', async() => { const tx = await models.Ticket.beginTransaction({}); + const options = {transaction: tx}; + const filter = {}; try { - const options = {transaction: tx}; + const result = await models.Ticket.itemLack(ctx, filter, options); - const result = await models.Ticket.itemLack(3, options); - - expect(result).toBeFalsy(); + expect(result.length).toEqual(4); + await tx.rollback(); } catch (e) { + await tx.rollback(); throw e; } }); - it('should return data with filters', async() => { + it('should return data with filter.id', async() => { const tx = await models.Ticket.beginTransaction({}); + const options = {transaction: tx}; + const filter = { + id: 1 + }; try { - const options = {transaction: tx}; + const result = await models.Ticket.itemLack(ctx, filter, options); - const result = await models.Ticket.isEmpty(8, options); - - expect(result).toBeFalsy(); + expect(result.length).toEqual(1); + await tx.rollback(); } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return data with filter.longname', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const filter = { + longname: 'Ranged weapon longbow 200cm' + }; + try { + const result = await models.Ticket.itemLack(ctx, filter, options); + + expect(result.length).toEqual(1); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + xit('should return data with filter.name', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const filter = { + name: 1 + }; + try { + const result = await models.Ticket.itemLack(ctx, filter, options); + + expect(result.length).toEqual(1); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return data with filter.color', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const filter = { + color: 'BRW' + }; + try { + const result = await models.Ticket.itemLack(ctx, filter, options); + + expect(result.length).toEqual(1); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return data with filter.origen', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const filter = { + origen: 2 + }; + try { + const result = await models.Ticket.itemLack(ctx, filter, options); + + expect(result.length).toEqual(3); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return data with filter.size', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const filter = { + size: '200' + }; + try { + const result = await models.Ticket.itemLack(ctx, filter, options); + + expect(result.length).toEqual(1); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + fit('should return data with filter.lack', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const filter = { + lack: '-100' + }; + try { + const result = await models.Ticket.itemLack(ctx, filter, options); + + expect(result.length).toEqual(1); + await tx.rollback(); + } catch (e) { + await tx.rollback(); throw e; } }); From 59498179ece33a0408f116f7aa5e39072d9c1899 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 1 Apr 2024 14:05:45 +0200 Subject: [PATCH 018/217] refs #6321 test: itemLackDetail --- modules/ticket/back/methods/ticket/specs/itemLack.spec.js | 4 ++-- .../ticket/back/methods/ticket/specs/itemLackDetail.spec.js | 6 ++++++ .../ticket/back/methods/ticket/specs/negativeOrigin.spec.js | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index 5bf1e422a5..ded595376d 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -fdescribe('Item Lack', () => { +describe('Item Lack', () => { beforeAll(async() => { ctx = { req: { @@ -134,7 +134,7 @@ fdescribe('Item Lack', () => { } }); - fit('should return data with filter.lack', async() => { + it('should return data with filter.lack', async() => { const tx = await models.Ticket.beginTransaction({}); const options = {transaction: tx}; diff --git a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js index 6b2881a842..28da66c4c1 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js @@ -11,7 +11,9 @@ describe('Item Lack Detail', () => { const result = await models.Ticket.itemLackDetail(id, options); expect(result).toBeFalsy(); + await tx.rollback(); } catch (e) { + await tx.rollback(); throw e; } }); @@ -25,7 +27,9 @@ describe('Item Lack Detail', () => { const result = await models.Ticket.itemLackDetail(id, options); expect(result).toBeFalsy(); + await tx.rollback(); } catch (e) { + await tx.rollback(); throw e; } }); @@ -39,7 +43,9 @@ describe('Item Lack Detail', () => { const result = await models.Ticket.itemLackDetail(id, options); expect(result).toBeFalsy(); + await tx.rollback(); } catch (e) { + await tx.rollback(); throw e; } }); diff --git a/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js b/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js index 899f3c63a0..6da2c607ea 100644 --- a/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js +++ b/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -fdescribe('NegativeOrigin', () => { +describe('NegativeOrigin', () => { it('should return OK', async() => { const tx = await models.Ticket.beginTransaction({}); const ctx = {req: {accessToken: {userId: 9}}}; From 601f5db0800d9ee551de2c8079382fa0071cae02 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 1 Apr 2024 16:11:30 +0200 Subject: [PATCH 019/217] refs #6321 test: spliy --- .../ticket/specs/itemLackDetail.spec.js | 6 +- .../back/methods/ticket/specs/split.spec.js | 98 +++++++++++++++++++ modules/ticket/back/methods/ticket/split.js | 30 +++--- 3 files changed, 115 insertions(+), 19 deletions(-) create mode 100644 modules/ticket/back/methods/ticket/specs/split.spec.js diff --git a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js index 28da66c4c1..9d5a7c6f99 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js @@ -10,7 +10,7 @@ describe('Item Lack Detail', () => { const result = await models.Ticket.itemLackDetail(id, options); - expect(result).toBeFalsy(); + expect(result.length).toEqual(0); await tx.rollback(); } catch (e) { await tx.rollback(); @@ -26,7 +26,7 @@ describe('Item Lack Detail', () => { const id = 1167; const result = await models.Ticket.itemLackDetail(id, options); - expect(result).toBeFalsy(); + expect(result.length).toEqual(0); await tx.rollback(); } catch (e) { await tx.rollback(); @@ -42,7 +42,7 @@ describe('Item Lack Detail', () => { const id = 0; const result = await models.Ticket.itemLackDetail(id, options); - expect(result).toBeFalsy(); + expect(result.length).toEqual(0); await tx.rollback(); } catch (e) { await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/specs/split.spec.js b/modules/ticket/back/methods/ticket/specs/split.spec.js new file mode 100644 index 0000000000..01008b5562 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/split.spec.js @@ -0,0 +1,98 @@ +const models = require('vn-loopback/server/server').models; + +describe('Split', () => { + beforeAll(async() => { + ctx = { + req: { + accessToken: {}, + headers: {origin: 'http://localhost'}, + } + }; + }); + + it('should split tickets with count 1', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const data = [ + {ticketFk: 7} + ]; + try { + const result = await models.Ticket.split(ctx, data, options); + + expect(result.length).toEqual(1); + expect(result[0].ticket).toEqual(7); + expect(result[0].status).toEqual('noSplit'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should split tickets with count 2 and error', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const data = [ + {ticketFk: 8} + ]; + try { + const result = await models.Ticket.split(ctx, data, options); + + expect(result.length).toEqual(1); + expect(result[0].ticket).toEqual(8); + expect(result[0].status).toEqual('error'); + expect(result[0].message).toEqual('This ticket is not editable.'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should split tickets with count 2 and other error', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const data = [ + {ticketFk: 16} + ]; + try { + const result = await models.Ticket.split(ctx, data, options); + + expect(result.length).toEqual(1); + expect(result[0].ticket).toEqual(16); + expect(result[0].status).toEqual('error'); + expect(result[0].message).toEqual('Can\'t transfer claimed sales'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should split tickets with count 2 and success', async() => { + const tx = await models.Ticket.beginTransaction({}); + + const options = {transaction: tx}; + const data = [ + {ticketFk: 32} + ]; + try { + const result = await models.Ticket.split(ctx, data, options); + + expect(result.length).toEqual(1); + expect(result[0].ticket).toEqual(32); + expect(result[0].status).toEqual('split'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index 8772bad87e..54ba2123a9 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -1,6 +1,3 @@ -const {ParameterizedSQL} = require('loopback-connector/lib/sql'); -const UserError = require('vn-loopback/util/user-error'); - module.exports = Self => { Self.remoteMethodCtx('split', { description: 'Split a ticket or n tickets', @@ -24,7 +21,7 @@ module.exports = Self => { }); Self.split = async(ctx, tickets, options) => { - // const models = Self.app.models; + const models = Self.app.models; const myOptions = {}; let tx; let results = []; @@ -46,15 +43,11 @@ module.exports = Self => { ON s.ticketFk = t.id WHERE t.id IN (?) GROUP BY t.id;`, [ticketsIds], myOptions); - console.log(ticketsCount); - // stmts.push(stmt); - // const sql = ParameterizedSQL.join(stmts, ';'); - // const result = await conn.executeStmt(sql, myOptions); - for (const {tid, sid, count} of ticketsCount) { + for (const {tid, count} of ticketsCount) { try { if (count === 1) { - results.push({ticket: tid, message: 'noSplit'}); + results.push({ticket: tid, status: 'noSplit'}); continue; } const [, [{vNewTicket}]] = await Self.rawSql(` @@ -63,15 +56,20 @@ module.exports = Self => { [tid], myOptions); if (vNewTicket === 0) continue; - await Self.rawSql(` + const sales = await models.Sale.find({ + where: {ticketFk: tid} + }, myOptions); + + const updateIsPicked = sales.map(({sid}) => Self.rawSql(` UPDATE vn.sale SET isPicked = (id = ?) WHERE ticketFk = ?`, - [sid, tid], myOptions); - await Self.transferSales(ctx, tid, vNewTicket, sid, myOptions); + [sid, tid], myOptions)); + await Promise.all(updateIsPicked); + await Self.transferSales(ctx, tid, vNewTicket, sales, myOptions); await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [tid, 'FIXING'], myOptions); - results.push({ticket: tid, message: 'split'}); - } catch (error) { - throw new UserError('You cannot close tickets for today'); + results.push({ticket: tid, status: 'split'}); + } catch ({message}) { + results.push({ticket: tid, status: 'error', message}); } } return results; From 5d24844256d82c3f29aa3f4c23a8412d29217b0f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 1 Apr 2024 16:12:52 +0200 Subject: [PATCH 020/217] refs #6321 test: debug use TIMEOUT --- back/tests.js | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/back/tests.js b/back/tests.js index 50698eb922..b5b5bf361b 100644 --- a/back/tests.js +++ b/back/tests.js @@ -18,7 +18,7 @@ const opts = getopts(process.argv.slice(2), { let server; const PARALLEL = false; const SETUP_TIMEOUT = 15 * 60 * 1000; -const SPEC_TIMEOUT = 30 * 1000; +const SPEC_TIMEOUT = 30 * 11000; process.on('exit', teardown); process.on('uncaughtException', onError); @@ -111,7 +111,7 @@ async function test() { const JunitReporter = require('jasmine-reporters'); runner.addReporter(new JunitReporter.JUnitXmlReporter()); } - if (opts.ci) + if (opts.ci || opts.debug) runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = SPEC_TIMEOUT; // runner.loadConfigFile('back/jasmine.json'); diff --git a/package.json b/package.json index 39c5e15b75..72ac563c2f 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "yaml-loader": "^0.5.0" }, "scripts": { - "test:back": "nodemon -q back/tests.js --config back/nodemonConfig.json", + "test:back": "nodemon -q back/tests.js --config back/nodemonConfig.json --debug", "test:e2e": "node e2e/tests.js", "test:front": "jest --watch", "back": "nodemon --inspect -w modules ./node_modules/gulp/bin/gulp.js back", From d08535ac18faebb439c9254a1c7241de44d08831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Segarra=20Mart=C3=ADnez?= Date: Tue, 2 Apr 2024 08:04:27 +0200 Subject: [PATCH 021/217] refs #6321 minor changes --- back/tests.js | 2 +- db/changes/240601/01-updateACLItemLack.sql | 9 --- .../01-updateProcedureGetItemLack copy.sql | 68 ---------------- .../240601/01-updateProcedureGetItemLack.sql | 80 ------------------- .../ticket/back/methods/ticket/itemDetail.sql | 38 --------- .../back/methods/ticket/itemLackDetail.js | 4 +- .../back/methods/ticket/itemLackOrigin.js | 2 +- .../back/methods/ticket/negativeOrigin.js | 2 +- modules/ticket/back/methods/ticket/split.js | 3 +- 9 files changed, 6 insertions(+), 202 deletions(-) delete mode 100644 db/changes/240601/01-updateACLItemLack.sql delete mode 100644 db/changes/240601/01-updateProcedureGetItemLack copy.sql delete mode 100644 db/changes/240601/01-updateProcedureGetItemLack.sql delete mode 100644 modules/ticket/back/methods/ticket/itemDetail.sql diff --git a/back/tests.js b/back/tests.js index b5b5bf361b..cfb6814351 100644 --- a/back/tests.js +++ b/back/tests.js @@ -18,7 +18,7 @@ const opts = getopts(process.argv.slice(2), { let server; const PARALLEL = false; const SETUP_TIMEOUT = 15 * 60 * 1000; -const SPEC_TIMEOUT = 30 * 11000; +const SPEC_TIMEOUT = 30 * 1000; process.on('exit', teardown); process.on('uncaughtException', onError); diff --git a/db/changes/240601/01-updateACLItemLack.sql b/db/changes/240601/01-updateACLItemLack.sql deleted file mode 100644 index 197dea786f..0000000000 --- a/db/changes/240601/01-updateACLItemLack.sql +++ /dev/null @@ -1,9 +0,0 @@ --- Auto-generated SQL script #202401191358 -INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) - VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'); - -INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) - VALUES ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'); - -INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) - VALUES ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee'); diff --git a/db/changes/240601/01-updateProcedureGetItemLack copy.sql b/db/changes/240601/01-updateProcedureGetItemLack copy.sql deleted file mode 100644 index 7372ad6998..0000000000 --- a/db/changes/240601/01-updateProcedureGetItemLack copy.sql +++ /dev/null @@ -1,68 +0,0 @@ -DROP PROCEDURE IF EXISTS vn.item_getLack; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`( - IN vForce BOOLEAN DEFAULT TRUE, - IN vDays INT DEFAULT 2, - IN vCustomWhere TEXT, - ) - -BEGIN -/** - * Calcula una tabla con el máximo negativo visible para cada producto y almacen - * - * @param vForce Fuerza el recalculo del stock - * @param vDays Numero de dias a considerar - * @param vSearch Filtro items -**/ - - CALL `cache`.stock_refresh(vForce); - CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL); - CALL item_getMinETD(); - CALL item_zoneClosure(); - - - SET @sqlQuery = CONCAT(`SELECT i.id itemFk, - i.longName, - w.id warehouseFk, - p.`name` producer, - i.`size`, - i.category, - w.name warehouse, - SUM(IFNULL(sub.amount,0)) lack, - i.inkFk, - IFNULL(im.timed, util.midnight()) timed, - IFNULL(izc.timed, util.midnight()) minTimed - FROM (SELECT item_id, - warehouse_id, - amount - FROM cache.stock - WHERE amount > 0 - UNION ALL - SELECT itemFk, - warehouseFk, - amount - FROM tmp.itemMinacum - ) sub - JOIN warehouse w ON w.id = sub.warehouse_id - JOIN item i ON i.id = sub.item_id - LEFT JOIN producer p ON p.id = i.producerFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id - LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id - WHERE w.isForTicket - AND ic.display - AND it.code != 'GEN' - AND `,vCustomWhere,` - GROUP BY i.id, w.id - HAVING lack < 0;`); - CALL `exec`(@sqlQuery); - - DROP TEMPORARY TABLE tmp.itemMinacum; - DROP TEMPORARY TABLE tmp.itemMinETD; - DROP TEMPORARY TABLE tmp.itemZoneClosure; -END -$$ -DELIMITER ; diff --git a/db/changes/240601/01-updateProcedureGetItemLack.sql b/db/changes/240601/01-updateProcedureGetItemLack.sql deleted file mode 100644 index 0a59ecb2b7..0000000000 --- a/db/changes/240601/01-updateProcedureGetItemLack.sql +++ /dev/null @@ -1,80 +0,0 @@ -DROP PROCEDURE IF EXISTS vn.item_getLack; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`( - IN vForce BOOLEAN DEFAULT TRUE, - IN vDays INT DEFAULT 2, - IN vId INT DEFAULT NULL, - IN vLongname INT DEFAULT NULL, - IN vSupplier VARCHAR DEFAULT NULL, - IN vColor VARCHAR DEFAULT NULL, - IN vSize INT DEFAULT NULL, - IN vOrigen VARCHAR DEFAULT NULL, - IN vLack INT DEFAULT NULL - ) - -BEGIN -/** - * Calcula una tabla con el máximo negativo visible para cada producto y almacen - * - * @param vForce Fuerza el recalculo del stock - * @param vDays Numero de dias a considerar - * @param vSearch Filtro items -**/ - - CALL `cache`.stock_refresh(vForce); - CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL); - CALL item_getMinETD(); - CALL item_zoneClosure(); - - - SELECT i.id itemFk, - i.longName, - w.id warehouseFk, - p.`name` producer, - i.`size`, - i.category, - w.name warehouse, - SUM(IFNULL(sub.amount,0)) lack, - i.inkFk, - IFNULL(im.timed, util.midnight()) timed, - IFNULL(izc.timed, util.midnight()) minTimed - FROM (SELECT item_id, - warehouse_id, - amount - FROM cache.stock - WHERE amount > 0 - UNION ALL - SELECT itemFk, - warehouseFk, - amount - FROM tmp.itemMinacum - ) sub - JOIN warehouse w ON w.id = sub.warehouse_id - JOIN item i ON i.id = sub.item_id - LEFT JOIN producer p ON p.id = i.producerFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id - LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id - WHERE w.isForTicket - AND ic.display - AND it.code != 'GEN' - AND (vId IS NULL OR i.id = vId) - AND (vLongname IS NULL OR i.longName = vLongname) - AND (vSupplier IS NULL OR p.`name` LIKE CONCAT('%', vSupplier, '%')) - AND (vColor IS NULL OR vColor = i.inkFk) - AND (vSize IS NULL OR vSize = i.`size`) - AND (vOrigen IS NULL OR vOrigen = w.name) - AND (vLack IS NULL OR vLack = lack) - - GROUP BY i.id, w.id - HAVING lack < 0; - - DROP TEMPORARY TABLE tmp.itemMinacum; - DROP TEMPORARY TABLE tmp.itemMinETD; - DROP TEMPORARY TABLE tmp.itemZoneClosure; -END -$$ -DELIMITER ; diff --git a/modules/ticket/back/methods/ticket/itemDetail.sql b/modules/ticket/back/methods/ticket/itemDetail.sql deleted file mode 100644 index 8538378e76..0000000000 --- a/modules/ticket/back/methods/ticket/itemDetail.sql +++ /dev/null @@ -1,38 +0,0 @@ - SELECT - s.id saleFk, - st.code, - t.id ticketFk, - t.nickname, - t.hour, - s.quantity, - ag.name, - ts.alertLevel alertLevel, - st.name stateName, - st.id stateId, - s.itemFk itemFk, - al.code alertLevelCode, - z.name, - z.hour theoreticalhour, - cn.isRookie, - sc.saleClonedFk turno, - tr.saleFk peticionCompra, - t.hour minTimed - FROM - vn.sale s - JOIN vn.ticket t ON t.id=s.ticketFk -- vn.ticket - LEFT JOIN vn.zone z ON z.id = t.zoneFk -- vn.zone - LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk -- AND zc.dated = DateValue(t.Fecha) - JOIN vn.client c ON c.id=t.clientFk -- vn.client - LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id - JOIN vn.agencyMode agm ON agm.id=t.agencyModeFk -- vn.agencyMode - JOIN vn.agency ag ON ag.id=agm.id -- vn.agencyMode - JOIN vn.ticketState ts ON ts.ticketFk=t.id -- vn.sale - 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 - WHERE - s.itemFk = ? - AND t.landed >= util.VN_CURDATE() - AND t.landed < INTERVAL util.VN_CURDATE() + INTERVAL ? + 1 DAY - `, diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 0821633924..1d0feda2d4 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -1,5 +1,5 @@ -/* eslint-disable no-console */ -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const {ParameterizedSQL} = require('loopback-connector'); + module.exports = Self => { Self.remoteMethod('itemLackDetail', { description: 'Download a ticket delivery note document', diff --git a/modules/ticket/back/methods/ticket/itemLackOrigin.js b/modules/ticket/back/methods/ticket/itemLackOrigin.js index 73673c17da..f862852b99 100644 --- a/modules/ticket/back/methods/ticket/itemLackOrigin.js +++ b/modules/ticket/back/methods/ticket/itemLackOrigin.js @@ -1,5 +1,5 @@ +const {ParameterizedSQL} = require('loopback-connector'); -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethod('itemLackOrigin', { description: 'Insert ticket negative into negativeOrigin', diff --git a/modules/ticket/back/methods/ticket/negativeOrigin.js b/modules/ticket/back/methods/ticket/negativeOrigin.js index ee251ff3e0..0324d72bcb 100644 --- a/modules/ticket/back/methods/ticket/negativeOrigin.js +++ b/modules/ticket/back/methods/ticket/negativeOrigin.js @@ -1,5 +1,5 @@ +const {ParameterizedSQL} = require('loopback-connector'); -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethod('negativeOrigin', { description: 'Insert ticket negative into negativeOrigin', diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index 54ba2123a9..afe374aa20 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -32,8 +32,7 @@ module.exports = Self => { tx = await Self.beginTransaction({}); myOptions.transaction = tx; } - // const conn = Self.dataSource.connector; - // const stmts = []; + try { const ticketsIds = tickets.map(({ticketFk}, index) => ticketFk); const ticketsCount = await Self.rawSql(` From 9a80f8c2ceecc11b93a02c1f265a6c7d3f4e19d5 Mon Sep 17 00:00:00 2001 From: Jbreso Date: Tue, 2 Apr 2024 10:45:29 +0200 Subject: [PATCH 022/217] minor change --- back/tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/back/tests.js b/back/tests.js index cfb6814351..824d6ca5ae 100644 --- a/back/tests.js +++ b/back/tests.js @@ -18,7 +18,7 @@ const opts = getopts(process.argv.slice(2), { let server; const PARALLEL = false; const SETUP_TIMEOUT = 15 * 60 * 1000; -const SPEC_TIMEOUT = 30 * 1000; +const SPEC_TIMEOUT = 30 * 10000; process.on('exit', teardown); process.on('uncaughtException', onError); From 586f37afd2169cf8874d2ad253da187444916b3d Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 2 Apr 2024 13:28:26 +0200 Subject: [PATCH 023/217] refs #6321 perf: add arguments into procedure --- back/tests.js | 2 +- db/routines/vn/procedures/item_getLack.sql | 41 +++++-- .../ticket/back/methods/ticket/itemLack.js | 108 +++--------------- 3 files changed, 50 insertions(+), 101 deletions(-) diff --git a/back/tests.js b/back/tests.js index 824d6ca5ae..cfb6814351 100644 --- a/back/tests.js +++ b/back/tests.js @@ -18,7 +18,7 @@ const opts = getopts(process.argv.slice(2), { let server; const PARALLEL = false; const SETUP_TIMEOUT = 15 * 60 * 1000; -const SPEC_TIMEOUT = 30 * 10000; +const SPEC_TIMEOUT = 30 * 1000; process.on('exit', teardown); process.on('uncaughtException', onError); diff --git a/db/routines/vn/procedures/item_getLack.sql b/db/routines/vn/procedures/item_getLack.sql index e0531e2ace..17cff02469 100644 --- a/db/routines/vn/procedures/item_getLack.sql +++ b/db/routines/vn/procedures/item_getLack.sql @@ -1,9 +1,20 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`(IN vForce BOOLEAN, IN vDays INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`( + vForce BOOLEAN, + vDays INT, + vId INT, + vLongname INT, + vSupplierFk VARCHAR(255), + vColor VARCHAR(255), + vSize INT, + vOrigen VARCHAR(255), + vLack INT, + vWarehouseFk INT + ) BEGIN /** * Calcula una tabla con el máximo negativo visible para cada producto y almacen - * + * * @param vForce Fuerza el recalculo del stock * @param vDays Numero de dias a considerar **/ @@ -13,33 +24,33 @@ BEGIN CALL item_getMinETD(); CALL item_zoneClosure(); - SELECT i.id itemFk, + SELECT i.id itemFk, i.longName, w.id warehouseFk, - p.`name` producer, + p.`name` producer, i.`size`, i.category, - w.name warehouse, + w.name warehouse, SUM(IFNULL(sub.amount,0)) lack, i.inkFk, IFNULL(im.timed, util.midnight()) timed, IFNULL(izc.timed, util.midnight()) minTimed, o.name originFk - FROM (SELECT item_id, - warehouse_id, + FROM (SELECT item_id, + warehouse_id, amount FROM cache.stock WHERE amount > 0 UNION ALL - SELECT itemFk, - warehouseFk, + SELECT itemFk, + warehouseFk, amount FROM tmp.itemMinacum ) sub JOIN warehouse w ON w.id = sub.warehouse_id JOIN item i ON i.id = sub.item_id - LEFT JOIN producer p ON p.id = i.producerFk - JOIN itemType it ON it.id = i.typeFk + LEFT JOIN producer p ON p.id = i.producerFk + JOIN itemType it ON it.id = i.typeFk JOIN itemCategory ic ON ic.id = it.categoryFk LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id @@ -47,6 +58,14 @@ BEGIN WHERE w.isForTicket AND ic.display AND it.code != 'GEN' + AND (vId IS NULL OR i.id = vId) + AND (vLongname IS NULL OR i.longName = vLongname) + AND (vSupplierFk IS NULL OR p.`name` LIKE CONCAT('%', vSupplierFk, '%')) + AND (vColor IS NULL OR vColor = i.inkFk) + AND (vSize IS NULL OR vSize = i.`size`) + AND (vOrigen IS NULL OR vOrigen = w.name) + AND (vLack IS NULL OR vLack = sub.amount) + AND (vWarehouseFk IS NULL OR vWarehouseFk = w.id) GROUP BY i.id, w.id HAVING lack < 0; diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 932d50b52a..b11ae74d18 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -1,7 +1,3 @@ - -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; -const {buildFilter} = require('vn-loopback/util/filter'); - module.exports = Self => { Self.remoteMethod('itemLack', { description: 'Download a ticket delivery note document', @@ -34,9 +30,9 @@ module.exports = Self => { description: 'Supplier id', }, { - arg: 'color', + arg: 'colour', type: 'string', - description: 'Color\'s item', + description: 'Colour\'s item', }, { arg: 'size', @@ -48,9 +44,15 @@ module.exports = Self => { type: 'string', description: 'origen id', }, + { + arg: 'warehouse', + type: 'number', + description: 'The warehouse id', + }, { arg: 'lack', - type: 'number', description: 'The item id', + type: 'number', + description: 'The item id', } ], returns: [ @@ -70,91 +72,19 @@ module.exports = Self => { const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); - const conn = Self.dataSource.connector; - let where = {}; - filter = Object.assign(ctx.args ?? {}, filter); - where = buildFilter(filter, (param, value) => { - switch (param) { - case 'id': - return {'i.id': value}; - case 'longname': - return {'i.longName': value}; - case 'name': - return {'p.name': {like: `%${value}%`}}; - case 'color': - return {'i.inkFk': value}; - case 'size': - return {'i.size': value}; - case 'origen': - return {'w.id': value}; - case 'lack': - return {'sub.amount': value}; - } - }) ?? {}; + const filterKeyOrder = ['id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouse']; - const stmts = []; - stmts.push(`SET @_optimizer_search_depth = @@optimizer_search_depth`); - stmts.push(`SET SESSION optimizer_search_depth = 0`); + delete ctx.args.ctx; + delete ctx.args.filter; - stmts.push(`CALL cache.stock_refresh(true)`); - stmts.push(`CALL item_getMinacum(NULL, util.VN_CURDATE(), 2, NULL)`); - stmts.push(`CALL item_getMinETD()`); - stmts.push(`CALL item_zoneClosure()`); + let procedureParams = [true, 2]; + procedureParams.push(...filterKeyOrder.map(clave => ctx.args[clave] ?? null)); + const procedureArgs = Array(procedureParams.length).fill('?').join(', '); + let query = `CALL vn.item_getLack(${procedureArgs})`; - const stmt = new ParameterizedSQL(` - SELECT i.id itemFk, - i.longName, - w.id warehouseFk, - p.name producer, - p.id producerFk, - i.size, - i.category, - w.name warehouse, - SUM(IFNULL(sub.amount,0)) lack, - i.inkFk, - IFNULL(im.timed, util.midnight()) timed, - IFNULL(izc.timed, util.midnight()) minTimed - FROM (SELECT item_id, - warehouse_id, - amount - FROM cache.stock - WHERE amount > 0 - UNION ALL - SELECT itemFk, - warehouseFk, - amount - FROM tmp.itemMinacum - ) sub - JOIN warehouse w ON w.id = sub.warehouse_id - JOIN item i ON i.id = sub.item_id - LEFT JOIN producer p ON p.id = i.producerFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id - LEFT JOIN tmp.itemZoneClosure izc ON izc.itemFk = i.id - `); + const result = await Self.rawSql(query, procedureParams, myOptions); - const sqlWhere = conn.makeWhere(where); - stmt.merge(sqlWhere); - const prefix = Object.keys(where).length > 0 ? 'AND' : 'WHERE'; - stmt.merge(`${prefix} w.isForTicket - AND ic.display - AND it.code != 'GEN'`); - - stmt.merge(` - GROUP BY i.id, w.id - HAVING lack < 0` - ); - stmt.merge(conn.makeSuffix(filter)); - const itemsIndex = stmts.push(stmt) - 1; - stmts.push( - `DROP TEMPORARY TABLE - tmp.itemMinacum, - tmp.itemMinETD, - tmp.itemZoneClosure`); - - const sql = ParameterizedSQL.join(stmts, ';'); - const result = await conn.executeStmt(sql, myOptions); - return itemsIndex === 0 ? result : result[itemsIndex]; + const itemsIndex = 0; + return result[itemsIndex]; }; }; From cc3f2da639862c5c55bccc03eb35b97531868f3f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 2 Apr 2024 15:02:33 +0200 Subject: [PATCH 024/217] refs #6321 perf: minor change --- modules/ticket/back/methods/ticket/itemLackDetail.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 1d0feda2d4..c965267199 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -2,11 +2,11 @@ const {ParameterizedSQL} = require('loopback-connector'); module.exports = Self => { Self.remoteMethod('itemLackDetail', { - description: 'Download a ticket delivery note document', + description: 'Retrieve detail from ticket', accessType: 'READ', accepts: [ { - arg: 'id', + arg: 'itemFk', type: 'number', description: 'The item id', }, @@ -24,7 +24,7 @@ module.exports = Self => { }, }); - Self.itemLackDetail = async(id, options) => { + Self.itemLackDetail = async(itemFk, options) => { const conn = Self.dataSource.connector; const myOptions = {}; @@ -71,7 +71,7 @@ module.exports = Self => { AND t.landed >= util.VN_CURDATE() AND t.landed < util.VN_CURDATE() + INTERVAL ? + 1 DAY `, - [id, 2]); + [itemFk, 2]); const sql = ParameterizedSQL.join([stmt], ';'); const result = await conn.executeStmt(sql, myOptions); From c4f8734d441b4917f707990e477bc8ac341d090d Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 3 Apr 2024 09:48:56 +0200 Subject: [PATCH 025/217] refs #6321 fix: param --- modules/ticket/back/methods/ticket/itemLackDetail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index c965267199..5e9796ee91 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -6,7 +6,7 @@ module.exports = Self => { accessType: 'READ', accepts: [ { - arg: 'itemFk', + arg: 'id', type: 'number', description: 'The item id', }, From 25fc39ef2baee0e1dc454bf660a0a4c3b5442ff5 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 8 Apr 2024 11:33:32 +0200 Subject: [PATCH 026/217] refs #6321 perf: change descriptions --- modules/ticket/back/methods/ticket/itemLack.js | 10 ++-------- modules/ticket/back/methods/ticket/negativeOrigin.js | 2 +- modules/ticket/back/methods/ticket/split.js | 2 +- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index b11ae74d18..163addc048 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -1,6 +1,6 @@ module.exports = Self => { Self.remoteMethod('itemLack', { - description: 'Download a ticket delivery note document', + description: 'Get tickets as negative status', accessType: 'READ', accepts: [ { @@ -8,12 +8,6 @@ module.exports = Self => { type: 'object', 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', type: 'number', @@ -68,7 +62,7 @@ module.exports = Self => { } }); - Self.itemLack = async(ctx, filter, options) => { + Self.itemLack = async(ctx, options) => { const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/ticket/back/methods/ticket/negativeOrigin.js b/modules/ticket/back/methods/ticket/negativeOrigin.js index 0324d72bcb..aa043b0f37 100644 --- a/modules/ticket/back/methods/ticket/negativeOrigin.js +++ b/modules/ticket/back/methods/ticket/negativeOrigin.js @@ -2,7 +2,7 @@ const {ParameterizedSQL} = require('loopback-connector'); module.exports = Self => { Self.remoteMethod('negativeOrigin', { - description: 'Insert ticket negative into negativeOrigin', + description: 'Get tickets from negativeOrigin', accessType: 'READ', accepts: [{ arg: 'ctx', diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index afe374aa20..69f6f56d9b 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -1,6 +1,6 @@ module.exports = Self => { Self.remoteMethodCtx('split', { - description: 'Split a ticket or n tickets', + description: 'Split n tickets', accessType: 'WRITE', accepts: [ { From 3dd162b683e346f801ddae4a425c694e9bb05499 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 8 Apr 2024 12:16:07 +0200 Subject: [PATCH 027/217] refs #6321 test: fix --- db/routines/vn/procedures/item_getLack.sql | 8 ++++---- .../ticket/back/methods/ticket/itemLack.js | 19 ++++++++++++++++--- .../back/methods/ticket/itemLackDetail.js | 4 ++-- .../methods/ticket/specs/itemLack.spec.js | 6 +++--- .../ticket/specs/itemLackDetail.spec.js | 2 +- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/db/routines/vn/procedures/item_getLack.sql b/db/routines/vn/procedures/item_getLack.sql index 17cff02469..bcb7d89585 100644 --- a/db/routines/vn/procedures/item_getLack.sql +++ b/db/routines/vn/procedures/item_getLack.sql @@ -3,11 +3,11 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_getLack`( vForce BOOLEAN, vDays INT, vId INT, - vLongname INT, + vLongname VARCHAR(255), vSupplierFk VARCHAR(255), vColor VARCHAR(255), vSize INT, - vOrigen VARCHAR(255), + vOrigen INT, vLack INT, vWarehouseFk INT ) @@ -59,11 +59,11 @@ BEGIN AND ic.display AND it.code != 'GEN' 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 (vColor IS NULL OR vColor = i.inkFk) 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 (vWarehouseFk IS NULL OR vWarehouseFk = w.id) GROUP BY i.id, w.id diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 163addc048..278fd8537b 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -8,6 +8,12 @@ module.exports = Self => { type: 'object', 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', type: 'number', @@ -62,18 +68,25 @@ module.exports = Self => { } }); - Self.itemLack = async(ctx, options) => { + Self.itemLack = async(ctx, filter, options) => { const myOptions = {}; + if (typeof options == 'object') Object.assign(myOptions, options); + const filterKeyOrder = ['id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouse']; - delete ctx.args.ctx; - delete ctx.args.filter; + delete ctx?.args?.ctx; + + delete ctx?.args?.filter; + if (filter) + ctx.args = Object.assign(ctx.args ?? {}, filter); let procedureParams = [true, 2]; procedureParams.push(...filterKeyOrder.map(clave => ctx.args[clave] ?? null)); + const procedureArgs = Array(procedureParams.length).fill('?').join(', '); + let query = `CALL vn.item_getLack(${procedureArgs})`; const result = await Self.rawSql(query, procedureParams, myOptions); diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 5e9796ee91..f18d5d34e5 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -6,7 +6,7 @@ module.exports = Self => { accessType: 'READ', accepts: [ { - arg: 'id', + arg: 'itemFk', type: 'number', description: 'The item id', }, @@ -19,7 +19,7 @@ module.exports = Self => { }, ], http: { - path: `/itemLack/:id/detail`, + path: `/itemLack/:itemFk/detail`, verb: 'GET', }, }); diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index ded595376d..4d654d8305 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -1,7 +1,7 @@ const models = require('vn-loopback/server/server').models; -describe('Item Lack', () => { - beforeAll(async() => { +fdescribe('Item Lack', () => { + beforeEach(async() => { ctx = { req: { accessToken: {}, @@ -85,7 +85,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - color: 'BRW' + colour: 'BRW' }; try { const result = await models.Ticket.itemLack(ctx, filter, options); diff --git a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js index 9d5a7c6f99..26424d7ce1 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js @@ -1,6 +1,6 @@ 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() => { const tx = await models.Ticket.beginTransaction({}); From e0712645a284618c28541ec75a983d2ece9e2e3d Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 8 Apr 2024 12:17:32 +0200 Subject: [PATCH 028/217] refs #6321 test: fix --- modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js index 26424d7ce1..9d5a7c6f99 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -fdescribe('Item Lack Detail', () => { +describe('Item Lack Detail', () => { it('should return false if id is null', async() => { const tx = await models.Ticket.beginTransaction({}); From 68158f341d7abde4618f332ebd282a3e03872685 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 22 Apr 2024 14:09:27 +0200 Subject: [PATCH 029/217] feat(salix): refs #6321 #6331 publish negativeOrigin model --- .../back/methods/ticket/negativeOrigin.js | 8 ++----- modules/ticket/back/model-config.json | 3 +++ .../ticket/back/models/negative-origin.json | 23 +++++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 modules/ticket/back/models/negative-origin.json diff --git a/modules/ticket/back/methods/ticket/negativeOrigin.js b/modules/ticket/back/methods/ticket/negativeOrigin.js index aa043b0f37..a6139ae468 100644 --- a/modules/ticket/back/methods/ticket/negativeOrigin.js +++ b/modules/ticket/back/methods/ticket/negativeOrigin.js @@ -1,4 +1,3 @@ -const {ParameterizedSQL} = require('loopback-connector'); module.exports = Self => { Self.remoteMethod('negativeOrigin', { @@ -27,10 +26,7 @@ module.exports = Self => { tx = await Self.beginTransaction({}); myOptions.transaction = tx; } - const conn = Self.dataSource.connector; - const stmts = ['SELECT * FROM vn.negativeOrigin']; - const sql = ParameterizedSQL.join(stmts, ';'); - const result = await conn.executeStmt(sql, myOptions); - return result; + const negativesOrigin = await Self.app.models.NegativeOrigin.find(); + return negativesOrigin; }; }; diff --git a/modules/ticket/back/model-config.json b/modules/ticket/back/model-config.json index db90b55e15..94355b5767 100644 --- a/modules/ticket/back/model-config.json +++ b/modules/ticket/back/model-config.json @@ -35,6 +35,9 @@ "PackingSiteConfig": { "dataSource": "vn" }, + "NegativeOrigin": { + "dataSource": "vn" + }, "ExpeditionMistake": { "dataSource": "vn" }, diff --git a/modules/ticket/back/models/negative-origin.json b/modules/ticket/back/models/negative-origin.json new file mode 100644 index 0000000000..0f43cce9d4 --- /dev/null +++ b/modules/ticket/back/models/negative-origin.json @@ -0,0 +1,23 @@ +{ + "name": "NegativeOrigin", + "base": "VnModel", + "options": { + "mysql": { + "table": "negativeOrigin" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + } + }, + "relations": { + "item": { + "type": "belongsTo", + "model": "Item", + "foreignKey": "itemFk" + } + } + } From 7caea444274d55e89d96d1f5abd99bfbdc1f870a Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 2 May 2024 13:53:28 +0200 Subject: [PATCH 030/217] feat(salix): refs #6321 #6321 getSimilar --- modules/item/back/methods/item/getSimilar.js | 59 ++++++++++++++++++++ modules/item/back/models/item.js | 1 + 2 files changed, 60 insertions(+) create mode 100644 modules/item/back/methods/item/getSimilar.js diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js new file mode 100644 index 0000000000..3ec72e1b12 --- /dev/null +++ b/modules/item/back/methods/item/getSimilar.js @@ -0,0 +1,59 @@ +module.exports = Self => { + Self.remoteMethodCtx('getSimilar', { + description: 'Returns the ', + accessType: 'READ', + accepts: [{ + arg: 'filter', + type: 'Object', + required: true, + description: 'Filter defining where and paginated data', + http: {source: 'query'} + }], + returns: { + type: ['Object'], + root: true + }, + http: { + path: `/getSimilar`, + verb: 'GET' + } + }); + + Self.getSimilar = async(ctx, filter, options) => { + const myOptions = {userId: ctx.req.accessToken.userId}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + // const where = filter.where; + // const query = 'CALL vn.item_getSimilar(?, ?, ?)'; + // const [results] = await Self.rawSql(query, [where.itemFk, where.warehouseFk, where.date], myOptions); + + return [ + { + 'id': 1, + 'longName': 'Ranged weapon longbow 200cm', + 'subName': 'Stark Industries', + 'tag5': 'Color', + 'value5': 'Brown', + 'match5': 0, + 'match6': 0, + 'match7': 0, + 'match8': 1, + 'tag6': 'Categoria', + 'value6': '+1 precission', + 'tag7': 'Tallos', + 'value7': '1', + 'tag8': null, + 'value8': null, + 'available': 185, + 'calc_id': 6, + 'counter': 0, + 'minQuantity': 1, + 'visible': null, + 'price2': null + } + + ]; + }; +}; diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index e715ab4313..ec0d408403 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -5,6 +5,7 @@ module.exports = Self => { require('../methods/item/clone')(Self); require('../methods/item/updateTaxes')(Self); require('../methods/item/getBalance')(Self); + require('../methods/item/getSimilar')(Self); require('../methods/item/lastEntriesFilter')(Self); require('../methods/item/getSummary')(Self); require('../methods/item/getCard')(Self); From de7469419aac85433776e1d66fdff60f504627a9 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 3 May 2024 07:23:12 +0200 Subject: [PATCH 031/217] feat(salix): refs #6321 #6321 getSimilar minor update --- modules/item/back/methods/item/getSimilar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 3ec72e1b12..84bb351afe 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -26,8 +26,8 @@ module.exports = Self => { Object.assign(myOptions, options); // const where = filter.where; - // const query = 'CALL vn.item_getSimilar(?, ?, ?)'; - // const [results] = await Self.rawSql(query, [where.itemFk, where.warehouseFk, where.date], myOptions); + // const query = [where.itemFk, where.warehouseFk, where.date ?? Date.now(), where.showType ?? true] ; + // const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?)',, myOptions); return [ { From 888f15049ab74633ad31769ddcee9bc43300bea9 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 13 May 2024 13:51:04 +0200 Subject: [PATCH 032/217] feat(salix): refs #6321 #6321 New arg --- modules/ticket/back/methods/ticket/itemLack.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 278fd8537b..58ab9a6470 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -53,6 +53,11 @@ module.exports = Self => { arg: 'lack', type: 'number', description: 'The item id', + }, + { + arg: 'days', + type: 'number', + description: 'The range days', } ], returns: [ @@ -74,7 +79,7 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const filterKeyOrder = ['id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouse']; + const filterKeyOrder = ['days', 'id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouse']; delete ctx?.args?.ctx; @@ -82,7 +87,7 @@ module.exports = Self => { if (filter) ctx.args = Object.assign(ctx.args ?? {}, filter); - let procedureParams = [true, 2]; + let procedureParams = [true]; procedureParams.push(...filterKeyOrder.map(clave => ctx.args[clave] ?? null)); const procedureArgs = Array(procedureParams.length).fill('?').join(', '); From befc1289505198b9dc2cd2e92f0d2876432ba0c0 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 15 May 2024 08:36:13 +0200 Subject: [PATCH 033/217] feat(salix): refs #6321 Sale_itemReplace --- .../ticket/back/methods/sale/replaceItem.js | 53 +++++++++++++++++++ modules/ticket/back/models/sale.js | 1 + 2 files changed, 54 insertions(+) create mode 100644 modules/ticket/back/methods/sale/replaceItem.js diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js new file mode 100644 index 0000000000..529d429eb1 --- /dev/null +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -0,0 +1,53 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('replaceItem', { + description: 'Replace item from sale', + accessType: 'WRITE', + accepts: [{ + arg: 'saleFk', + type: 'number', + required: true, + }, + { + arg: 'newItemFk', + type: 'number', + required: true + }, + { + arg: 'quantity', + type: 'number', + required: true + } + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/recalculatePrice`, + verb: 'POST' + } + }); + + Self.recalculatePrice = async(ctx, saleFk, itemFk, quantity, options) => { + const myOptions = {userId: ctx.req.accessToken.userId}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const result = await Self.rawSql('CALL sale_replaceItem(?,?,?)', [saleFk, itemFk, quantity], myOptions); + return result; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 1b4d8e31c1..6aa542050f 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -13,6 +13,7 @@ module.exports = Self => { require('../methods/sale/usesMana')(Self); require('../methods/sale/clone')(Self); require('../methods/sale/getFromSectorCollection')(Self); + require('../methods/sale/replaceItem')(Self); Self.validatesPresenceOf('concept', { message: `Concept cannot be blank` From 4fe1d80e7c19c0e00ea9e6e529cbf988d51695f1 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 24 May 2024 14:00:41 +0200 Subject: [PATCH 034/217] feat(salix): refs #6321 default value when days is not present --- modules/ticket/back/methods/ticket/itemLack.js | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 58ab9a6470..c48ecc09c7 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -90,6 +90,7 @@ module.exports = Self => { let procedureParams = [true]; procedureParams.push(...filterKeyOrder.map(clave => ctx.args[clave] ?? null)); + if (!procedureParams[1])procedureParams[1] = 2; const procedureArgs = Array(procedureParams.length).fill('?').join(', '); let query = `CALL vn.item_getLack(${procedureArgs})`; From 7468f87808cee2fad88dd4c9597e7984b3e22878 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 30 May 2024 07:46:10 +0200 Subject: [PATCH 035/217] feat(salix): refs #6321 #6321 improve split mehtod --- modules/ticket/back/methods/ticket/split.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index 69f6f56d9b..cd821c019b 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -66,7 +66,8 @@ module.exports = Self => { await Self.transferSales(ctx, tid, vNewTicket, sales, myOptions); await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [tid, 'FIXING'], myOptions); - results.push({ticket: tid, status: 'split'}); + results.push({ticket: tid, newTicket: vNewTicket, status: 'split'}); + await tx.commit(); } catch ({message}) { results.push({ticket: tid, status: 'error', message}); } From 64a4a7830826401284d5ccedc1ba4eec5be39f31 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 10 Jun 2024 17:09:25 +0200 Subject: [PATCH 036/217] feat(salix): refs #6321 updates --- db/routines/vn/procedures/item_getSimilar.sql | 9 ++++++++- modules/item/back/methods/item/getSimilar.js | 8 ++++---- modules/ticket/back/methods/ticket/itemLackDetail.js | 1 + 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/db/routines/vn/procedures/item_getSimilar.sql b/db/routines/vn/procedures/item_getSimilar.sql index 762c253423..63d2c05d95 100644 --- a/db/routines/vn/procedures/item_getSimilar.sql +++ b/db/routines/vn/procedures/item_getSimilar.sql @@ -66,7 +66,14 @@ BEGIN ELSE 1 END AS minQuantity, iss.visible located, - b.price2 + b.price, + b.price1, + b.price2, + b.price3, + a.price, + a.price1, + a.price2, + a.price3, FROM vn.item i JOIN cache.available a ON a.item_id = i.id AND a.calc_id = vCalcFk diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 84bb351afe..f8115fb5e0 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -25,9 +25,9 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - // const where = filter.where; - // const query = [where.itemFk, where.warehouseFk, where.date ?? Date.now(), where.showType ?? true] ; - // const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?)',, myOptions); + const where = filter.where; + const query = [where.itemFk, where.warehouseFk, where.date ?? Date.now(), where.showType ?? true]; + const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?)', query, myOptions); return [ { @@ -51,7 +51,7 @@ module.exports = Self => { 'counter': 0, 'minQuantity': 1, 'visible': null, - 'price2': null + 'price2': 1 } ]; diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index f18d5d34e5..9c9ffd0108 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -45,6 +45,7 @@ module.exports = Self => { st.name stateName, st.id stateId, s.itemFk itemFk, + s.price price, al.code alertLevelCode, z.name zoneName, z.hour theoreticalhour, From 2cbd610bc2355ff553d6cf31c6f9d445731a773f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 12 Jun 2024 22:19:59 +0200 Subject: [PATCH 037/217] perf(salix): refs #6321 #7563 add ink.showOrder to procedure --- db/routines/vn/procedures/item_getSimilar.sql | 11 +++-------- modules/item/back/methods/item/getSimilar.js | 6 +++++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/db/routines/vn/procedures/item_getSimilar.sql b/db/routines/vn/procedures/item_getSimilar.sql index 63d2c05d95..318945c086 100644 --- a/db/routines/vn/procedures/item_getSimilar.sql +++ b/db/routines/vn/procedures/item_getSimilar.sql @@ -66,14 +66,7 @@ BEGIN ELSE 1 END AS minQuantity, iss.visible located, - b.price, - b.price1, - b.price2, - b.price3, - a.price, - a.price1, - a.price2, - a.price3, + b.price2 FROM vn.item i JOIN cache.available a ON a.item_id = i.id AND a.calc_id = vCalcFk @@ -87,6 +80,7 @@ BEGIN LEFT JOIN vn.buy b ON b.id = lb.buy_id LEFT JOIN vn.itemShelvingStock iss ON iss.itemFk = i.id AND iss.warehouseFk = vWarehouseFk + LEFT JOIN vn.ink ink ON ink.id = i.tag5 JOIN itemTags its WHERE a.available > 0 AND (i.typeFk = its.typeFk OR NOT vShowType) @@ -95,6 +89,7 @@ BEGIN (t.name = its.name) DESC, (it.value = its.value) DESC, (i.tag5 = its.tag5) DESC, + (ink.`showOrder`) DESC, match5 DESC, (i.tag6 = its.tag6) DESC, match6 DESC, diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index f8115fb5e0..1fc39cb1c6 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -26,7 +26,11 @@ module.exports = Self => { Object.assign(myOptions, options); const where = filter.where; - const query = [where.itemFk, where.warehouseFk, where.date ?? Date.now(), where.showType ?? true]; + const today = + new Date().toLocaleDateString('es-ES', {year: 'numeric', + month: '2-digit', + day: '2-digit'}); + const query = [where.itemFk, where.warehouseFk, where.date ?? today, where.showType ?? true]; const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?)', query, myOptions); return [ From e45ac6424c10815a96f6ac115d871a012cd1e21b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 14 Jun 2024 11:43:06 +0200 Subject: [PATCH 038/217] perf(salix): refs #6321 #6321 updates --- modules/ticket/back/methods/sale/replaceItem.js | 4 ++-- modules/ticket/back/methods/ticket/itemLackDetail.js | 1 + modules/ticket/back/methods/ticket/specs/itemLack.spec.js | 2 +- modules/ticket/back/methods/ticket/split.js | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index 529d429eb1..c153ee5d2a 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -25,12 +25,12 @@ module.exports = Self => { root: true }, http: { - path: `/recalculatePrice`, + path: `/replaceItem`, verb: 'POST' } }); - Self.recalculatePrice = async(ctx, saleFk, itemFk, quantity, options) => { + Self.replaceItem = async(ctx, saleFk, itemFk, quantity, options) => { const myOptions = {userId: ctx.req.accessToken.userId}; let tx; diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 9c9ffd0108..33beec5055 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -47,6 +47,7 @@ module.exports = Self => { s.itemFk itemFk, s.price price, al.code alertLevelCode, + z.id zoneFk, z.name zoneName, z.hour theoreticalhour, cn.isRookie, diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index 4d654d8305..4ca82b24d3 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -fdescribe('Item Lack', () => { +describe('Item Lack', () => { beforeEach(async() => { ctx = { req: { diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index cd821c019b..83a4e8b0ce 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -36,7 +36,8 @@ module.exports = Self => { try { const ticketsIds = tickets.map(({ticketFk}, index) => ticketFk); const ticketsCount = await Self.rawSql(` - Select t.id tid, s.id sid, count(s.id) count from + Select t.id tid, s.id sid, count(s.id) count + FROM vn.ticket t LEFT JOIN vn.sale s ON s.ticketFk = t.id From dba76a4f6b6a3caf86b54fe13e65b7b3e652d24b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 17 Jun 2024 12:38:36 +0200 Subject: [PATCH 039/217] test(Salix): refs #6321 #6321 add default items as Proposal --- modules/item/back/methods/item/getSimilar.js | 50 +++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 1fc39cb1c6..6fbda4018a 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -36,7 +36,7 @@ module.exports = Self => { return [ { 'id': 1, - 'longName': 'Ranged weapon longbow 200cm', + 'longName': 'Ranged weapon longbow 50cm', 'subName': 'Stark Industries', 'tag5': 'Color', 'value5': 'Brown', @@ -50,12 +50,58 @@ module.exports = Self => { 'value7': '1', 'tag8': null, 'value8': null, - 'available': 185, + 'available': 20, 'calc_id': 6, 'counter': 0, 'minQuantity': 1, 'visible': null, 'price2': 1 + }, + { + 'id': 2, + 'longName': 'Ranged weapon longbow 100cm', + 'subName': 'Stark Industries', + 'tag5': 'Color', + 'value5': 'Brown', + 'match5': 0, + 'match6': 1, + 'match7': 0, + 'match8': 1, + 'tag6': 'Categoria', + 'value6': '+1 precission', + 'tag7': 'Tallos', + 'value7': '1', + 'tag8': null, + 'value8': null, + 'available': 50, + 'calc_id': 6, + 'counter': 1, + 'minQuantity': 5, + 'visible': null, + 'price2': 10 + }, + { + 'id': 3, + 'longName': 'Ranged weapon longbow 200cm', + 'subName': 'Stark Industries', + 'tag5': 'Color', + 'value5': 'Brown', + 'match5': 1, + 'match6': 1, + 'match7': 1, + 'match8': 1, + 'tag6': 'Categoria', + 'value6': '+1 precission', + 'tag7': 'Tallos', + 'value7': '1', + 'tag8': null, + 'value8': null, + 'available': 185, + 'calc_id': 6, + 'counter': 10, + 'minQuantity': 10, + 'visible': null, + 'price2': 100 } ]; From e87c8ee5a78e8ec522928233460e264730e5f9a8 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 18 Jun 2024 13:17:29 +0200 Subject: [PATCH 040/217] feat(Salix): refs #6321 #6427 change url endpoint --- modules/ticket/back/methods/ticket/itemLackDetail.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 33beec5055..dbd0018b08 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -19,7 +19,7 @@ module.exports = Self => { }, ], http: { - path: `/itemLack/:itemFk/detail`, + path: `/itemLack/:itemFk`, verb: 'GET', }, }); From 14e14eea2a2c84102916a3e766cd3938c2592289 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 3 Jul 2024 23:02:28 +0200 Subject: [PATCH 041/217] feat(salix): refs #7380 #7380 client.substitutionAllowed new field --- db/versions/11132-aquaDracena/00-firstScript.sql | 1 + modules/client/back/models/client.json | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 db/versions/11132-aquaDracena/00-firstScript.sql diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql new file mode 100644 index 0000000000..d309098c59 --- /dev/null +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -0,0 +1 @@ +ALTER TABLE vn.client ADD substitutionAllowed BOOL DEFAULT false NULL; diff --git a/modules/client/back/models/client.json b/modules/client/back/models/client.json index f3eb9919b6..97c2a3624b 100644 --- a/modules/client/back/models/client.json +++ b/modules/client/back/models/client.json @@ -53,6 +53,9 @@ "isActive": { "type": "boolean" }, + "substitutionAllowed": { + "type": "boolean" + }, "credit": { "type": "number" }, From 8b72b7211e20a653f520c1c69e8c3656403c9cad Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 3 Jul 2024 23:02:47 +0200 Subject: [PATCH 042/217] feat(salix): refs #7380 #7380 new typeObservation --- db/versions/11132-aquaDracena/00-firstScript.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql index d309098c59..1b304c1d05 100644 --- a/db/versions/11132-aquaDracena/00-firstScript.sql +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -1 +1,4 @@ +INSERT IGNORE INTO vn.observationType (`description`,code,hasNewBornMessage) + VALUES ('Sustitución','substitution',0); + ALTER TABLE vn.client ADD substitutionAllowed BOOL DEFAULT false NULL; From 99efdffe58daeca312f503a82204fc1adf1caa0b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 4 Jul 2024 09:39:06 +0200 Subject: [PATCH 043/217] feat(salix): refs #6321 #6321 retrieve observationType --- db/dump/fixtures.before.sql | 4 ++-- db/versions/10936-wheatAnthurium/00-updateACL.sql | 2 +- db/versions/11132-aquaDracena/00-firstScript.sql | 2 ++ modules/ticket/back/methods/ticket/itemLackDetail.js | 8 +++++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 49f195dac1..b78b082bc8 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1059,7 +1059,6 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (19, 1, 4, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), (20, 1, 5, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), (21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), (23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), @@ -3123,11 +3122,12 @@ INSERT INTO `vn`.`clientSms` (`id`, `clientFk`, `smsFk`, `ticketFk`) (4, 1103, 4, 32), (13, 1101, 1, NULL), (14, 1101, 4, 27); + INSERT INTO cache.stock (warehouse_id,item_id,amount) VALUES (60,1,25), (13,1,-20), (4,1,-1000); - -- Auto-generated SQL script #202401220930 + UPDATE vn.warehouse SET isForTicket=1 WHERE id=2; diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql index 32acce8a2b..58c121e211 100644 --- a/db/versions/10936-wheatAnthurium/00-updateACL.sql +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -1,4 +1,4 @@ -INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) +INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'), ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'), diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql index 1b304c1d05..d02901f2bd 100644 --- a/db/versions/11132-aquaDracena/00-firstScript.sql +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -2,3 +2,5 @@ INSERT IGNORE INTO vn.observationType (`description`,code,hasNewBornMessage) VALUES ('Sustitución','substitution',0); ALTER TABLE vn.client ADD substitutionAllowed BOOL DEFAULT false NULL; + +ALTER TABLE vn.negativeOrigin MODIFY COLUMN `type` enum('FALTAS','CONTENEDOR','ENTRADAS','OVERBOOKING', 'SUSTITUCION') CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL; diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index dbd0018b08..68cab8a27a 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -53,7 +53,11 @@ module.exports = Self => { cn.isRookie, IF(sc.saleClonedFk, 1, 0 ) as turno, IF(tr.saleFk , 1, 0 ) as peticionCompra, - t.hour minTimed + t.hour minTimed, + c.id customerId, + c.name customerName, + c.substitutionAllowed, + ot.code observationTypeCode FROM vn.sale s JOIN vn.ticket t ON t.id=s.ticketFk @@ -68,6 +72,8 @@ module.exports = Self => { 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() From 212f84aa9ba927f4ae2424c00828e945f82f4977 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 19 Jul 2024 11:41:33 +0200 Subject: [PATCH 044/217] revert commit --- db/versions/11132-aquaDracena/00-firstScript.sql | 5 ----- modules/client/back/models/client.json | 3 --- 2 files changed, 8 deletions(-) diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql index d02901f2bd..8d813ffd3a 100644 --- a/db/versions/11132-aquaDracena/00-firstScript.sql +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -1,6 +1 @@ -INSERT IGNORE INTO vn.observationType (`description`,code,hasNewBornMessage) - VALUES ('Sustitución','substitution',0); - -ALTER TABLE vn.client ADD substitutionAllowed BOOL DEFAULT false NULL; - ALTER TABLE vn.negativeOrigin MODIFY COLUMN `type` enum('FALTAS','CONTENEDOR','ENTRADAS','OVERBOOKING', 'SUSTITUCION') CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL; diff --git a/modules/client/back/models/client.json b/modules/client/back/models/client.json index e737e4352b..f24f69ae77 100644 --- a/modules/client/back/models/client.json +++ b/modules/client/back/models/client.json @@ -53,9 +53,6 @@ "isActive": { "type": "boolean" }, - "substitutionAllowed": { - "type": "boolean" - }, "credit": { "type": "number" }, From 7e8c2eebe52644bae70924fe92532524302f4031 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 19 Jul 2024 19:38:21 +0200 Subject: [PATCH 045/217] feat: refs #6321 restore fixtures.before.sql --- db/dump/fixtures.before.sql | 47 ++++++++----------- .../back/methods/ticket/itemLackDetail.js | 1 - 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 4dd5f6ff6a..fffdcf7dff 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -963,25 +963,25 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`) ('VT', 'Sales'); INSERT INTO `vn`.`item`(`id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`, - `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `weightByPiece`, `category`) + `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `weightByPiece`) VALUES - (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3, 'SEL'), - (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2, 'SEL'), - (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5, 'SEL'), - (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (6, 5, 1, 2, NULL, 1, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (7, 5, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 'SEL'), - (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'), - (13, 5, 1, 2, NULL, 1, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL, 'SEL'), - (14, 5, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 'SEL'), - (15, 4, NULL, 1, NULL, 1, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 'SEL'), - (16, 6, NULL, 1, NULL, 1, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 'SEL'), - (71, 6, NULL, 1, NULL, 2, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 'SEL'); + (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3), + (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2), + (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5), + (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), + (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL), + (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), + (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), + (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), + (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL); -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 @@ -1082,6 +1082,7 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (19, 1, 4, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), (20, 1, 5, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), (21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), (23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), @@ -3149,16 +3150,6 @@ INSERT INTO `vn`.`clientSms` (`id`, `clientFk`, `smsFk`, `ticketFk`) (13, 1101, 1, NULL), (14, 1101, 4, 27); -INSERT INTO cache.stock (warehouse_id,item_id,amount) VALUES - (60,1,25), - (13,1,-20), - (4,1,-1000); - -UPDATE vn.warehouse - SET isForTicket=1 - WHERE id=2; - - INSERT INTO `vn`.`entryDms`(`entryFk`, `dmsFk`, `editorFk`) VALUES (1, 9, 9); diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 68cab8a27a..6409951f1a 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -56,7 +56,6 @@ module.exports = Self => { t.hour minTimed, c.id customerId, c.name customerName, - c.substitutionAllowed, ot.code observationTypeCode FROM vn.sale s From c9c9d5973d360f5a7794537efd539b7978d5aa13 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 20 Jul 2024 00:36:59 +0200 Subject: [PATCH 046/217] test(salix): refs #6321 #6321 fix test --- db/dump/fixtures.before.sql | 9 +++++++++ .../back/methods/route/specs/unlink.spec.js | 2 +- modules/ticket/back/methods/ticket/itemLack.js | 6 +++--- .../back/methods/ticket/specs/itemLack.spec.js | 16 ++++++++-------- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index fffdcf7dff..26210bcc8d 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -3953,3 +3953,12 @@ VALUES (4, 'Referencia Transferencias'), (5, 'Referencia Nominas'), (6, 'ABA'); +INSERT INTO `vn`.`item` (id,name,`size`,stems,minPrice,isToPrint,family,box,originFk,doPhoto,image,inkFk,intrastatFk,hasMinPrice,created,typeFk,generic,density,relevancy,expenseFk,isActive,longName,subName,tag5,value5,tag6,value6,tag7,value7,minimum,upToDown,hasKgPrice,isFloramondo,isFragile,stemMultiplier,isLaid,lastUsed,editorFk,isBoxPickingMode) + VALUES + (88,'Lack negative',200,1,10.0,0,'VT',0,2,0,'','WHT',6021010,1,'2024-07-19 11:27:32.000',1,0,167,0,'4751000000',1,'Lack negative origin','Stark Industries','Color','White','Categoria','supply','Tallos','1',3,0,0,0,0,1.0,0,'2024-07-19 11:27:32.000',100,0); + +INSERT INTO `vn`.`ticket` (id, clientFk,warehouseFk,shipped,nickname,refFk,addressFk,workerFk,observations,isSigned,isLabeled,isPrinted,packages,location,`hour`,created,isBlocked,solution,routeFk,priority,hasPriority,companyFk,agencyModeFk,landed,isBoxed,isDeleted,zoneFk,zonePrice,zoneBonus,totalWithVat,totalWithoutVat,weight,clonedFrom,cmrFk,editorFk,problem,risk) VALUES + (1000000, 1,1,'2001-01-01 00:00:00.000','employee',NULL,131,NULL,NULL,0,0,0,0,NULL,0,'2024-07-19 23:32:48.000',1,NULL,NULL,NULL,1,442,1,'2001-01-01',0,0,1,1.00,0.00,0.00,NULL,NULL,NULL,NULL,9,'',NULL); + +INSERT INTO `vn`.`sale` (id, itemFk,ticketFk,concept,quantity,originalQuantity,price,discount,priceFixed,reserved,isPicked,isPriceFixed,created,isAdded,total,editorFk,problem) VALUES + (43, 88,1000000,'Chest medical box 2',155.00,155.0,0.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,0.00,100,''); diff --git a/modules/route/back/methods/route/specs/unlink.spec.js b/modules/route/back/methods/route/specs/unlink.spec.js index 808cedccc1..a543ab4163 100644 --- a/modules/route/back/methods/route/specs/unlink.spec.js +++ b/modules/route/back/methods/route/specs/unlink.spec.js @@ -21,7 +21,7 @@ describe('route unlink()', () => { zoneAgencyModes = await models.ZoneAgencyMode.find(null, options); tickets = await models.Route.getSuggestedTickets(routeId, options); - expect(zoneAgencyModes.length).toEqual(3); + expect(zoneAgencyModes.length).toEqual(4); expect(tickets.length).toEqual(0); await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index c48ecc09c7..6430a63ab4 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -15,7 +15,7 @@ module.exports = Self => { http: {source: 'query'} }, { - arg: 'id', + arg: 'itemFk', type: 'number', description: 'The item id', }, @@ -45,7 +45,7 @@ module.exports = Self => { description: 'origen id', }, { - arg: 'warehouse', + arg: 'warehouseFk', type: 'number', description: 'The warehouse id', }, @@ -79,7 +79,7 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const filterKeyOrder = ['days', 'id', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouse']; + const filterKeyOrder = ['days', 'itemFk', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouseFk']; delete ctx?.args?.ctx; diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index 4ca82b24d3..2fe9287748 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -describe('Item Lack', () => { +fdescribe('Item Lack', () => { beforeEach(async() => { ctx = { req: { @@ -18,7 +18,7 @@ describe('Item Lack', () => { try { const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(4); + expect(result.length).toEqual(2); await tx.rollback(); } catch (e) { await tx.rollback(); @@ -31,7 +31,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - id: 1 + id: 88 }; try { const result = await models.Ticket.itemLack(ctx, filter, options); @@ -49,7 +49,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - longname: 'Ranged weapon longbow 200cm' + longname: 'Lack negative' }; try { const result = await models.Ticket.itemLack(ctx, filter, options); @@ -85,7 +85,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - colour: 'BRW' + colour: 'WHT' }; try { const result = await models.Ticket.itemLack(ctx, filter, options); @@ -103,12 +103,12 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - origen: 2 + origen: 1 }; try { const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(3); + expect(result.length).toEqual(2); await tx.rollback(); } catch (e) { await tx.rollback(); @@ -139,7 +139,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - lack: '-100' + lack: '-155' }; try { const result = await models.Ticket.itemLack(ctx, filter, options); From b2d58a1d6f854d0bdb3e89ab7e588e4cfdb61971 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 22 Jul 2024 17:30:25 +0200 Subject: [PATCH 047/217] Merge branch 'dev' into 6321_negative_tickets --- loopback/locale/en.json | 3 ++- .../back/methods/route/specs/getSuggestedTickets.spec.js | 2 +- modules/route/back/methods/route/specs/unlink.spec.js | 4 ++-- modules/ticket/back/methods/ticket/specs/itemLack.spec.js | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 382a2824c7..f071c91628 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -233,5 +233,6 @@ "It has been invoiced but the PDF could not be generated": "It has been invoiced but the PDF could not be generated", "It has been invoiced but the PDF of refund not be generated": "It has been invoiced but the PDF of refund not be generated", "Cannot add holidays on this day": "Cannot add holidays on this day", - "Cannot send mail": "Cannot send mail" + "Cannot send mail": "Cannot send mail", + "This worker already exists": "This worker already exists" } \ No newline at end of file diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js index 0acc6c1a7b..3d6702482d 100644 --- a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -31,7 +31,7 @@ describe('route getSuggestedTickets()', () => { const length = result.length; const anyResult = result[Math.floor(Math.random() * Math.floor(length))]; - expect(result.length).toEqual(4); + expect(result.length).toEqual(5); expect(anyResult.zoneFk).toEqual(1); expect(anyResult.agencyModeFk).toEqual(8); diff --git a/modules/route/back/methods/route/specs/unlink.spec.js b/modules/route/back/methods/route/specs/unlink.spec.js index a543ab4163..9d1f48be8b 100644 --- a/modules/route/back/methods/route/specs/unlink.spec.js +++ b/modules/route/back/methods/route/specs/unlink.spec.js @@ -14,14 +14,14 @@ describe('route unlink()', () => { let tickets = await models.Route.getSuggestedTickets(routeId, options); expect(zoneAgencyModes.length).toEqual(4); - expect(tickets.length).toEqual(3); + expect(tickets.length).toEqual(4); await models.Route.unlink(agencyModeId, zoneId, options); zoneAgencyModes = await models.ZoneAgencyMode.find(null, options); tickets = await models.Route.getSuggestedTickets(routeId, options); - expect(zoneAgencyModes.length).toEqual(4); + expect(zoneAgencyModes.length).toEqual(3); expect(tickets.length).toEqual(0); await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index 2fe9287748..93dce11b27 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -fdescribe('Item Lack', () => { +describe('Item Lack', () => { beforeEach(async() => { ctx = { req: { @@ -36,7 +36,7 @@ fdescribe('Item Lack', () => { try { const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); + expect(result.length).toEqual(2); await tx.rollback(); } catch (e) { await tx.rollback(); From 94f99ccee1f2ff8f61708dc8019405f58af9a130 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 11 Sep 2024 11:58:58 +0200 Subject: [PATCH 048/217] fix(salix): refs #6321 #6321 remove ticketMethod clone --- modules/ticket/back/models/ticket-methods.js | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index 1a113b2c52..486e9f9351 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -46,7 +46,6 @@ module.exports = function(Self) { require('../methods/ticket/invoiceTicketsAndPdf')(Self); require('../methods/ticket/docuwareDownload')(Self); require('../methods/ticket/myLastModified')(Self); - require('../methods/ticket/clone')(Self); require('../methods/ticket/itemLack')(Self); require('../methods/ticket/itemLackDetail')(Self); require('../methods/ticket/itemLackOrigin')(Self); From e76e2a15f2f63e122eb0ce5b28d8febeb9f4138e Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 13 Sep 2024 09:44:09 +0200 Subject: [PATCH 049/217] feat(salix): refs #6321 #6321 TODO --- .../ticket/back/methods/ticket/itemLackDetail.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 6409951f1a..ab6e904c4d 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -10,6 +10,12 @@ module.exports = Self => { type: 'number', description: 'The item id', }, + { + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', + http: {source: 'query'} + } ], returns: [ { @@ -24,7 +30,7 @@ module.exports = Self => { }, }); - Self.itemLackDetail = async(itemFk, options) => { + Self.itemLackDetail = async(itemFk, filter, options) => { const conn = Self.dataSource.connector; const myOptions = {}; @@ -80,6 +86,11 @@ module.exports = Self => { `, [itemFk, 2]); + // if (filter.where.alertLevel) { + // stmt.merge({ + // sql: `AND ts.alertLevel=?`, params: ['FREE']}); + // } + // stmt.merge(conn.makeWhere(filter)); const sql = ParameterizedSQL.join([stmt], ';'); const result = await conn.executeStmt(sql, myOptions); return result; From 91fac11fa0ac19c03fb8cfde516c7a47c44e5d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Mon, 16 Sep 2024 18:21:12 +0200 Subject: [PATCH 050/217] fix: refs #7760 tmp.ticketIPT --- .../vn/procedures/prepareTicketList.sql | 8 +- .../vn/procedures/productionControl.sql | 43 ++-- .../vn/procedures/sale_getProblems.sql | 233 ----------------- .../procedures/sale_getProblemsByTicket.sql | 23 +- .../vn/procedures/ticket_getProblems.sql | 239 +++++++++++++++--- .../back/methods/sales-monitor/salesFilter.js | 11 +- modules/ticket/back/methods/ticket/filter.js | 10 +- .../back/methods/ticket/getTicketsFuture.js | 10 +- 8 files changed, 250 insertions(+), 327 deletions(-) delete mode 100644 db/routines/vn/procedures/sale_getProblems.sql diff --git a/db/routines/vn/procedures/prepareTicketList.sql b/db/routines/vn/procedures/prepareTicketList.sql index 7c44bb9946..cfe9492ee0 100644 --- a/db/routines/vn/procedures/prepareTicketList.sql +++ b/db/routines/vn/procedures/prepareTicketList.sql @@ -1,16 +1,18 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`prepareTicketList`(vStartingDate DATETIME, vEndingDate DATETIME) +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`prepareTicketList`( + vStartingDate DATETIME, + vEndingDate DATETIME +) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.productionTicket; CREATE TEMPORARY TABLE tmp.productionTicket (PRIMARY KEY (ticketFk)) ENGINE = MEMORY - SELECT t.id ticketFk, t.clientFk + SELECT t.id ticketFk FROM ticket t JOIN alertLevel al ON al.code = 'DELIVERED' LEFT JOIN ticketState ts ON ts.ticketFk = t.id JOIN client c ON c.id = t.clientFk - WHERE c.typeFk IN ('normal','handMaking','internalUse') AND ( t.shipped BETWEEN util.VN_CURDATE() AND vEndingDate diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql index e5323e84ef..88ed42e837 100644 --- a/db/routines/vn/procedures/productionControl.sql +++ b/db/routines/vn/procedures/productionControl.sql @@ -15,7 +15,7 @@ proc: BEGIN DECLARE vEndingDate DATETIME; DECLARE vIsTodayRelative BOOLEAN; - SELECT util.dayEnd(util.VN_CURDATE()) + INTERVAL LEAST(vScopeDays, maxProductionScopeDays) DAY + SELECT util.dayEnd(util.VN_CURDATE() + INTERVAL LEAST(vScopeDays, maxProductionScopeDays) DAY) INTO vEndingDate FROM productionConfig; @@ -26,16 +26,10 @@ proc: BEGIN CALL prepareTicketList(util.yesterday(), vEndingDate); CREATE OR REPLACE TEMPORARY TABLE tmp.ticket - SELECT * FROM tmp.productionTicket; - - CALL prepareClientList(); - - CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems (INDEX (ticketFk)) ENGINE = MEMORY - SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped - FROM tmp.productionTicket tt - JOIN ticket t ON t.id = tt.ticketFk; + SELECT ticketFk + FROM tmp.productionTicket; CALL ticket_getProblems(vIsTodayRelative); @@ -43,7 +37,7 @@ proc: BEGIN (PRIMARY KEY(ticketFk), previaParking VARCHAR(255)) ENGINE = MEMORY SELECT tt.ticketFk, - tt.clientFk, + t.clientFk, t.warehouseFk, t.nickname, t.packages, @@ -61,7 +55,17 @@ proc: BEGIN 0 `lines`, CAST( 0 AS DECIMAL(5,2)) m3, CAST( 0 AS DECIMAL(5,2)) preparationRate, - "" problem, + TRIM(CAST(CONCAT( IFNULL(tpr.itemShortage, ''), + IFNULL(tpr.itemDelay, ''), + IFNULL(tpr.itemLost, ''), + IF(tpr.isFreezed, ' CONGELADO',''), + IF(tpr.hasHighRisk, ' RIESGO',''), + IF(tpr.hasTicketRequest, ' COD 100',''), + IF(tpr.isTaxDataChecked, '',' FICHA INCOMPLETA'), + IF(tpr.hasComponentLack, ' COMPONENTES', ''), + IF(HOUR(util.VN_NOW()) < IF(HOUR(t.shipped), HOUR(t.shipped), COALESCE(HOUR(zc.hour),HOUR(z.hour))) + AND tpr.isTooLittle, ' PEQUEÑO', '') + ) AS char(255))) problem, IFNULL(tls.state,2) state, w.code workerCode, DATE(t.shipped) shipped, @@ -101,6 +105,7 @@ proc: BEGIN AND DATE(t.shipped) = zc.dated LEFT JOIN ticketParking tp ON tp.ticketFk = t.id LEFT JOIN parking pk ON pk.id = tp.parkingFk + LEFT JOIN tmp.ticketProblem tpr ON tpr.ticketFk = tt.ticketFk WHERE t.warehouseFk = vWarehouseFk AND dm.code IN ('AGENCY', 'DELIVERY', 'PICKUP'); @@ -123,19 +128,6 @@ proc: BEGIN ADD COLUMN `collectionV` INT, ADD COLUMN `collectionN` INT; - UPDATE tmp.productionBuffer pb - JOIN tmp.ticket_problems tp ON tp.ticketFk = pb.ticketFk - SET pb.problem = TRIM(CAST(CONCAT( IFNULL(tp.itemShortage, ''), - IFNULL(tp.itemDelay, ''), - IFNULL(tp.itemLost, ''), - IF(tp.isFreezed, ' CONGELADO',''), - IF(tp.hasHighRisk, ' RIESGO',''), - IF(tp.hasTicketRequest, ' COD 100',''), - IF(tp.isTaxDataChecked, '',' FICHA INCOMPLETA'), - IF(tp.hasComponentLack, ' COMPONENTES', ''), - IF(HOUR(util.VN_NOW()) < pb.HH AND tp.isTooLittle, ' PEQUEÑO', '') - ) AS char(255))); - -- Clientes Nuevos o Recuperados UPDATE tmp.productionBuffer pb LEFT JOIN bs.clientNewBorn cnb ON cnb.clientFk = pb.clientFk @@ -267,8 +259,7 @@ proc: BEGIN DROP TEMPORARY TABLE tmp.productionTicket, - tmp.ticket, - tmp.ticket_problems, + tmp.ticketProblems, tmp.ticketWithPrevia, tItemShelvingStock, tItemPackingType; diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql deleted file mode 100644 index 2bba8fbc39..0000000000 --- a/db/routines/vn/procedures/sale_getProblems.sql +++ /dev/null @@ -1,233 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getProblems`( - vIsTodayRelative tinyint(1) -) -BEGIN -/** - * Calcula los problemas de cada venta para un conjunto de tickets. - * - * @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy - * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Tickets a calcular - * @return tmp.sale_problems - */ - DECLARE vWarehouseFk INT; - DECLARE vDate DATE; - DECLARE vAvailableCache INT; - DECLARE vVisibleCache INT; - DECLARE vDone BOOL; - DECLARE vCursor CURSOR FOR - SELECT DISTINCT warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(shipped)) - FROM tmp.sale_getProblems - WHERE shipped BETWEEN util.VN_CURDATE() - AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY); - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - CREATE OR REPLACE TEMPORARY TABLE tmp.sale_problems ( - ticketFk INT(11), - saleFk INT(11), - isFreezed INTEGER(1) DEFAULT 0, - risk DECIMAL(10,1) DEFAULT 0, - hasRisk TINYINT(1) DEFAULT 0, - hasHighRisk TINYINT(1) DEFAULT 0, - hasTicketRequest INTEGER(1) DEFAULT 0, - itemShortage VARCHAR(255), - isTaxDataChecked INTEGER(1) DEFAULT 1, - itemDelay VARCHAR(255), - itemLost VARCHAR(255), - hasComponentLack INTEGER(1), - hasRounding VARCHAR(255), - isTooLittle BOOL DEFAULT FALSE, - isVip BOOL DEFAULT FALSE, - PRIMARY KEY (ticketFk, saleFk) - ) ENGINE = MEMORY; - - INSERT INTO tmp.sale_problems(ticketFk, - saleFk, - isFreezed, - risk, - hasRisk, - hasHighRisk, - hasTicketRequest, - isTaxDataChecked, - hasComponentLack, - isTooLittle) - SELECT sgp.ticketFk, - s.id, - IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed, - t.risk, - IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk, - IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk, - IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest, - IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked, - IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack, - IF(FIND_IN_SET('isTooLittle', t.problem) - AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE, - TRUE, FALSE) isTooLittle - FROM tmp.sale_getProblems sgp - JOIN ticket t ON t.id = sgp.ticketFk - LEFT JOIN sale s ON s.ticketFk = t.id - LEFT JOIN item i ON i.id = s.itemFk - LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk - AND zc.dated = util.VN_CURDATE() - WHERE s.problem <> '' OR t.problem <> '' OR t.risk - GROUP BY t.id, s.id; - - INSERT INTO tmp.sale_problems(ticketFk, isVip) - SELECT sgp.ticketFk, TRUE - FROM tmp.sale_getProblems sgp - JOIN client c ON c.id = sgp.clientFk - WHERE c.businessTypeFk = 'VIP' - ON DUPLICATE KEY UPDATE isVIP = TRUE; - - CREATE OR REPLACE TEMPORARY TABLE tItemShelvingStock_byWarehouse - (INDEX (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT ish.itemFk itemFk, - SUM(ish.visible) visible, - s.warehouseFk warehouseFk - FROM itemShelving ish - JOIN shelving sh ON sh.code = ish.shelvingFk - JOIN parking p ON p.id = sh.parkingFk - JOIN sector s ON s.id = p.sectorFk - GROUP BY ish.itemFk, s.warehouseFk; - - -- Disponible, faltas, inventario y retrasos - OPEN vCursor; - l: LOOP - SET vDone = FALSE; - FETCH vCursor INTO vWarehouseFk, vDate; - - IF vDone THEN - LEAVE l; - END IF; - - -- Disponible: no va a haber suficiente producto para preparar todos los pedidos - CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, vDate); - - -- Faltas: visible, disponible y ubicado son menores que la cantidad vendida - CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); - - INSERT INTO tmp.sale_problems(ticketFk, itemShortage, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT sgp.ticketFk, - LEFT(CONCAT('F: ', GROUP_CONCAT(i.id, ' ', i.longName, ' ')), 250) problem, - s.id saleFk - FROM tmp.sale_getProblems sgp - JOIN ticket t ON t.id = sgp.ticketFk - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN cache.visible v ON v.item_id = i.id - AND v.calc_id = vVisibleCache - LEFT JOIN cache.available av ON av.item_id = i.id - AND av.calc_id = vAvailableCache - LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id - AND issw.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) < s.quantity - AND IFNULL(av.available, 0) < s.quantity - AND IFNULL(issw.visible, 0) < s.quantity - AND NOT s.isPicked - AND NOT s.reserved - AND ic.merchandise - AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) - AND NOT i.generic - AND util.VN_CURDATE() = vDate - AND t.warehouseFk = vWarehouseFk - GROUP BY sgp.ticketFk) sub - ON DUPLICATE KEY UPDATE itemShortage = sub.problem, saleFk = sub.saleFk; - - -- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida - INSERT INTO tmp.sale_problems(ticketFk, itemLost, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT sgp.ticketFk, - LEFT(GROUP_CONCAT('I: ', i.id, ' ', i.longName, ' '), 250) problem, - s.id saleFk - FROM tmp.sale_getProblems sgp - JOIN ticket t ON t.id = sgp.ticketFk - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN cache.visible v ON v.item_id = s.itemFk - AND v.calc_id = vVisibleCache - LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id - AND issw.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) >= s.quantity - AND IFNULL(issw.visible, 0) < s.quantity - AND s.quantity > 0 - AND NOT s.isPicked - AND NOT s.reserved - AND ic.merchandise - AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) - AND NOT i.generic - AND util.VN_CURDATE() = vDate - AND t.warehouseFk = vWarehouseFk - GROUP BY sgp.ticketFk - ) sub - ON DUPLICATE KEY UPDATE itemLost = sub.problem, saleFk = sub.saleFk; - - -- Retraso: Disponible suficiente, pero no visible ni ubicado - INSERT INTO tmp.sale_problems(ticketFk, itemDelay, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT sgp.ticketFk, - LEFT(GROUP_CONCAT('R: ', i.id, ' ', i.longName, ' '), 250) problem, - s.id saleFk - FROM tmp.sale_getProblems sgp - JOIN ticket t ON t.id = sgp.ticketFk - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN cache.visible v ON v.item_id = s.itemFk - AND v.calc_id = vVisibleCache - LEFT JOIN cache.available av ON av.item_id = i.id - AND av.calc_id = vAvailableCache - LEFT JOIN tItemShelvingStock_byWarehouse issw ON issw.itemFk = i.id - AND issw.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) < s.quantity - AND IFNULL(av.available, 0) >= s.quantity - AND IFNULL(issw.visible, 0) < s.quantity - AND s.quantity > 0 - AND NOT s.isPicked - AND NOT s.reserved - AND ic.merchandise - AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) - AND NOT i.generic - AND util.VN_CURDATE() = vDate - AND t.warehouseFk = vWarehouseFk - GROUP BY sgp.ticketFk - ) sub - ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk; - - -- Redondeo: cantidad incorrecta con respecto al grouping - CALL buy_getUltimate(NULL, vWarehouseFk, vDate); - INSERT INTO tmp.sale_problems(ticketFk, hasRounding, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT sgp.ticketFk, - s.id saleFk, - LEFT(GROUP_CONCAT('RE: ',i.id, ' ', IFNULL(i.longName,'') SEPARATOR ', '), 250) problem - FROM tmp.sale_getProblems sgp - JOIN ticket t ON t.id = sgp.ticketFk - AND t.warehouseFk = vWarehouseFk - JOIN sale s ON s.ticketFk = sgp.ticketFk - JOIN item i ON i.id = s.itemFk - JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - JOIN buy b ON b.id = bu.buyFk - WHERE MOD(s.quantity, b.`grouping`) - GROUP BY sgp.ticketFk - )sub - ON DUPLICATE KEY UPDATE hasRounding = sub.problem, saleFk = sub.saleFk; - - DROP TEMPORARY TABLE tmp.buyUltimate; - END LOOP; - CLOSE vCursor; - - DROP TEMPORARY TABLE tItemShelvingStock_byWarehouse; -END$$ -DELIMITER ; diff --git a/db/routines/vn/procedures/sale_getProblemsByTicket.sql b/db/routines/vn/procedures/sale_getProblemsByTicket.sql index ff419989d4..af69e84300 100644 --- a/db/routines/vn/procedures/sale_getProblemsByTicket.sql +++ b/db/routines/vn/procedures/sale_getProblemsByTicket.sql @@ -1,5 +1,8 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getProblemsByTicket`(IN vTicketFk INT, IN vIsTodayRelative TINYINT(1)) +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getProblemsByTicket`( + IN vTicketFk INT, + IN vIsTodayRelative TINYINT(1) +) BEGIN /** * Calcula los problemas de cada venta @@ -7,19 +10,17 @@ BEGIN * * @return Problems result */ - CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT t.id ticketFk, t.clientFk, t.warehouseFk, t.shipped - FROM ticket t - WHERE t.id = vTicketFk; + CREATE OR REPLACE TEMPORARY TABLE tmp.ticket + (INDEX (ticketFk)) + ENGINE = MEMORY + SELECT vTicketFk ticketFk; - CALL sale_getProblems(vIsTodayRelative); + CALL ticket_getProblems(vIsTodayRelative); - SELECT * FROM tmp.sale_problems; + SELECT * FROM tmp.saleProblems; DROP TEMPORARY TABLE - tmp.sale_getProblems, - tmp.sale_problems; + tmp.ticket, + tmp.ticketProblems; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index 1851bce47f..00a8ee7278 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -1,53 +1,216 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getProblems`( - vIsTodayRelative tinyint(1) + vIsTodayRelative TINYINT(1) ) BEGIN /** * Calcula los problemas para un conjunto de tickets. * Agrupados por ticket * - * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular - * @return tmp.ticket_problems + * @table tmp.tmp.ticket(ticketFk) Identificadores de los tickets a calcular + * @return tmp.ticketProblems */ - CALL sale_getProblems(vIsTodayRelative); + DECLARE vWarehouseFk INT; + DECLARE vDate DATE; + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + DECLARE vDone BOOL; + DECLARE vCursor CURSOR FOR + SELECT DISTINCT t.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(t.shipped)) + FROM tmp.ticket t + JOIN ticket t ON t.id = t.ticketFk + WHERE t.shipped BETWEEN util.VN_CURDATE() + AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY); - CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_problems - (PRIMARY KEY (ticketFk)) + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + CREATE OR REPLACE TEMPORARY TABLE tmp.saleProblems( + ticketFk INT(11), + saleFk INT(11), + hasItemShortage BOOL DEFAULT FALSE, + hasItemLost BOOL DEFAULT FALSE, + hasItemDelay BOOL DEFAULT FALSE, + hasRounding BOOL DEFAULT FALSE, + PRIMARY KEY (ticketFk, saleFk) + ) ENGINE = MEMORY; + + CREATE OR REPLACE TEMPORARY TABLE tItemShelving + (INDEX (itemFk, warehouseFk)) ENGINE = MEMORY - SELECT ticketFk, - MAX(isFreezed) isFreezed, - MAX(risk) risk, - MAX(hasRisk) hasRisk, - MAX(hasHighRisk) hasHighRisk, - MAX(hasTicketRequest) hasTicketRequest, - MAX(itemShortage) itemShortage, - MIN(isTaxDataChecked) isTaxDataChecked, - MAX(hasComponentLack) hasComponentLack, - MAX(isTooLittle) isTooLittle, - MAX(itemDelay) itemDelay, - MAX(hasRounding) hasRounding, - MAX(itemLost) itemLost, - MAX(isVip) isVip, - 0 totalProblems - FROM tmp.sale_problems - GROUP BY ticketFk; + SELECT ish.itemFk itemFk, + SUM(ish.visible) visible, + s.warehouseFk warehouseFk + FROM itemShelving ish + JOIN shelving sh ON sh.code = ish.shelvingFk + JOIN parking p ON p.id = sh.parkingFk + JOIN sector s ON s.id = p.sectorFk + GROUP BY ish.itemFk, s.warehouseFk; + + -- Disponible, faltas, inventario y retrasos + OPEN vCursor; + l: LOOP + SET vDone = FALSE; + FETCH vCursor INTO vWarehouseFk, vDate; - UPDATE tmp.ticket_problems - SET totalProblems = ( - (isFreezed) + - (hasHighRisk) + - (hasTicketRequest) + - (!isTaxDataChecked) + - (hasComponentLack) + - (itemDelay IS NOT NULL) + - (isTooLittle) + - (itemLost IS NOT NULL) + - (hasRounding IS NOT NULL) + - (itemShortage IS NOT NULL) + - (isVip) - ); + IF vDone THEN + LEAVE l; + END IF; + + -- Disponible: no va a haber suficiente producto para preparar todos los pedidos + CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, vDate); + + -- Faltas: visible, disponible y ubicado son menores que la cantidad vendida + CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); - DROP TEMPORARY TABLE tmp.sale_problems; + INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasItemShortage) + SELECT tt.ticketFk, s.id, TRUE + FROM tmp.ticket tt + JOIN ticket t ON t.id = tt.ticketFk + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = i.id + AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id + AND av.calc_id = vAvailableCache + LEFT JOIN tItemShelving tis ON tis.itemFk = i.id + AND tis.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible, 0) < s.quantity + AND IFNULL(av.available, 0) < s.quantity + AND IFNULL(tis.visible, 0) < s.quantity + AND NOT s.isPicked + AND NOT s.reserved + AND ic.merchandise + AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY s.id; + + -- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida + INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasItemLost) + SELECT tt.ticketFk, s.id, TRUE + FROM tmp.ticket tt + JOIN ticket t ON t.id = tt.ticketFk + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk + AND v.calc_id = vVisibleCache + LEFT JOIN tItemShelving tis ON tis.itemFk = i.id + AND tis.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible, 0) >= s.quantity + AND IFNULL(tis.visible, 0) < s.quantity + AND s.quantity > 0 + AND NOT s.isPicked + AND NOT s.reserved + AND ic.merchandise + AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasItemLost = TRUE; + + -- Retraso: Disponible suficiente, pero no visible ni ubicado + INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasItemDelay) + SELECT tt.ticketFk, s.id, TRUE + FROM tmp.ticket tt + JOIN ticket t ON t.id = tt.ticketFk + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk + AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id + AND av.calc_id = vAvailableCache + LEFT JOIN tItemShelving tis ON tis.itemFk = i.id + AND tis.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible, 0) < s.quantity + AND IFNULL(av.available, 0) >= s.quantity + AND IFNULL(tis.visible, 0) < s.quantity + AND s.quantity > 0 + AND NOT s.isPicked + AND NOT s.reserved + AND ic.merchandise + AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasItemDelay = TRUE; + + -- Redondeo: cantidad incorrecta con respecto al grouping + CALL buy_getUltimate(NULL, vWarehouseFk, vDate); + + INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasRounding) + SELECT tt.ticketFk, s.id, TRUE + FROM tmp.ticket tt + JOIN ticket t ON t.id = tt.ticketFk + AND t.warehouseFk = vWarehouseFk + JOIN sale s ON s.ticketFk = tt.ticketFk + JOIN item i ON i.id = s.itemFk + JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk + JOIN buy b ON b.id = bu.buyFk + WHERE MOD(s.quantity, b.`grouping`) + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasRounding = TRUE; + + DROP TEMPORARY TABLE tmp.buyUltimate; + END LOOP; + CLOSE vCursor; + + CREATE OR REPLACE TEMPORARY TABLE tmp.ticketProblem ( + ticketFk INT(11), + isFreezed BOOL DEFAULT FALSE, + risk DECIMAL(10,1) DEFAULT 0, + hasRisk BOOL DEFAULT FALSE, + hasHighRisk BOOL DEFAULT FALSE, + hasTicketRequest BOOL DEFAULT FALSE, + isTaxDataChecked BOOL DEFAULT FALSE, + isTooLittle BOOL DEFAULT FALSE, + isVip BOOL DEFAULT FALSE, + hasItemShortage BOOL DEFAULT FALSE, + hasItemDelay BOOL DEFAULT FALSE, + hasItemLost BOOL DEFAULT FALSE, + hasComponentLack BOOL DEFAULT FALSE, + hasRounding BOOL DEFAULT FALSE, + PRIMARY KEY (ticketFk) + ) ENGINE = MEMORY + SELECT tt.ticketFk, + IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed, + t.risk, + IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk, + IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk, + IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest, + IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked, + IF(FIND_IN_SET('isTooLittle', t.problem) + AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE, + TRUE, FALSE) isTooLittle, + IF(c.businessTypeFk = 'VIP', TRUE, FALSE) isVip, + SUM(IFNULL(ts.hasItemShortage,0)) hasItemShortage, + SUM(IFNULL(ts.hasItemDelay,0)) hasItemDelay, + SUM(IFNULL(ts.hasItemLost,0)) hasItemLost, + IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack, + SUM(IFNULL(ts.hasRounding,0)) hasRounding, + LEFT(CONCAT('F: ',GROUP_CONCAT(CONCAT(i.id, ' ', i.longName) SEPARATOR ', ')), 250) itemShortage, + LEFT(CONCAT('R: ',GROUP_CONCAT(CONCAT(i2.id, ' ', i2.longName) SEPARATOR ', ')), 250) itemDelay, + LEFT(CONCAT('I: ',GROUP_CONCAT(CONCAT(i3.id, ' ', i3.longName) SEPARATOR ', ')), 250) itemLost, + LEFT(CONCAT('RE: ',GROUP_CONCAT(CONCAT(i4.id, ' ', i4.longName) SEPARATOR ', ')), 250) componentLack, + LEFT(CONCAT('RE: ',GROUP_CONCAT(CONCAT(i5.id, ' ', i5.longName) SEPARATOR ', ')), 250) rounding + FROM tmp.ticket tt + JOIN ticket t ON t.id = tt.ticketFk + JOIN client c ON c.id = t.clientFk + LEFT JOIN sale s ON s.ticketFk = t.id + LEFT JOIN tmp.saleProblems ts ON ts.saleFk = s.id + LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk + AND zc.dated = util.VN_CURDATE() + WHERE s.problem <> '' OR t.problem <> '' OR t.risk + GROUP BY t.id; + + DROP TEMPORARY TABLE tItemShelving; END$$ DELIMITER ; diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 927f49999f..9b22cb2d26 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -239,10 +239,10 @@ module.exports = Self => { stmts.push(`SET SESSION optimizer_search_depth = @_optimizer_search_depth`); stmt = new ParameterizedSQL(` - CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems + CREATE OR REPLACE TEMPORARY TABLE tmp.ticket (INDEX (ticketFk)) ENGINE = MEMORY - SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped + SELECT f.id ticketFk FROM tmp.filter f LEFT JOIN alertLevel al ON al.id = f.alertLevel WHERE (al.code = 'FREE' OR f.alertLevel IS NULL) @@ -263,7 +263,7 @@ module.exports = Self => { stmts.push('CALL ticket_getWarnings()'); stmt = new ParameterizedSQL(` - UPDATE tmp.ticket_problems + UPDATE tmp.ticketProblems SET risk = IF(hasRisk, risk, 0) `); stmts.push(stmt); @@ -271,7 +271,7 @@ module.exports = Self => { stmt = new ParameterizedSQL(` SELECT * FROM tmp.filter f - LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id + LEFT JOIN tmp.ticketProblems tp ON tp.ticketFk = f.id LEFT JOIN tmp.ticket_warnings tw ON tw.ticketFk = f.id `); stmts.push(stmt); @@ -376,8 +376,7 @@ module.exports = Self => { stmts.push(` DROP TEMPORARY TABLE tmp.filter, - tmp.ticket_problems, - tmp.sale_getProblems, + tmp.ticketProblem, tmp.sale_getWarnings, tmp.ticket_warnings `); diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index c98ddaab60..9ac239be77 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -293,10 +293,10 @@ module.exports = Self => { stmts.push(stmt); stmt = new ParameterizedSQL(` - CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems + CREATE OR REPLACE TEMPORARY TABLE tmp.ticket (INDEX (ticketFk)) ENGINE = MEMORY - SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped + SELECT f.id ticketFk FROM tmp.filter f LEFT JOIN alertLevel al ON al.id = f.alertLevel WHERE (al.code = 'FREE' OR f.alertLevel IS NULL) @@ -307,7 +307,7 @@ module.exports = Self => { stmts.push('CALL ticket_getProblems(FALSE)'); stmt = new ParameterizedSQL(` - UPDATE tmp.ticket_problems + UPDATE tmp.ticketProblems SET risk = IF(hasRisk, risk, 0) `); stmts.push(stmt); @@ -315,7 +315,7 @@ module.exports = Self => { stmt = new ParameterizedSQL(` SELECT f.*, tp.* FROM tmp.filter f - LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id + LEFT JOIN tmp.ticketProblems tp ON tp.ticketFk = f.id `); if (args.problems != undefined && (!args.from && !args.to)) @@ -371,7 +371,7 @@ module.exports = Self => { stmts.push( `DROP TEMPORARY TABLE tmp.filter, - tmp.ticket_problems`); + tmp.ticketProblems`); const sql = ParameterizedSQL.join(stmts, ';'); const result = await conn.executeStmt(sql, myOptions); diff --git a/modules/ticket/back/methods/ticket/getTicketsFuture.js b/modules/ticket/back/methods/ticket/getTicketsFuture.js index 2479245912..1c31da057c 100644 --- a/modules/ticket/back/methods/ticket/getTicketsFuture.js +++ b/modules/ticket/back/methods/ticket/getTicketsFuture.js @@ -146,10 +146,10 @@ module.exports = Self => { stmts.push(stmt); stmt = new ParameterizedSQL(` - CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems + CREATE OR REPLACE TEMPORARY TABLE tmp.ticket (INDEX (ticketFk)) ENGINE = MEMORY - SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped, f.lines, f.liters + SELECT f.id ticketFk FROM tmp.filter f LEFT JOIN alertLevel al ON al.id = f.alertLevel WHERE (al.code = 'FREE' OR f.alertLevel IS NULL) @@ -159,7 +159,7 @@ module.exports = Self => { stmts.push('CALL ticket_getProblems(FALSE)'); stmt = new ParameterizedSQL(` - UPDATE tmp.ticket_problems + UPDATE tmp.ticketProblems SET risk = IF(hasRisk, risk, 0) `); stmts.push(stmt); @@ -167,7 +167,7 @@ module.exports = Self => { stmt = new ParameterizedSQL(` SELECT f.*, tp.* FROM tmp.filter f - LEFT JOIN tmp.ticket_problems tp ON tp.ticketFk = f.id + LEFT JOIN tmp.ticketProblems tp ON tp.ticketFk = f.id `); if (args.problems != undefined && (!args.originScopeDays && !args.futureScopeDays)) @@ -217,7 +217,7 @@ module.exports = Self => { stmts.push( `DROP TEMPORARY TABLE tmp.filter, - tmp.ticket_problems`); + tmp.ticketProblems`); const sql = ParameterizedSQL.join(stmts, ';'); const result = await conn.executeStmt(sql, myOptions); From 750b83bb45efd8be2f95d148567a511a9288417e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Mon, 16 Sep 2024 19:03:12 +0200 Subject: [PATCH 051/217] fix: refs #7760 tmp.ticketIPT --- db/routines/vn/procedures/productionControl.sql | 2 +- db/routines/vn/procedures/ticket_getProblems.sql | 11 ++++++++--- .../monitor/back/methods/sales-monitor/salesFilter.js | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql index 88ed42e837..b33224e80c 100644 --- a/db/routines/vn/procedures/productionControl.sql +++ b/db/routines/vn/procedures/productionControl.sql @@ -105,7 +105,7 @@ proc: BEGIN AND DATE(t.shipped) = zc.dated LEFT JOIN ticketParking tp ON tp.ticketFk = t.id LEFT JOIN parking pk ON pk.id = tp.parkingFk - LEFT JOIN tmp.ticketProblem tpr ON tpr.ticketFk = tt.ticketFk + LEFT JOIN tmp.ticketProblems tpr ON tpr.ticketFk = tt.ticketFk WHERE t.warehouseFk = vWarehouseFk AND dm.code IN ('AGENCY', 'DELIVERY', 'PICKUP'); diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index 00a8ee7278..f718893eb1 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -7,7 +7,7 @@ BEGIN * Calcula los problemas para un conjunto de tickets. * Agrupados por ticket * - * @table tmp.tmp.ticket(ticketFk) Identificadores de los tickets a calcular + * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular * @return tmp.ticketProblems */ DECLARE vWarehouseFk INT; @@ -163,7 +163,7 @@ BEGIN END LOOP; CLOSE vCursor; - CREATE OR REPLACE TEMPORARY TABLE tmp.ticketProblem ( + CREATE OR REPLACE TEMPORARY TABLE tmp.ticketProblems ( ticketFk INT(11), isFreezed BOOL DEFAULT FALSE, risk DECIMAL(10,1) DEFAULT 0, @@ -199,13 +199,18 @@ BEGIN LEFT(CONCAT('F: ',GROUP_CONCAT(CONCAT(i.id, ' ', i.longName) SEPARATOR ', ')), 250) itemShortage, LEFT(CONCAT('R: ',GROUP_CONCAT(CONCAT(i2.id, ' ', i2.longName) SEPARATOR ', ')), 250) itemDelay, LEFT(CONCAT('I: ',GROUP_CONCAT(CONCAT(i3.id, ' ', i3.longName) SEPARATOR ', ')), 250) itemLost, - LEFT(CONCAT('RE: ',GROUP_CONCAT(CONCAT(i4.id, ' ', i4.longName) SEPARATOR ', ')), 250) componentLack, + LEFT(CONCAT('C: ',GROUP_CONCAT(CONCAT(i4.id, ' ', i4.longName) SEPARATOR ', ')), 250) componentLack, LEFT(CONCAT('RE: ',GROUP_CONCAT(CONCAT(i5.id, ' ', i5.longName) SEPARATOR ', ')), 250) rounding FROM tmp.ticket tt JOIN ticket t ON t.id = tt.ticketFk JOIN client c ON c.id = t.clientFk LEFT JOIN sale s ON s.ticketFk = t.id LEFT JOIN tmp.saleProblems ts ON ts.saleFk = s.id + LEFT JOIN item i ON i.id = s.itemFk AND ts.hasItemShortage + LEFT JOIN item i2 ON i2.id = s.itemFk AND ts.hasItemDelay + LEFT JOIN item i3 ON i3.id = s.itemFk AND ts.hasItemLost + LEFT JOIN item i4 ON i4.id = s.itemFk AND FIND_IN_SET('hasComponentLack', s.problem) + LEFT JOIN item i5 ON i5.id = s.itemFk AND ts.hasRounding LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = util.VN_CURDATE() WHERE s.problem <> '' OR t.problem <> '' OR t.risk diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 9b22cb2d26..70c750ef57 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -376,7 +376,7 @@ module.exports = Self => { stmts.push(` DROP TEMPORARY TABLE tmp.filter, - tmp.ticketProblem, + tmp.ticketProblems, tmp.sale_getWarnings, tmp.ticket_warnings `); From 36297009e11dc13ba1e8ff3c6d31758937f56b5f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 17 Sep 2024 16:43:09 +0200 Subject: [PATCH 052/217] perf(salix): refs #6321 #7677 itemLackDetail --- modules/ticket/back/methods/ticket/itemLackDetail.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index ab6e904c4d..55ea167fc0 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -87,10 +87,10 @@ module.exports = Self => { [itemFk, 2]); // if (filter.where.alertLevel) { - // stmt.merge({ - // sql: `AND ts.alertLevel=?`, params: ['FREE']}); + stmt.merge({ + sql: `AND ${filter.where.alertLevel ? '' : 'NOT'} ts.alertLevel=?`, params: [0]}); // } - // stmt.merge(conn.makeWhere(filter)); + // stmt.merge(conn.makeWhere(filter.where)); const sql = ParameterizedSQL.join([stmt], ';'); const result = await conn.executeStmt(sql, myOptions); return result; From 712bfe73680a149bb6b292a18ef99a058db66616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 19 Sep 2024 20:15:38 +0200 Subject: [PATCH 053/217] fix: refs #7965 UnifyProblems --- .../vn/procedures/productionControl.sql | 61 +++--- .../vn/procedures/sale_getProblems.sql | 168 +++++++++++++++++ .../procedures/sale_getProblemsByTicket.sql | 19 +- .../vn/procedures/ticket_getProblems.sql | 177 ++---------------- 4 files changed, 226 insertions(+), 199 deletions(-) create mode 100644 db/routines/vn/procedures/sale_getProblems.sql diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql index b33224e80c..294ac3486f 100644 --- a/db/routines/vn/procedures/productionControl.sql +++ b/db/routines/vn/procedures/productionControl.sql @@ -36,6 +36,19 @@ proc: BEGIN CREATE OR REPLACE TEMPORARY TABLE tmp.productionBuffer (PRIMARY KEY(ticketFk), previaParking VARCHAR(255)) ENGINE = MEMORY + WITH saleProblemsDescription AS( + SELECT s.ticketFk, + LEFT(CONCAT('F: ', GROUP_CONCAT(CONCAT(i.id, ' ', i.longName) SEPARATOR ', ')), 250) itemShortage, + LEFT(CONCAT('R: ', GROUP_CONCAT(CONCAT(i2.id, ' ', i2.longName) SEPARATOR ', ')), 250) itemDelay, + LEFT(CONCAT('I: ', GROUP_CONCAT(CONCAT(i3.id, ' ', i3.longName) SEPARATOR ', ')), 250) itemLost + FROM tmp.saleProblems sp + JOIN vn.sale s ON s.id = sp.saleFk + LEFT JOIN vn.item i ON i.id = s.itemFk AND sp.hasItemShortage + LEFT JOIN vn.item i2 ON i2.id = s.itemFk AND sp.hasItemDelay + LEFT JOIN vn.item i3 ON i3.id = s.itemFk AND sp.hasItemLost + WHERE hasItemShortage OR hasItemDelay OR hasItemLost + GROUP BY s.ticketFk + ) SELECT tt.ticketFk, t.clientFk, t.warehouseFk, @@ -55,9 +68,9 @@ proc: BEGIN 0 `lines`, CAST( 0 AS DECIMAL(5,2)) m3, CAST( 0 AS DECIMAL(5,2)) preparationRate, - TRIM(CAST(CONCAT( IFNULL(tpr.itemShortage, ''), - IFNULL(tpr.itemDelay, ''), - IFNULL(tpr.itemLost, ''), + TRIM(CAST(CONCAT( IFNULL(sp.itemShortage, ''), + IFNULL(sp.itemDelay, ''), + IFNULL(sp.itemLost, ''), IF(tpr.isFreezed, ' CONGELADO',''), IF(tpr.hasHighRisk, ' RIESGO',''), IF(tpr.hasTicketRequest, ' COD 100',''), @@ -85,30 +98,31 @@ proc: BEGIN ag.isOwn, rm.bufferFk FROM tmp.productionTicket tt - JOIN ticket t ON tt.ticketFk = t.id - JOIN alertLevel al ON al.code = 'FREE' - LEFT JOIN ticketStateToday tst ON tst.ticketFk = t.id - LEFT JOIN `state` st ON st.id = tst.state - LEFT JOIN client c ON c.id = t.clientFk - LEFT JOIN worker wk ON wk.id = c.salesPersonFk - JOIN address a ON a.id = t.addressFk - LEFT JOIN province p ON p.id = a.provinceFk - JOIN agencyMode am ON am.id = t.agencyModeFk - JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk - JOIN agency ag ON ag.id = am.agencyFk - LEFT JOIN ticketState tls ON tls.ticketFk = tt.ticketFk - LEFT JOIN ticketLastUpdated tlu ON tlu.ticketFk = tt.ticketFk - LEFT JOIN worker w ON w.id = tls.userFk - LEFT JOIN routesMonitor rm ON rm.routeFk = t.routeFk - LEFT JOIN `zone` z ON z.id = t.zoneFk - LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk + JOIN vn.ticket t ON tt.ticketFk = t.id + JOIN vn.alertLevel al ON al.code = 'FREE' + LEFT JOIN vn.ticketStateToday tst ON tst.ticketFk = t.id + LEFT JOIN vn.`state` st ON st.id = tst.state + LEFT JOIN vn.client c ON c.id = t.clientFk + LEFT JOIN vn.worker wk ON wk.id = c.salesPersonFk + JOIN vn.address a ON a.id = t.addressFk + LEFT JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.agencyMode am ON am.id = t.agencyModeFk + JOIN vn.deliveryMethod dm ON dm.id = am.deliveryMethodFk + JOIN vn.agency ag ON ag.id = am.agencyFk + LEFT JOIN vn.ticketState tls ON tls.ticketFk = tt.ticketFk + LEFT JOIN vn.ticketLastUpdated tlu ON tlu.ticketFk = tt.ticketFk + LEFT JOIN vn.worker w ON w.id = tls.userFk + LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk + LEFT JOIN vn.`zone` z ON z.id = t.zoneFk + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND DATE(t.shipped) = zc.dated - LEFT JOIN ticketParking tp ON tp.ticketFk = t.id - LEFT JOIN parking pk ON pk.id = tp.parkingFk + LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id + LEFT JOIN vn.parking pk ON pk.id = tp.parkingFk LEFT JOIN tmp.ticketProblems tpr ON tpr.ticketFk = tt.ticketFk + LEFT JOIN saleProblemsDescription sp ON sp.ticketFk = tt.ticketFk WHERE t.warehouseFk = vWarehouseFk AND dm.code IN ('AGENCY', 'DELIVERY', 'PICKUP'); - + UPDATE tmp.productionBuffer pb JOIN ( SELECT pb.ticketFk, GROUP_CONCAT(p.code) previaParking @@ -260,6 +274,7 @@ proc: BEGIN DROP TEMPORARY TABLE tmp.productionTicket, tmp.ticketProblems, + tmp.saleProblems, tmp.ticketWithPrevia, tItemShelvingStock, tItemPackingType; diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql new file mode 100644 index 0000000000..a8388034f9 --- /dev/null +++ b/db/routines/vn/procedures/sale_getProblems.sql @@ -0,0 +1,168 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getProblems`( + vIsTodayRelative TINYINT(1) +) +BEGIN +/** + * Calcula los problemas para un conjunto de sale + * + * @table tmp.sale(saleFk) Identificadores de los sale a calcular + * @return tmp.saleProblems + */ + DECLARE vWarehouseFk INT; + DECLARE vDate DATE; + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + DECLARE vDone BOOL; + DECLARE vCursor CURSOR FOR + SELECT t.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(t.shipped)) dated + FROM tmp.sale ts + JOIN sale s ON s.id = ts.saleFk + JOIN ticket t ON t.id = s.ticketFk + WHERE t.shipped BETWEEN util.VN_CURDATE() + AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY) + GROUP BY warehouseFk, dated; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + CREATE OR REPLACE TEMPORARY TABLE tmp.saleProblems( + saleFk INT(11), + hasItemShortage BOOL DEFAULT FALSE, + hasItemLost BOOL DEFAULT FALSE, + hasItemDelay BOOL DEFAULT FALSE, + hasRounding BOOL DEFAULT FALSE, + PRIMARY KEY (saleFk) + ) ENGINE = MEMORY; + + CREATE OR REPLACE TEMPORARY TABLE tItemShelving + (INDEX (itemFk, warehouseFk)) + ENGINE = MEMORY + SELECT ish.itemFk itemFk, + SUM(ish.visible) visible, + s.warehouseFk warehouseFk + FROM itemShelving ish + JOIN shelving sh ON sh.code = ish.shelvingFk + JOIN parking p ON p.id = sh.parkingFk + JOIN sector s ON s.id = p.sectorFk + GROUP BY ish.itemFk, s.warehouseFk; + + -- Disponible, faltas, inventario y retrasos + OPEN vCursor; + l: LOOP + SET vDone = FALSE; + FETCH vCursor INTO vWarehouseFk, vDate; + + IF vDone THEN + LEAVE l; + END IF; + + -- Disponible: no va a haber suficiente producto para preparar todos los pedidos + CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, vDate); + + -- Faltas: visible, disponible y ubicado son menores que la cantidad vendida + CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); + + INSERT INTO tmp.saleProblems(saleFk, hasItemShortage) + SELECT s.id, TRUE + FROM tmp.sale ts + JOIN sale s ON s.id = ts.saleFk + JOIN ticket t ON t.id = s.ticketFk + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = i.id + AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id + AND av.calc_id = vAvailableCache + LEFT JOIN tItemShelving tis ON tis.itemFk = i.id + AND tis.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible, 0) < s.quantity + AND IFNULL(av.available, 0) < s.quantity + AND IFNULL(tis.visible, 0) < s.quantity + AND NOT s.isPicked + AND NOT s.reserved + AND ic.merchandise + AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY s.id; + + -- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida + INSERT INTO tmp.saleProblems(saleFk, hasItemLost) + SELECT s.id, TRUE + FROM tmp.sale ts + JOIN sale s ON s.id = ts.saleFk + JOIN ticket t ON t.id = s.ticketFk + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk + AND v.calc_id = vVisibleCache + LEFT JOIN tItemShelving tis ON tis.itemFk = i.id + AND tis.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible, 0) >= s.quantity + AND IFNULL(tis.visible, 0) < s.quantity + AND s.quantity > 0 + AND NOT s.isPicked + AND NOT s.reserved + AND ic.merchandise + AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasItemLost = TRUE; + + -- Retraso: Disponible suficiente, pero no visible ni ubicado + INSERT INTO tmp.saleProblems(saleFk, hasItemDelay) + SELECT s.id, TRUE + FROM tmp.sale ts + JOIN sale s ON s.id = ts.saleFk + JOIN ticket t ON t.id = s.ticketFk + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk + AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id + AND av.calc_id = vAvailableCache + LEFT JOIN tItemShelving tis ON tis.itemFk = i.id + AND tis.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible, 0) < s.quantity + AND IFNULL(av.available, 0) >= s.quantity + AND IFNULL(tis.visible, 0) < s.quantity + AND s.quantity > 0 + AND NOT s.isPicked + AND NOT s.reserved + AND ic.merchandise + AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasItemDelay = TRUE; + + -- Redondeo: cantidad incorrecta con respecto al grouping + CALL buy_getUltimate(NULL, vWarehouseFk, vDate); + + INSERT INTO tmp.saleProblems(saleFk, hasRounding) + SELECT s.id, TRUE + FROM tmp.sale ts + JOIN sale s ON s.id = ts.saleFk + JOIN ticket t ON t.id = s.ticketFk + AND t.warehouseFk = vWarehouseFk + JOIN item i ON i.id = s.itemFk + JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk + JOIN buy b ON b.id = bu.buyFk + WHERE MOD(s.quantity, b.`grouping`) + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasRounding = TRUE; + + DROP TEMPORARY TABLE tmp.buyUltimate; + END LOOP; + CLOSE vCursor; + + DROP TEMPORARY TABLE tItemShelving, tmp.sale; +END$$ +DELIMITER ; diff --git a/db/routines/vn/procedures/sale_getProblemsByTicket.sql b/db/routines/vn/procedures/sale_getProblemsByTicket.sql index af69e84300..708938cba0 100644 --- a/db/routines/vn/procedures/sale_getProblemsByTicket.sql +++ b/db/routines/vn/procedures/sale_getProblemsByTicket.sql @@ -5,22 +5,19 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`sale_getProblemsByTic ) BEGIN /** - * Calcula los problemas de cada venta - * para un conjunto de tickets. + * Calcula los problemas de cada venta para un tickets. * * @return Problems result */ - CREATE OR REPLACE TEMPORARY TABLE tmp.ticket - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT vTicketFk ticketFk; + CREATE OR REPLACE TEMPORARY TABLE tmp.sale + (INDEX (saleFk)) + ENGINE = MEMORY + SELECT id saleFk FROM sale WHERE ticketFk = vTicketFk; - CALL ticket_getProblems(vIsTodayRelative); + CALL sale_getProblems(vIsTodayRelative); - SELECT * FROM tmp.saleProblems; + SELECT * FROM tmp.saleProblems; - DROP TEMPORARY TABLE - tmp.ticket, - tmp.ticketProblems; + DROP TEMPORARY TABLE tmp.saleProblems; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index f718893eb1..c5a1532ff7 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -5,163 +5,23 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_getProblems`( BEGIN /** * Calcula los problemas para un conjunto de tickets. - * Agrupados por ticket * * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular - * @return tmp.ticketProblems + * @return tmp.ticketProblems, tmp.saleProblems */ - DECLARE vWarehouseFk INT; - DECLARE vDate DATE; - DECLARE vAvailableCache INT; - DECLARE vVisibleCache INT; - DECLARE vDone BOOL; - DECLARE vCursor CURSOR FOR - SELECT DISTINCT t.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), DATE(t.shipped)) - FROM tmp.ticket t - JOIN ticket t ON t.id = t.ticketFk - WHERE t.shipped BETWEEN util.VN_CURDATE() - AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY); - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - CREATE OR REPLACE TEMPORARY TABLE tmp.saleProblems( - ticketFk INT(11), + CREATE OR REPLACE TEMPORARY TABLE tmp.sale ( saleFk INT(11), - hasItemShortage BOOL DEFAULT FALSE, - hasItemLost BOOL DEFAULT FALSE, - hasItemDelay BOOL DEFAULT FALSE, - hasRounding BOOL DEFAULT FALSE, - PRIMARY KEY (ticketFk, saleFk) - ) ENGINE = MEMORY; - - CREATE OR REPLACE TEMPORARY TABLE tItemShelving - (INDEX (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT ish.itemFk itemFk, - SUM(ish.visible) visible, - s.warehouseFk warehouseFk - FROM itemShelving ish - JOIN shelving sh ON sh.code = ish.shelvingFk - JOIN parking p ON p.id = sh.parkingFk - JOIN sector s ON s.id = p.sectorFk - GROUP BY ish.itemFk, s.warehouseFk; - - -- Disponible, faltas, inventario y retrasos - OPEN vCursor; - l: LOOP - SET vDone = FALSE; - FETCH vCursor INTO vWarehouseFk, vDate; - - IF vDone THEN - LEAVE l; - END IF; - - -- Disponible: no va a haber suficiente producto para preparar todos los pedidos - CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, vDate); - - -- Faltas: visible, disponible y ubicado son menores que la cantidad vendida - CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); - - INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasItemShortage) - SELECT tt.ticketFk, s.id, TRUE - FROM tmp.ticket tt - JOIN ticket t ON t.id = tt.ticketFk - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN cache.visible v ON v.item_id = i.id - AND v.calc_id = vVisibleCache - LEFT JOIN cache.available av ON av.item_id = i.id - AND av.calc_id = vAvailableCache - LEFT JOIN tItemShelving tis ON tis.itemFk = i.id - AND tis.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) < s.quantity - AND IFNULL(av.available, 0) < s.quantity - AND IFNULL(tis.visible, 0) < s.quantity - AND NOT s.isPicked - AND NOT s.reserved - AND ic.merchandise - AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) - AND NOT i.generic - AND util.VN_CURDATE() = vDate - AND t.warehouseFk = vWarehouseFk + PRIMARY KEY (saleFk) + ) ENGINE = MEMORY + SELECT DISTINCT s.id saleFk + FROM tmp.ticket tt + JOIN ticket t ON t.id = tt.ticketFk + JOIN sale s ON s.ticketFk = t.id + WHERE t.shipped BETWEEN util.VN_CURDATE() + AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY) GROUP BY s.id; - -- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida - INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasItemLost) - SELECT tt.ticketFk, s.id, TRUE - FROM tmp.ticket tt - JOIN ticket t ON t.id = tt.ticketFk - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN cache.visible v ON v.item_id = s.itemFk - AND v.calc_id = vVisibleCache - LEFT JOIN tItemShelving tis ON tis.itemFk = i.id - AND tis.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) >= s.quantity - AND IFNULL(tis.visible, 0) < s.quantity - AND s.quantity > 0 - AND NOT s.isPicked - AND NOT s.reserved - AND ic.merchandise - AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) - AND NOT i.generic - AND util.VN_CURDATE() = vDate - AND t.warehouseFk = vWarehouseFk - GROUP BY s.id - ON DUPLICATE KEY UPDATE hasItemLost = TRUE; - - -- Retraso: Disponible suficiente, pero no visible ni ubicado - INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasItemDelay) - SELECT tt.ticketFk, s.id, TRUE - FROM tmp.ticket tt - JOIN ticket t ON t.id = tt.ticketFk - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN cache.visible v ON v.item_id = s.itemFk - AND v.calc_id = vVisibleCache - LEFT JOIN cache.available av ON av.item_id = i.id - AND av.calc_id = vAvailableCache - LEFT JOIN tItemShelving tis ON tis.itemFk = i.id - AND tis.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) < s.quantity - AND IFNULL(av.available, 0) >= s.quantity - AND IFNULL(tis.visible, 0) < s.quantity - AND s.quantity > 0 - AND NOT s.isPicked - AND NOT s.reserved - AND ic.merchandise - AND IF(vIsTodayRelative, TRUE, DATE(t.shipped) = vDate) - AND NOT i.generic - AND util.VN_CURDATE() = vDate - AND t.warehouseFk = vWarehouseFk - GROUP BY s.id - ON DUPLICATE KEY UPDATE hasItemDelay = TRUE; - - -- Redondeo: cantidad incorrecta con respecto al grouping - CALL buy_getUltimate(NULL, vWarehouseFk, vDate); - - INSERT INTO tmp.saleProblems(ticketFk, saleFk, hasRounding) - SELECT tt.ticketFk, s.id, TRUE - FROM tmp.ticket tt - JOIN ticket t ON t.id = tt.ticketFk - AND t.warehouseFk = vWarehouseFk - JOIN sale s ON s.ticketFk = tt.ticketFk - JOIN item i ON i.id = s.itemFk - JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - JOIN buy b ON b.id = bu.buyFk - WHERE MOD(s.quantity, b.`grouping`) - GROUP BY s.id - ON DUPLICATE KEY UPDATE hasRounding = TRUE; - - DROP TEMPORARY TABLE tmp.buyUltimate; - END LOOP; - CLOSE vCursor; + CALL sale_getProblems(vIsTodayRelative); CREATE OR REPLACE TEMPORARY TABLE tmp.ticketProblems ( ticketFk INT(11), @@ -195,27 +55,14 @@ BEGIN SUM(IFNULL(ts.hasItemDelay,0)) hasItemDelay, SUM(IFNULL(ts.hasItemLost,0)) hasItemLost, IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack, - SUM(IFNULL(ts.hasRounding,0)) hasRounding, - LEFT(CONCAT('F: ',GROUP_CONCAT(CONCAT(i.id, ' ', i.longName) SEPARATOR ', ')), 250) itemShortage, - LEFT(CONCAT('R: ',GROUP_CONCAT(CONCAT(i2.id, ' ', i2.longName) SEPARATOR ', ')), 250) itemDelay, - LEFT(CONCAT('I: ',GROUP_CONCAT(CONCAT(i3.id, ' ', i3.longName) SEPARATOR ', ')), 250) itemLost, - LEFT(CONCAT('C: ',GROUP_CONCAT(CONCAT(i4.id, ' ', i4.longName) SEPARATOR ', ')), 250) componentLack, - LEFT(CONCAT('RE: ',GROUP_CONCAT(CONCAT(i5.id, ' ', i5.longName) SEPARATOR ', ')), 250) rounding + SUM(IFNULL(ts.hasRounding,0)) hasRounding FROM tmp.ticket tt JOIN ticket t ON t.id = tt.ticketFk JOIN client c ON c.id = t.clientFk LEFT JOIN sale s ON s.ticketFk = t.id LEFT JOIN tmp.saleProblems ts ON ts.saleFk = s.id - LEFT JOIN item i ON i.id = s.itemFk AND ts.hasItemShortage - LEFT JOIN item i2 ON i2.id = s.itemFk AND ts.hasItemDelay - LEFT JOIN item i3 ON i3.id = s.itemFk AND ts.hasItemLost - LEFT JOIN item i4 ON i4.id = s.itemFk AND FIND_IN_SET('hasComponentLack', s.problem) - LEFT JOIN item i5 ON i5.id = s.itemFk AND ts.hasRounding LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = util.VN_CURDATE() - WHERE s.problem <> '' OR t.problem <> '' OR t.risk GROUP BY t.id; - - DROP TEMPORARY TABLE tItemShelving; END$$ DELIMITER ; From 2cb57225ffbbc0824242a22d3b68142371aa765e Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 21 Sep 2024 00:26:55 +0200 Subject: [PATCH 054/217] perf(salix): refs #6321 #7677 itemLackDetail --- db/dump/fixtures.before.sql | 3 --- modules/item/back/methods/item/getSimilar.js | 10 ++++++++-- .../monitor/back/methods/sales-monitor/salesFilter.js | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 266dfbea50..3c80e353ed 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -3969,7 +3969,6 @@ INSERT INTO vn.accountDetailType (id, description, code) (5, 'Referencia Nominas', 'payRef'), (6, 'ABA', 'aba'); -<<<<<<< HEAD INSERT INTO vn.accountDetailType (id, description, code) VALUES @@ -3980,8 +3979,6 @@ VALUES (5, 'Referencia Nominas', 'payRef'), (6, 'ABA', 'aba'); -======= ->>>>>>> dev INSERT IGNORE INTO ormConfig SET id =1, selectLimit = 1000; diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 6fbda4018a..37f6faa908 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -30,8 +30,14 @@ module.exports = Self => { new Date().toLocaleDateString('es-ES', {year: 'numeric', month: '2-digit', day: '2-digit'}); - const query = [where.itemFk, where.warehouseFk, where.date ?? today, where.showType ?? true]; - const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?)', query, myOptions); + const query = [ + where.itemFk, + where.warehouseFk, + where.date ?? today, + where.showType ?? true, + where.scopeDays ?? 2 + ]; + const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?, ?)', query, myOptions); return [ { diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 927f49999f..54872e53af 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -385,6 +385,6 @@ module.exports = Self => { const sql = ParameterizedSQL.join(stmts, ';'); const result = await conn.executeStmt(sql, myOptions); - return result[ticketsIndex]; + return Array(19).fill().flatMap(() => result[ticketsIndex]); }; }; From c876022fe52cf6714918abc57ced99a057ecb285 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 24 Sep 2024 13:54:32 +0200 Subject: [PATCH 055/217] feat(salix): refs #6321 #6321 TODO --- db/dump/fixtures.before.sql | 12 +----------- db/versions/10936-wheatAnthurium/00-updateACL.sql | 3 ++- loopback/locale/es.json | 3 ++- modules/ticket/back/methods/sale/replaceItem.js | 8 ++++---- modules/ticket/back/models/sale.js | 2 +- 5 files changed, 10 insertions(+), 18 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 3c80e353ed..d4f57a634c 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -3969,16 +3969,6 @@ INSERT INTO vn.accountDetailType (id, description, code) (5, 'Referencia Nominas', 'payRef'), (6, 'ABA', 'aba'); -INSERT INTO vn.accountDetailType -(id, description, code) -VALUES - (1, 'IBAN', 'iban'), - (2, 'SWIFT', 'swift'), - (3, 'Referencia Remesas', 'remRef'), - (4, 'Referencia Transferencias', 'trnRef'), - (5, 'Referencia Nominas', 'payRef'), - (6, 'ABA', 'aba'); - INSERT IGNORE INTO ormConfig SET id =1, selectLimit = 1000; @@ -3990,4 +3980,4 @@ INSERT INTO `vn`.`ticket` (id, clientFk,warehouseFk,shipped,nickname,refFk,addre (1000000, 1,1,'2001-01-01 00:00:00.000','employee',NULL,131,NULL,NULL,0,0,0,0,NULL,0,'2024-07-19 23:32:48.000',1,NULL,NULL,NULL,1,442,1,'2001-01-01',0,0,1,1.00,0.00,0.00,NULL,NULL,NULL,NULL,9,'',NULL); INSERT INTO `vn`.`sale` (id, itemFk,ticketFk,concept,quantity,originalQuantity,price,discount,priceFixed,reserved,isPicked,isPriceFixed,created,isAdded,total,editorFk,problem) VALUES - (43, 88,1000000,'Chest medical box 2',155.00,155.0,0.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,0.00,100,''); + (43, 88,1000000,'Chest medical box 2',155.00,155.0,10.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,1550.00,100,''); diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql index 58c121e211..2652dff9c8 100644 --- a/db/versions/10936-wheatAnthurium/00-updateACL.sql +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -4,4 +4,5 @@ INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'), ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee'), ('Ticket','split','WRITE','ALLOW','ROLE','employee'), - ('Ticket','negativeOrigin','READ','ALLOW','ROLE','employee'); + ('Ticket','negativeOrigin','READ','ALLOW','ROLE','employee'), + ('Sale','replaceItem','READ','ALLOW','ROLE','employee'); diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 49c44a4d83..1fb7ee17c9 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -378,5 +378,6 @@ "The maximum height of the wagon is 200cm": "La altura máxima es 200cm", "The entry does not have stickers": "La entrada no tiene etiquetas", "Too many records": "Demasiados registros", - "This buyer has already made a reservation for this date": "Este comprador ya ha hecho una reserva para esta fecha" + "This buyer has already made a reservation for this date": "Este comprador ya ha hecho una reserva para esta fecha", + "price retrieval failed": "price retrieval failed" } \ No newline at end of file diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index c153ee5d2a..83f97f326e 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -1,4 +1,3 @@ -const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('replaceItem', { @@ -10,7 +9,7 @@ module.exports = Self => { required: true, }, { - arg: 'newItemFk', + arg: 'substitutionFk', type: 'number', required: true }, @@ -30,9 +29,10 @@ module.exports = Self => { } }); - Self.replaceItem = async(ctx, saleFk, itemFk, quantity, options) => { + Self.replaceItem = async(ctx, saleFk, substitutionFk, quantity, options) => { const myOptions = {userId: ctx.req.accessToken.userId}; let tx; + const {_saleFk, _substitutionFk, _quantity} = ctx.args; if (typeof options == 'object') Object.assign(myOptions, options); @@ -43,7 +43,7 @@ module.exports = Self => { } try { - const result = await Self.rawSql('CALL sale_replaceItem(?,?,?)', [saleFk, itemFk, quantity], myOptions); + const result = await Self.rawSql('CALL sale_replaceItem(?,?,?)', [saleFk, substitutionFk, quantity], myOptions); return result; } catch (e) { if (tx) await tx.rollback(); diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 0e135c75b9..137f89ace6 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -13,7 +13,7 @@ module.exports = Self => { require('../methods/sale/usesMana')(Self); require('../methods/sale/clone')(Self); require('../methods/sale/getFromSectorCollection')(Self); - require('../methods/sale/replaceItem')(Self); + // require('../methods/sale/replaceItem')(Self); Self.validatesPresenceOf('concept', { message: `Concept cannot be blank` From c6490f6740e5f70836b7994d80509c5f0384e70b Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 24 Sep 2024 22:12:11 +0200 Subject: [PATCH 056/217] feat(salix): refs #6321 #6321 fixtures.before --- db/dump/fixtures.before.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index d4f57a634c..4d7e11419f 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -3980,4 +3980,4 @@ INSERT INTO `vn`.`ticket` (id, clientFk,warehouseFk,shipped,nickname,refFk,addre (1000000, 1,1,'2001-01-01 00:00:00.000','employee',NULL,131,NULL,NULL,0,0,0,0,NULL,0,'2024-07-19 23:32:48.000',1,NULL,NULL,NULL,1,442,1,'2001-01-01',0,0,1,1.00,0.00,0.00,NULL,NULL,NULL,NULL,9,'',NULL); INSERT INTO `vn`.`sale` (id, itemFk,ticketFk,concept,quantity,originalQuantity,price,discount,priceFixed,reserved,isPicked,isPriceFixed,created,isAdded,total,editorFk,problem) VALUES - (43, 88,1000000,'Chest medical box 2',155.00,155.0,10.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,1550.00,100,''); + (43, 88,1000000,'Chest medical box 2',15.00,155.0,10.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,1550.00,100,''); From 69cafd5a0457f7a6e5b50aa3b57e45132b49fa2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Mon, 30 Sep 2024 14:30:15 +0200 Subject: [PATCH 057/217] fix: refs #7965 UnifyProblems --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 4 ++-- modules/ticket/back/methods/ticket/filter.js | 2 +- modules/ticket/back/methods/ticket/getTicketsFuture.js | 5 +---- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 70c750ef57..4f81f59b9e 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -289,7 +289,7 @@ module.exports = Self => { {'tp.hasTicketRequest': true}, {'tp.hasComponentLack': true}, {'tp.isTaxDataChecked': false}, - {'tp.itemShortage': {neq: null}}, + {'tp.hasItemShortage': true}, {'tp.isTooLittle': true} ]}; } else if (hasProblems === false) { @@ -299,7 +299,7 @@ module.exports = Self => { {'tp.hasTicketRequest': false}, {'tp.hasComponentLack': false}, {'tp.isTaxDataChecked': true}, - {'tp.itemShortage': null}, + {'tp.hasItemShortage': false}, {'tp.isTooLittle': false} ]}; } diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index 9ac239be77..77da770a24 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -345,7 +345,7 @@ module.exports = Self => { {'tp.isFreezed': hasProblem}, {'tp.hasRisk': hasProblem}, {'tp.hasTicketRequest': hasProblem}, - {'tp.itemShortage': range}, + {'tp.hasItemShortage': range}, {'tp.hasRounding': hasProblem} ]}; diff --git a/modules/ticket/back/methods/ticket/getTicketsFuture.js b/modules/ticket/back/methods/ticket/getTicketsFuture.js index 1c31da057c..af3acff13e 100644 --- a/modules/ticket/back/methods/ticket/getTicketsFuture.js +++ b/modules/ticket/back/methods/ticket/getTicketsFuture.js @@ -175,20 +175,17 @@ module.exports = Self => { let condition; let hasProblem; - let range; let hasWhere; switch (args.problems) { case true: condition = `or`; hasProblem = true; - range = {neq: null}; hasWhere = true; break; case false: condition = `and`; hasProblem = null; - range = null; hasWhere = true; break; } @@ -198,7 +195,7 @@ module.exports = Self => { {'tp.isFreezed': hasProblem}, {'tp.hasRisk': hasProblem}, {'tp.hasTicketRequest': hasProblem}, - {'tp.itemShortage': range}, + {'tp.hasItemShortage': hasProblem}, {'tp.hasComponentLack': hasProblem}, {'tp.isTooLittle': hasProblem}, {'tp.hasRounding': hasProblem} From bb1695eac69b8449280bdc30a7108c2174c6dfd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Mon, 30 Sep 2024 16:39:55 +0200 Subject: [PATCH 058/217] fix: refs #7965 UnifyProblems --- .../vn/procedures/ticket_getProblems.sql | 18 +++++++++++++++++- modules/ticket/back/methods/ticket/filter.js | 5 +---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index c5a1532ff7..e58d49a5a3 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -55,7 +55,8 @@ BEGIN SUM(IFNULL(ts.hasItemDelay,0)) hasItemDelay, SUM(IFNULL(ts.hasItemLost,0)) hasItemLost, IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack, - SUM(IFNULL(ts.hasRounding,0)) hasRounding + SUM(IFNULL(ts.hasRounding,0)) hasRounding, + 0 totalProblems FROM tmp.ticket tt JOIN ticket t ON t.id = tt.ticketFk JOIN client c ON c.id = t.clientFk @@ -64,5 +65,20 @@ BEGIN LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = util.VN_CURDATE() GROUP BY t.id; + + UPDATE tmp.ticketProblems + SET totalProblems = ( + (isFreezed) + + (hasHighRisk) + + (hasTicketRequest) + + (!isTaxDataChecked) + + (hasComponentLack) + + (hasItemDelay IS NOT NULL) + + (isTooLittle) + + (hasItemLost IS NOT NULL) + + (hasRounding IS NOT NULL) + + (hasItemShortage IS NOT NULL) + + (isVip) + ); END$$ DELIMITER ; diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index eccec735ff..2571213070 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -325,20 +325,17 @@ module.exports = Self => { let condition; let hasProblem; - let range; let hasWhere; switch (args.problems) { case true: condition = `or`; hasProblem = true; - range = {neq: null}; hasWhere = true; break; case false: condition = `and`; hasProblem = null; - range = null; hasWhere = true; break; } @@ -347,7 +344,7 @@ module.exports = Self => { {'tp.isFreezed': hasProblem}, {'tp.hasRisk': hasProblem}, {'tp.hasTicketRequest': hasProblem}, - {'tp.hasItemShortage': range}, + {'tp.hasItemShortage': hasProblem}, {'tp.hasRounding': hasProblem} ]}; From 6a5cf1a57ff787e94032391c315b44f88c5aaa9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Tue, 1 Oct 2024 15:46:51 +0200 Subject: [PATCH 059/217] fix: refs #7965 UnifyProblems --- db/dump/fixtures.before.sql | 34 +++--- .../vn/procedures/ticket_getProblems.sql | 101 +++++++++++------- .../sales-monitor/specs/salesFilter.spec.js | 2 +- .../back/methods/ticket/specs/filter.spec.js | 6 +- 4 files changed, 84 insertions(+), 59 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index ffbc6a864d..e8b89afa93 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1072,12 +1072,12 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), (6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 'hasComponentLack'), (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE(), NULL), - (8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL), + (8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost,hasRounding'), (9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE(), NULL), (11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), - (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), NULL), - (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL), + (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost'), + (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost'), (14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), (15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), @@ -1088,25 +1088,25 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), (22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), (23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL), + (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack'), + (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), + (26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), + (27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack,hasItemLost'), + (28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), + (29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack'), + (30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasItemShortage,hasComponentLack'), + (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE(), 'hasRounding'), (32, 1, 24, 'Ranged weapon longbow 200cm', -1, 8.07, 0, 0, 0, util.VN_CURDATE(), NULL), (33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL), - (34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), + (35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), (37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), NULL), - (36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), (38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'), (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'); + (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), + (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'), + (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'); INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) VALUES diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index e58d49a5a3..3855c3a1df 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -40,45 +40,70 @@ BEGIN hasRounding BOOL DEFAULT FALSE, PRIMARY KEY (ticketFk) ) ENGINE = MEMORY - SELECT tt.ticketFk, - IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed, - t.risk, - IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk, - IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk, - IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest, - IF(FIND_IN_SET('isTaxDataChecked', t.problem), FALSE, TRUE) isTaxDataChecked, - IF(FIND_IN_SET('isTooLittle', t.problem) - AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE, - TRUE, FALSE) isTooLittle, - IF(c.businessTypeFk = 'VIP', TRUE, FALSE) isVip, - SUM(IFNULL(ts.hasItemShortage,0)) hasItemShortage, - SUM(IFNULL(ts.hasItemDelay,0)) hasItemDelay, - SUM(IFNULL(ts.hasItemLost,0)) hasItemLost, - IF(FIND_IN_SET('hasComponentLack', s.problem), TRUE, FALSE) hasComponentLack, - SUM(IFNULL(ts.hasRounding,0)) hasRounding, - 0 totalProblems - FROM tmp.ticket tt - JOIN ticket t ON t.id = tt.ticketFk - JOIN client c ON c.id = t.clientFk - LEFT JOIN sale s ON s.ticketFk = t.id - LEFT JOIN tmp.saleProblems ts ON ts.saleFk = s.id - LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk - AND zc.dated = util.VN_CURDATE() - GROUP BY t.id; + WITH hasItemShortage AS( + SELECT s.ticketFk + FROM tmp.saleProblems sp + JOIN vn.sale s ON s.id = sp.saleFk + WHERE sp.hasItemShortage + GROUP BY s.ticketFk + ),hasItemLost AS( + SELECT s.ticketFk + FROM tmp.saleProblems sp + JOIN vn.sale s ON s.id = sp.saleFk + WHERE sp.hasItemLost + GROUP BY s.ticketFk + ),hasRounding AS( + SELECT s.ticketFk + FROM tmp.saleProblems sp + JOIN vn.sale s ON s.id = sp.saleFk + WHERE sp.hasRounding + GROUP BY s.ticketFk + ), hasItemDelay AS( + SELECT s.ticketFk + FROM tmp.saleProblems sp + JOIN vn.sale s ON s.id = sp.saleFk + WHERE sp.hasItemDelay + GROUP BY s.ticketFk + ), hasComponentLack AS( + SELECT s.ticketFk + FROM tmp.saleProblems sp + JOIN vn.sale s ON s.id = sp.saleFk + WHERE FIND_IN_SET('hasComponentLack', s.problem) + GROUP BY s.ticketFk + )SELECT tt.ticketFk, + IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed, + t.risk, + IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk, + IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk, + IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest, + IF(FIND_IN_SET('isTaxDataChecked', t.problem), TRUE, FALSE) isTaxDataChecked, + IF(FIND_IN_SET('isTooLittle', t.problem) + AND util.VN_NOW() < (util.VN_CURDATE() + + INTERVAL HOUR(zc.`hour`) HOUR) + + INTERVAL MINUTE(zc.`hour`) MINUTE, + TRUE, FALSE) isTooLittle, + IF(c.businessTypeFk = 'VIP', TRUE, FALSE) isVip, + IF(his.ticketFk IS NULL, FALSE, TRUE) hasItemShortage, + IF(hid.ticketFk IS NULL, FALSE, TRUE) hasItemDelay, + IF(hil.ticketFk IS NULL, FALSE, TRUE) hasItemLost, + IF(hcl.ticketFk IS NULL, FALSE, TRUE) hasComponentLack, + IF(hr.ticketFk IS NULL, FALSE, TRUE) hasRounding, + 0 totalProblems + FROM tmp.ticket tt + JOIN vn.ticket t ON t.id = tt.ticketFk + JOIN vn.client c ON c.id = t.clientFk + LEFT JOIN hasItemShortage his ON his.ticketFk = t.id + LEFT JOIN hasItemLost hil ON hil.ticketFk = t.id + LEFT JOIN hasRounding hr ON hr.ticketFk = t.id + LEFT JOIN hasItemDelay hid ON hid.ticketFk = t.id + LEFT JOIN hasComponentLack hcl ON hcl.ticketFk = t.id + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk + AND zc.dated = util.VN_CURDATE() + GROUP BY t.id; UPDATE tmp.ticketProblems - SET totalProblems = ( - (isFreezed) + - (hasHighRisk) + - (hasTicketRequest) + - (!isTaxDataChecked) + - (hasComponentLack) + - (hasItemDelay IS NOT NULL) + - (isTooLittle) + - (hasItemLost IS NOT NULL) + - (hasRounding IS NOT NULL) + - (hasItemShortage IS NOT NULL) + - (isVip) - ); + SET totalProblems = isFreezed + hasHighRisk + hasTicketRequest + + isTaxDataChecked + hasComponentLack + hasItemDelay + + isTooLittle + hasItemLost + hasRounding + hasItemShortage + isVip; END$$ DELIMITER ; diff --git a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js index 738af52199..908c446a68 100644 --- a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js +++ b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js @@ -48,7 +48,7 @@ describe('SalesMonitor salesFilter()', () => { } }); - it('should now return the tickets matching the problems on false', async() => { + fit('should now return the tickets matching the problems on false', async() => { const tx = await models.SalesMonitor.beginTransaction({}); try { diff --git a/modules/ticket/back/methods/ticket/specs/filter.spec.js b/modules/ticket/back/methods/ticket/specs/filter.spec.js index d0edb24e39..44bfbb7e3f 100644 --- a/modules/ticket/back/methods/ticket/specs/filter.spec.js +++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js @@ -45,8 +45,8 @@ describe('ticket filter()', () => { ticket.isFreezed === true || ticket.hasRisk === true || ticket.hasTicketRequest === true || - (typeof ticket.hasRounding === 'string' && ticket.hasRounding.trim().length > 0) || - (typeof ticket.itemShortage === 'string' && ticket.itemShortage.trim().length > 0) + ticket.hasRounding === true || + ticket.hasItemShortage === true ); expect(hasProblemTicket).toBe(true); @@ -83,7 +83,7 @@ describe('ticket filter()', () => { expect(ticket.isFreezed).toEqual(null); expect(ticket.hasRisk).toEqual(null); expect(ticket.hasTicketRequest).toEqual(null); - expect(ticket.itemShortage).toEqual(null); + expect(ticket.hasItemShortage).toEqual(null); expect(ticket.hasRounding).toEqual(null); }); From 99c70a533a3fed301ce3427d4b7e61558e0ee2fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 2 Oct 2024 14:25:27 +0200 Subject: [PATCH 060/217] fix: test --- db/dump/fixtures.before.sql | 2 +- .../monitor/back/methods/sales-monitor/salesFilter.js | 4 ++-- .../methods/sales-monitor/specs/salesFilter.spec.js | 4 ++-- .../ticket/back/methods/ticket/specs/filter.spec.js | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 63d395e861..550a790158 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1076,7 +1076,7 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE(), NULL), (11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), - (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost'), + (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), NULL), (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), 'hasItemLost'), (14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), (15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 4f81f59b9e..36e2c40aa5 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -288,7 +288,7 @@ module.exports = Self => { {'tp.hasRisk': true}, {'tp.hasTicketRequest': true}, {'tp.hasComponentLack': true}, - {'tp.isTaxDataChecked': false}, + {'tp.isTaxDataChecked': true}, {'tp.hasItemShortage': true}, {'tp.isTooLittle': true} ]}; @@ -298,7 +298,7 @@ module.exports = Self => { {'tp.hasRisk': false}, {'tp.hasTicketRequest': false}, {'tp.hasComponentLack': false}, - {'tp.isTaxDataChecked': true}, + {'tp.isTaxDataChecked': false}, {'tp.hasItemShortage': false}, {'tp.isTooLittle': false} ]}; diff --git a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js index 908c446a68..1b4616de73 100644 --- a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js +++ b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js @@ -48,7 +48,7 @@ describe('SalesMonitor salesFilter()', () => { } }); - fit('should now return the tickets matching the problems on false', async() => { + it('should now return the tickets matching the problems on false', async() => { const tx = await models.SalesMonitor.beginTransaction({}); try { @@ -68,7 +68,7 @@ describe('SalesMonitor salesFilter()', () => { const filter = {}; const result = await models.SalesMonitor.salesFilter(ctx, filter, options); - expect(result.length).toEqual(4); + expect(result.length).toEqual(5); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/ticket/specs/filter.spec.js b/modules/ticket/back/methods/ticket/specs/filter.spec.js index 44bfbb7e3f..d06d02f23a 100644 --- a/modules/ticket/back/methods/ticket/specs/filter.spec.js +++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js @@ -42,11 +42,11 @@ describe('ticket filter()', () => { const result = await models.Ticket.filter(ctx, filter, options); const hasProblemTicket = result.some(ticket => - ticket.isFreezed === true || - ticket.hasRisk === true || - ticket.hasTicketRequest === true || - ticket.hasRounding === true || - ticket.hasItemShortage === true + ticket.isFreezed == true || + ticket.hasRisk == true || + ticket.hasTicketRequest == true || + ticket.hasRounding == true || + ticket.hasItemShortage == true ); expect(hasProblemTicket).toBe(true); From 4e0a81464c6e0dc410d8c87091bbfe2f9aa06df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 2 Oct 2024 15:12:57 +0200 Subject: [PATCH 061/217] fix: test --- db/routines/vn/procedures/productionControl.sql | 1 + db/routines/vn/procedures/sale_getProblems.sql | 2 +- db/routines/vn/procedures/sale_getProblemsByTicket.sql | 4 +++- db/routines/vn/procedures/ticket_getProblems.sql | 2 ++ modules/monitor/back/methods/sales-monitor/salesFilter.js | 1 + modules/ticket/back/methods/ticket/filter.js | 1 + modules/ticket/back/methods/ticket/getTicketsFuture.js | 1 + 7 files changed, 10 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql index 29abc8044e..b9550d62c8 100644 --- a/db/routines/vn/procedures/productionControl.sql +++ b/db/routines/vn/procedures/productionControl.sql @@ -283,6 +283,7 @@ proc: BEGIN DROP TEMPORARY TABLE tmp.productionTicket, + tmp.ticket, tmp.ticketProblems, tmp.saleProblems, tmp.ticketWithPrevia, diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql index a8388034f9..79b548c2c6 100644 --- a/db/routines/vn/procedures/sale_getProblems.sql +++ b/db/routines/vn/procedures/sale_getProblems.sql @@ -163,6 +163,6 @@ BEGIN END LOOP; CLOSE vCursor; - DROP TEMPORARY TABLE tItemShelving, tmp.sale; + DROP TEMPORARY TABLE tItemShelving; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/sale_getProblemsByTicket.sql b/db/routines/vn/procedures/sale_getProblemsByTicket.sql index 708938cba0..fdfd5c8bc8 100644 --- a/db/routines/vn/procedures/sale_getProblemsByTicket.sql +++ b/db/routines/vn/procedures/sale_getProblemsByTicket.sql @@ -18,6 +18,8 @@ BEGIN SELECT * FROM tmp.saleProblems; - DROP TEMPORARY TABLE tmp.saleProblems; + DROP TEMPORARY TABLE + tmp.saleProblems, + tmp.sale; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index 3855c3a1df..fe77ed57bd 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -105,5 +105,7 @@ BEGIN SET totalProblems = isFreezed + hasHighRisk + hasTicketRequest + isTaxDataChecked + hasComponentLack + hasItemDelay + isTooLittle + hasItemLost + hasRounding + hasItemShortage + isVip; + + DROP TEMPORARY TABLE tmp.sale; END$$ DELIMITER ; diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 36e2c40aa5..27a3083117 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -375,6 +375,7 @@ module.exports = Self => { stmts.push(` DROP TEMPORARY TABLE + tmp.ticket, tmp.filter, tmp.ticketProblems, tmp.sale_getWarnings, diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index 2571213070..3ca52337d0 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -369,6 +369,7 @@ module.exports = Self => { stmts.push( `DROP TEMPORARY TABLE + tmp.ticket, tmp.filter, tmp.ticketProblems`); diff --git a/modules/ticket/back/methods/ticket/getTicketsFuture.js b/modules/ticket/back/methods/ticket/getTicketsFuture.js index af3acff13e..88f40bc3ef 100644 --- a/modules/ticket/back/methods/ticket/getTicketsFuture.js +++ b/modules/ticket/back/methods/ticket/getTicketsFuture.js @@ -213,6 +213,7 @@ module.exports = Self => { stmts.push( `DROP TEMPORARY TABLE + tmp.ticket, tmp.filter, tmp.ticketProblems`); From 9113f2e3e568b2d4b5e9751535c659ace503d81b Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 13 Nov 2024 08:30:09 +0100 Subject: [PATCH 062/217] feat: refs #7127 modify days when adding lines to a claim --- db/dump/fixtures.before.sql | 4 ++-- .../11334-grayRoebelini/00-firstScript.sql | 2 ++ .../specs/claim-beginning.spec.js | 2 +- .../claim/specs/createFromSales.spec.js | 24 ++++++++----------- modules/claim/back/models/claim-beginning.js | 24 +++++++++++++++++++ .../methods/sale/getClaimableFromTicket.js | 8 +++---- 6 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 db/versions/11334-grayRoebelini/00-firstScript.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 8544686e8b..4c13b37cc7 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1931,9 +1931,9 @@ INSERT INTO `vn`.`claimEnd`(`id`, `saleFk`, `claimFk`, `workerFk`, `claimDestina (1, 31, 4, 21, 2), (2, 32, 3, 21, 3); -INSERT INTO `vn`.`claimConfig`(`id`, `maxResponsibility`, `monthsToRefund`, `minShipped`) +INSERT INTO `vn`.`claimConfig`(`id`, `maxResponsibility`, `monthsToRefund`, `minShipped`,`daysToClaim`) VALUES - (1, 5, 4, '2016-10-01'); + (1, 5, 4, '2016-10-01', 7); INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`) VALUES diff --git a/db/versions/11334-grayRoebelini/00-firstScript.sql b/db/versions/11334-grayRoebelini/00-firstScript.sql new file mode 100644 index 0000000000..5eb1076947 --- /dev/null +++ b/db/versions/11334-grayRoebelini/00-firstScript.sql @@ -0,0 +1,2 @@ +-- Place your SQL code here +ALTER TABLE vn.claimConfig ADD IF NOT EXISTS daysToClaim int(11) NOT NULL DEFAULT 7 COMMENT 'Dias para reclamar'; diff --git a/modules/claim/back/methods/claim-beginning/specs/claim-beginning.spec.js b/modules/claim/back/methods/claim-beginning/specs/claim-beginning.spec.js index b7974ad237..8b56f3a1c3 100644 --- a/modules/claim/back/methods/claim-beginning/specs/claim-beginning.spec.js +++ b/modules/claim/back/methods/claim-beginning/specs/claim-beginning.spec.js @@ -4,7 +4,7 @@ const LoopBackContext = require('loopback-context'); describe('ClaimBeginning model()', () => { const claimFk = 1; const activeCtx = { - accessToken: {userId: 18}, + accessToken: {userId: 72}, headers: {origin: 'localhost:5000'}, __: () => {} }; diff --git a/modules/claim/back/methods/claim/specs/createFromSales.spec.js b/modules/claim/back/methods/claim/specs/createFromSales.spec.js index 25414d1db7..75caf278ef 100644 --- a/modules/claim/back/methods/claim/specs/createFromSales.spec.js +++ b/modules/claim/back/methods/claim/specs/createFromSales.spec.js @@ -3,22 +3,18 @@ const LoopBackContext = require('loopback-context'); describe('Claim createFromSales()', () => { const ticketId = 23; - const newSale = [{ - id: 31, - instance: 0, - quantity: 10 - }]; - const activeCtx = { - accessToken: {userId: 1}, - headers: {origin: 'localhost:5000'}, - __: () => {} - }; - - const ctx = { - req: activeCtx - }; + const newSale = [{id: 31, instance: 0, quantity: 10}]; + let activeCtx; + let ctx; beforeEach(() => { + activeCtx = { + accessToken: {userId: 72}, + headers: {origin: 'localhost:5000'}, + __: () => {} + }; + ctx = {req: activeCtx}; + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ active: activeCtx }); diff --git a/modules/claim/back/models/claim-beginning.js b/modules/claim/back/models/claim-beginning.js index 3dc9261c3d..40d66c33ea 100644 --- a/modules/claim/back/models/claim-beginning.js +++ b/modules/claim/back/models/claim-beginning.js @@ -1,6 +1,7 @@ const UserError = require('vn-loopback/util/user-error'); const LoopBackContext = require('loopback-context'); +const moment = require('moment'); module.exports = Self => { require('../methods/claim-beginning/importToNewRefundTicket')(Self); @@ -13,8 +14,31 @@ module.exports = Self => { const options = ctx.options; const models = Self.app.models; const saleFk = ctx?.currentInstance?.saleFk || ctx?.instance?.saleFk; + const loopBackContext = LoopBackContext.getCurrentContext(); + const accessToken = loopBackContext.active.accessToken; + const user = await models.VnUser.findById(accessToken.userId); + const role = await models.VnRole.findById(user.roleFk); const sale = await models.Sale.findById(saleFk, {fields: ['ticketFk', 'quantity']}, options); + if (role.name !== 'salesPerson' && role.name !== 'claimManager') + throw new UserError(`You don't have permission to modify this claim`); + + if (role.name === 'salesPerson') { + const query = ` + SELECT daysToClaim + FROM vn.claimConfig`; + const res = await Self.rawSql(query); + const daysToClaim = res[0]?.daysToClaim; + + const claim = await models.Claim.findById(ctx?.currentInstance?.claimFk, {fields: ['created']}, options); + const claimDate = moment.utc(claim.created); + const currentDate = moment.utc(); + const daysSinceSale = currentDate.diff(claimDate, 'days'); + + if (daysSinceSale > daysToClaim) + throw new UserError(`You can't modify this claim because the deadline has already passed`); + } + if (ctx.isNewInstance) { const claim = await models.Claim.findById(ctx.instance.claimFk, {fields: ['ticketFk']}, options); if (sale.ticketFk != claim.ticketFk) diff --git a/modules/ticket/back/methods/sale/getClaimableFromTicket.js b/modules/ticket/back/methods/sale/getClaimableFromTicket.js index c51781f595..cb10bdb0e0 100644 --- a/modules/ticket/back/methods/sale/getClaimableFromTicket.js +++ b/modules/ticket/back/methods/sale/getClaimableFromTicket.js @@ -30,7 +30,6 @@ module.exports = Self => { SELECT s.id AS saleFk, t.id AS ticketFk, - t.landed, s.concept, s.itemFk, s.quantity, @@ -41,11 +40,10 @@ module.exports = Self => { INNER JOIN vn.sale s ON s.ticketFk = t.id LEFT JOIN vn.claimBeginning cb ON cb.saleFk = s.id - WHERE (t.landed) >= TIMESTAMPADD(DAY, -7, ?) - AND t.id = ? AND cb.id IS NULL - ORDER BY t.landed DESC, t.id DESC`; + WHERE t.id = ? + AND cb.id IS NULL`; - const claimableSales = await Self.rawSql(query, [date, ticketFk], myOptions); + const claimableSales = await Self.rawSql(query, [ticketFk], myOptions); return claimableSales; }; From 568661021a265f6e39f3c2b4557f5d83fa2b7060 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 29 Nov 2024 11:54:53 +0100 Subject: [PATCH 063/217] feat: refs #7965 added #6242 back to unify PR --- .../11306-greenMonstera/00-firstScript.sql | 3 + modules/ticket/back/methods/ticket/filter.js | 37 ++------- .../ticket/back/methods/ticket/getSales.js | 9 +- .../back/methods/ticket/getTicketProblems.js | 83 +++++++++++++++++++ .../ticket/specs/getTicketProblems.spec.js | 21 +++++ modules/ticket/back/models/ticket-methods.js | 1 + 6 files changed, 116 insertions(+), 38 deletions(-) create mode 100644 db/versions/11306-greenMonstera/00-firstScript.sql create mode 100644 modules/ticket/back/methods/ticket/getTicketProblems.js create mode 100644 modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js diff --git a/db/versions/11306-greenMonstera/00-firstScript.sql b/db/versions/11306-greenMonstera/00-firstScript.sql new file mode 100644 index 0000000000..c9edc6bfb9 --- /dev/null +++ b/db/versions/11306-greenMonstera/00-firstScript.sql @@ -0,0 +1,3 @@ +-- Place your SQL code here +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('Ticket','getTicketProblems','READ','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index 50481f05b6..f0116424ab 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -306,11 +306,7 @@ module.exports = Self => { (INDEX (ticketFk)) ENGINE = MEMORY SELECT f.id ticketFk - FROM tmp.filter f - LEFT JOIN alertLevel al ON al.id = f.alertLevel - WHERE (al.code = 'FREE' OR f.alertLevel IS NULL) - AND f.shipped >= ? - `, [date]); + FROM tmp.filter f`); stmts.push(stmt); stmts.push('CALL ticket_getProblems(FALSE)'); @@ -330,34 +326,13 @@ module.exports = Self => { if (args.problems != undefined && (!args.from && !args.to)) throw new UserError('Choose a date range or days forward'); - let condition; - let hasProblem; - let hasWhere; - switch (args.problems) { - case true: - condition = `or`; - hasProblem = true; - hasWhere = true; - break; - - case false: - condition = `and`; - hasProblem = null; - hasWhere = true; - break; + if (typeof args.problems == 'boolean') { + let condition = 0; + if (args.problems) + condition = {neq: condition}; + stmt.merge(conn.makeWhere({'tp.totalProblems': condition})); } - const problems = {[condition]: [ - {'tp.isFreezed': hasProblem}, - {'tp.hasRisk': hasProblem}, - {'tp.hasTicketRequest': hasProblem}, - {'tp.hasItemShortage': hasProblem}, - {'tp.hasRounding': hasProblem} - ]}; - - if (hasWhere) - stmt.merge(conn.makeWhere(problems)); - if (filter.order) { if (typeof filter.order == 'string') filter.order = [filter.order]; const index = filter.order.findIndex(o => o.includes('stateFk')); diff --git a/modules/ticket/back/methods/ticket/getSales.js b/modules/ticket/back/methods/ticket/getSales.js index 5b2288d317..3b5ee21a67 100644 --- a/modules/ticket/back/methods/ticket/getSales.js +++ b/modules/ticket/back/methods/ticket/getSales.js @@ -98,14 +98,9 @@ module.exports = Self => { for (let sale of sales) { const problems = saleProblems.get(sale.id); - const itemStock = itemAvailable.get(sale.itemFk); - sale.available = itemStock.available; - sale.visible = itemStock.visible; - sale.claim = claimedSales.get(sale.id); if (problems) { - sale.itemShortage = problems.itemShortage; - sale.hasTicketRequest = problems.hasTicketRequest; - sale.hasComponentLack = problems.hasComponentLack; + for (const problem in problems) + sale[problem] = problems[problem]; } if (salesWithLogs.includes(sale.id)) sale.$hasLogs = true; diff --git a/modules/ticket/back/methods/ticket/getTicketProblems.js b/modules/ticket/back/methods/ticket/getTicketProblems.js new file mode 100644 index 0000000000..351e07b679 --- /dev/null +++ b/modules/ticket/back/methods/ticket/getTicketProblems.js @@ -0,0 +1,83 @@ +const {buildFilter} = require('vn-loopback/util/filter'); + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethodCtx('getTicketProblems', { + description: 'Get problems for a ticket', + accessType: 'READ', + accepts: [{ + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/:id/getTicketProblems`, + verb: 'get' + } + }); + + Self.getTicketProblems = async(ctx, id, options) => { + const myOptions = {}; + const stmts = []; + const conn = Self.dataSource.connector; + let stmt; + const ticketId = id; + const where = buildFilter(ctx.args, param => { + switch (param) { + case 'id': + return {'t.id': ticketId}; + } + }); + + if (typeof options == 'object') + Object.assign(myOptions, options); + + stmt = new ParameterizedSQL(` + CREATE OR REPLACE TEMPORARY TABLE tmp.filter + (INDEX (id)) + ENGINE = MEMORY + SELECT t.id + FROM ticket t + `); + + stmt.merge(conn.makeWhere(where)); + stmts.push(stmt); + + stmt = new ParameterizedSQL(` + CREATE OR REPLACE TEMPORARY TABLE tmp.ticket + (INDEX (ticketFk)) + ENGINE = MEMORY + SELECT f.id AS ticketFk + FROM tmp.filter f + `); + stmts.push(stmt); + + stmts.push('CALL ticket_getProblems(FALSE)'); + + stmt = new ParameterizedSQL(` + SELECT f.*, tp.* + FROM tmp.filter f + LEFT JOIN tmp.ticketProblems tp ON tp.ticketFk = f.id + `); + const ticketsIndex = stmts.push(stmt) - 1; + + stmts.push(` + DROP TEMPORARY TABLE IF EXISTS + tmp.filter, + tmp.ticket, + tmp.ticketProblems + `); + + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + + return result[ticketsIndex]; + }; +}; diff --git a/modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js b/modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js new file mode 100644 index 0000000000..56c3edc1b9 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js @@ -0,0 +1,21 @@ +const models = require('vn-loopback/server/server').models; + +fdescribe('ticket getTicketProblems()', () => { + const ctx = {req: {accessToken: 9}}; + it('should return the problems of a ticket', async() => { + const tx = await models.Ticket.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const problems = await models.Ticket.getTicketProblems(ctx, 11, options); + + expect(problems[7].totalProblems).toEqual(3); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index 620b3e1841..995fa2da3c 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -46,4 +46,5 @@ module.exports = function(Self) { require('../methods/ticket/docuwareDownload')(Self); require('../methods/ticket/myLastModified')(Self); require('../methods/ticket/setWeight')(Self); + require('../methods/ticket/getTicketProblems')(Self); }; From 8fedd7893883f356b4a0f873ec356ded9709bb7b Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 29 Nov 2024 12:47:24 +0100 Subject: [PATCH 064/217] fix: refs #7965 filter and sales back tests --- .../ticket/back/methods/ticket/specs/filter.spec.js | 10 +++++----- .../ticket/back/methods/ticket/specs/getSales.spec.js | 1 - .../methods/ticket/specs/getTicketProblems.spec.js | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/ticket/back/methods/ticket/specs/filter.spec.js b/modules/ticket/back/methods/ticket/specs/filter.spec.js index d06d02f23a..cbd799431e 100644 --- a/modules/ticket/back/methods/ticket/specs/filter.spec.js +++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js @@ -80,11 +80,11 @@ describe('ticket filter()', () => { const result = await models.Ticket.filter(ctx, filter, options); result.forEach(ticket => { - expect(ticket.isFreezed).toEqual(null); - expect(ticket.hasRisk).toEqual(null); - expect(ticket.hasTicketRequest).toEqual(null); - expect(ticket.hasItemShortage).toEqual(null); - expect(ticket.hasRounding).toEqual(null); + expect(ticket.isFreezed).toEqual(0); + expect(ticket.hasRisk).toEqual(0); + expect(ticket.hasTicketRequest).toEqual(0); + expect(ticket.hasItemShortage).toEqual(0); + expect(ticket.hasRounding).toEqual(0); }); await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/specs/getSales.spec.js b/modules/ticket/back/methods/ticket/specs/getSales.spec.js index 7c0a67d451..f0a99b90b6 100644 --- a/modules/ticket/back/methods/ticket/specs/getSales.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getSales.spec.js @@ -15,7 +15,6 @@ describe('ticket getSales()', () => { expect(sales[1].item).toBeDefined(); expect(sales[2].item).toBeDefined(); expect(sales[3].item).toBeDefined(); - expect(sales[0].claim).toBeDefined(); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js b/modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js index 56c3edc1b9..f46c27e4dc 100644 --- a/modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getTicketProblems.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -fdescribe('ticket getTicketProblems()', () => { +describe('ticket getTicketProblems()', () => { const ctx = {req: {accessToken: 9}}; it('should return the problems of a ticket', async() => { const tx = await models.Ticket.beginTransaction({}); From 46c4f4786a0925443f5bfa3849c4721367871a0e Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 18 Dec 2024 12:03:48 +0100 Subject: [PATCH 065/217] feat: refs #6702 saleCloned --- loopback/locale/es.json | 2 +- modules/ticket/back/methods/sale/updatePrice.js | 4 +++- modules/ticket/back/models/sale.js | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index a81f2574fa..68514b9f36 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -123,7 +123,7 @@ "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) {{ticketClone}} ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", "State": "Estado", diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index d4f128082d..b6276c99a0 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -113,6 +113,7 @@ module.exports = Self => { const salesPerson = sale.ticket().client().salesPersonUser(); if (salesPerson) { const url = await Self.app.models.Url.getUrl(); + const ticketWeekly = await models.Sale.ticketClone(sale.id); const message = $t('Changed sale price', { ticketId: sale.ticket().id, itemId: sale.itemFk, @@ -121,7 +122,8 @@ module.exports = Self => { oldPrice: oldPrice, newPrice: newPrice, ticketUrl: `${url}ticket/${sale.ticket().id}/sale`, - itemUrl: `${url}item/${sale.itemFk}/summary` + itemUrl: `${url}item/${sale.itemFk}/summary`, + ticketCloned: ticketWeekly && $t('Is cloned', ticketWeekly) }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message, myOptions); } diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 3aa4cbf2ad..2550d76b46 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -136,4 +136,12 @@ module.exports = Self => { if (!saleGrouping?.newPrice || saleGrouping.newPrice > instance.price) throw new UserError('The price of the item changed'); }); + + Self.isCloned = async function(saleId) { + // let userId = ctx.req.accessToken.userId; + // return await Self.findById(userId, { + // fields: ['id', 'name', 'nickname'] + // }); + // return ticketId + }; }; From 6300795e525e3f11f3e56d375311336d2630222b Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 18 Dec 2024 13:17:47 +0100 Subject: [PATCH 066/217] refactor: refs #8172 Created table parkingCoordinates --- db/dump/fixtures.before.sql | 4824 ++++++++--------- .../11389-yellowChico/00-firstScript.sql | 25 + 2 files changed, 2437 insertions(+), 2412 deletions(-) create mode 100644 db/versions/11389-yellowChico/00-firstScript.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 97ed0ae47e..f0916002ef 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -14,7 +14,7 @@ SET DEFAULT ROLE 'salix' FOR 'root'@'%'; CREATE SCHEMA IF NOT EXISTS `tmp`; UPDATE `util`.`config` - SET `environment`= 'development'; + SET `environment`= 'development'; -- FOR MOCK vn.time @@ -29,10 +29,10 @@ BEGIN SET vDate = '2000-01-01'; WHILE ( YEAR(vDate) <= 2002 ) DO - INSERT IGNORE INTO vn.`time` (dated, period, `month`, `year`, `day`, week, yearMonth, salesYear) + INSERT IGNORE INTO vn.`time` (dated, period, `month`, `year`, `day`, week, yearMonth, salesYear) VALUES (vDate, CONCAT(YEAR(vDate), (WEEK(vDate)+1)), MONTH(vDate), YEAR(vDate), DAY(vDate), WEEK(vDate)+1, CONCAT(YEAR(vDate), MONTH(vDate)), YEAR(vDate)); - SET vDate = DATE_ADD(vDate, INTERVAL 1 DAY); + SET vDate = DATE_ADD(vDate, INTERVAL 1 DAY); END WHILE; END$$ @@ -48,47 +48,47 @@ ALTER TABLE `vn`.`zoneGeo` AUTO_INCREMENT = 1; ALTER TABLE `vn`.`ticket` AUTO_INCREMENT = 1; INSERT INTO `salix`.`AccessToken` (`id`, `ttl`, `created`, `userId`) - VALUES - ('DEFAULT_TOKEN', '1209600', CURDATE(), 66); + VALUES + ('DEFAULT_TOKEN', '1209600', CURDATE(), 66); INSERT INTO `salix`.`printConfig` (`id`, `itRecipient`, `incidencesEmail`) - VALUES - (1, 'it@gotamcity.com', 'incidences@gotamcity.com'); + VALUES + (1, 'it@gotamcity.com', 'incidences@gotamcity.com'); INSERT INTO `vn`.`ticketConfig` (`id`, `scopeDays`) - VALUES - ('1', '6'); + VALUES + ('1', '6'); INSERT INTO `vn`.`bionicConfig` (`id`, `generalInflationCoeficient`, `minimumDensityVolumetricWeight`, `verdnaturaVolumeBox`, `itemCarryBox`) - VALUES - (1, 1.30, 167.00, 138000, 71); + VALUES + (1, 1.30, 167.00, 138000, 71); INSERT INTO `vn`.`chatConfig` (`id`, `host`, `api`) - VALUES - (1, 'https://chat.verdnatura.es', 'https://chat.verdnatura.es/api/v1'); + VALUES + (1, 'https://chat.verdnatura.es', 'https://chat.verdnatura.es/api/v1'); INSERT IGNORE INTO `vn`.`greugeConfig`(`id`, `freightPickUpPrice`) - VALUES - ('1', '11'); + VALUES + ('1', '11'); UPDATE `account`.`role` SET id = 100 WHERE id = 0; INSERT INTO `account`.`roleConfig`(`id`, `mysqlPassword`, `rolePrefix`, `userPrefix`, `userHost`, `tplUser`) - VALUES - (1, 'mysqlPassword', '$', '!', '%', 'any'); + VALUES + (1, 'mysqlPassword', '$', '!', '%', 'any'); CALL `account`.`role_sync`; INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `role`,`active`,`email`, `lang`, `image`, `password`) - SELECT id, LOWER(name), CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2' - FROM `account`.`role` - ORDER BY id; + SELECT id, LOWER(name), CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2' + FROM `account`.`role` + ORDER BY id; INSERT INTO `account`.`account`(`id`) - SELECT `u`.`id` - FROM `account`.`user` `u` - JOIN `account`.`role` `r` ON `u`.`role` = `r`.`id` - WHERE `r`.`name` <> 'customer'; + SELECT `u`.`id` + FROM `account`.`user` `u` + JOIN `account`.`role` `r` ON `u`.`role` = `r`.`id` + WHERE `r`.`name` <> 'customer'; INSERT INTO `vn`.`educationLevel` (`id`, `name`) VALUES @@ -96,14 +96,14 @@ INSERT INTO `vn`.`educationLevel` (`id`, `name`) (2, 'ENSEÑANZAS DE BACHILLERATO'); INSERT INTO `vn`.`worker`(`id`,`code`, `firstName`, `lastName`, `bossFk`) - SELECT id,UPPER(LPAD(role, 3, '0')), name, name, NULL - FROM `account`.`user` - WHERE `id` = 9; + SELECT id,UPPER(LPAD(role, 3, '0')), name, name, NULL + FROM `account`.`user` + WHERE `id` = 9; INSERT INTO `vn`.`worker`(`id`,`code`, `firstName`, `lastName`, `bossFk`) - SELECT id,UPPER(LPAD(role, 3, '0')), name, name, 9 - FROM `account`.`user` - WHERE `id` <> 9; + SELECT id,UPPER(LPAD(role, 3, '0')), name, name, 9 + FROM `account`.`user` + WHERE `id` <> 9; UPDATE `vn`.`worker` SET bossFk = NULL WHERE id = 20; UPDATE `vn`.`worker` SET bossFk = 20 WHERE id = 1 OR id = 9; @@ -113,176 +113,176 @@ UPDATE `vn`.`worker` SET bossFk = 50 WHERE id = 49; DELETE FROM `vn`.`worker` WHERE firstName ='customer'; INSERT INTO `hedera`.`tpvConfig`(`id`, `currency`, `terminal`, `transactionType`, `maxAmount`, `employeeFk`, `testUrl`) - VALUES - (1, 978, 1, 0, 2000, 9, 0); + VALUES + (1, 978, 1, 0, 2000, 9, 0); INSERT INTO hedera.orderConfig (`id`, `employeeFk`, `defaultAgencyFk`, `guestMethod`, `guestAgencyFk`, `reserveTime`, `defaultCompanyFk`) VALUES (1, 1, 2, 'PICKUP', 1, '00:20:00', 442); INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`) - VALUES - (1101, 'brucewayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'), - (1102, 'petterparker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 131, 1, 'PetterParker@mydomain.com', 'en','1102'), - (1103, 'clarkkent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr','1103'), - (1104, 'tonystark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es','1104'), - (1105, 'maxeisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt','1105'), - (1106, 'davidcharleshaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en','1106'), - (1107, 'hankpym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en','1107'), - (1108, 'charlesxavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en','1108'), - (1109, 'brucebanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en','1109'), - (1110, 'jessicajones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en','1110'), - (1111, 'missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'), - (1112, 'trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'); + VALUES + (1101, 'brucewayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'), + (1102, 'petterparker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 131, 1, 'PetterParker@mydomain.com', 'en','1102'), + (1103, 'clarkkent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr','1103'), + (1104, 'tonystark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es','1104'), + (1105, 'maxeisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt','1105'), + (1106, 'davidcharleshaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en','1106'), + (1107, 'hankpym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en','1107'), + (1108, 'charlesxavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en','1108'), + (1109, 'brucebanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en','1109'), + (1110, 'jessicajones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en','1110'), + (1111, 'missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'), + (1112, 'trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','e7723f0b24ff05b32ed09d95196f2f29'); UPDATE account.`user` - SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR) - WHERE name = 'maintenance'; + SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR) + WHERE name = 'maintenance'; INSERT INTO `account`.`mailAlias`(`id`, `alias`, `description`, `isPublic`) - VALUES - (1, 'general', 'General mailing list', FALSE), - (2, 'it' , 'IT department' , TRUE), - (3, 'sales' , 'Sales department' , TRUE); + VALUES + (1, 'general', 'General mailing list', FALSE), + (2, 'it' , 'IT department' , TRUE), + (3, 'sales' , 'Sales department' , TRUE); INSERT INTO `account`.`mailAliasAccount`(`mailAlias`, `account`) - VALUES - (1, 1), - (1, 18), - (3, 18), - (1, 9), - (2, 9); + VALUES + (1, 1), + (1, 18), + (3, 18), + (1, 9), + (2, 9); INSERT INTO `account`.`mailForward`(`account`, `forwardTo`) - VALUES - (1, 'employee@domain.local'); + VALUES + (1, 'employee@domain.local'); INSERT INTO `vn`.`currency`(`id`, `code`, `name`, `ratio`) - VALUES - (1, 'EUR', 'Euro', 1), - (2, 'USD', 'Dollar USA', 1.4), - (3, 'GBP', 'Libra', 1), - (4, 'JPY', 'Yen Japones', 1), - (5, 'CNY', 'Yuan Chino', 1.2); + VALUES + (1, 'EUR', 'Euro', 1), + (2, 'USD', 'Dollar USA', 1.4), + (3, 'GBP', 'Libra', 1), + (4, 'JPY', 'Yen Japones', 1), + (5, 'CNY', 'Yuan Chino', 1.2); INSERT INTO `vn`.`country`(`id`, `name`, `isUeeMember`, `code`, `currencyFk`, `ibanLength`, `continentFk`, `hasDailyInvoice`, `CEE`) - VALUES - (1, 'España', 1, 'ES', 1, 24, 4, 0, 1), - (2, 'Italia', 1, 'IT', 1, 27, 4, 0, 1), - (3, 'Alemania', 1, 'DE', 1, 22, 4, 0, 1), - (4, 'Rumania', 1, 'RO', 1, 24, 4, 0, 1), - (5, 'Holanda', 1, 'NL', 1, 18, 4, 0, 1), - (8, 'Portugal', 1, 'PT', 1, 27, 4, 0, 1), - (13,'Ecuador', 0, 'EC', 1, 24, 2, 1, 2), - (19,'Francia', 1, 'FR', 1, 27, 4, 0, 1), - (30,'Canarias', 1, 'IC', 1, 24, 4, 1, 2); + VALUES + (1, 'España', 1, 'ES', 1, 24, 4, 0, 1), + (2, 'Italia', 1, 'IT', 1, 27, 4, 0, 1), + (3, 'Alemania', 1, 'DE', 1, 22, 4, 0, 1), + (4, 'Rumania', 1, 'RO', 1, 24, 4, 0, 1), + (5, 'Holanda', 1, 'NL', 1, 18, 4, 0, 1), + (8, 'Portugal', 1, 'PT', 1, 27, 4, 0, 1), + (13,'Ecuador', 0, 'EC', 1, 24, 2, 1, 2), + (19,'Francia', 1, 'FR', 1, 27, 4, 0, 1), + (30,'Canarias', 1, 'IC', 1, 24, 4, 1, 2); INSERT INTO `vn`.`warehouse`(`id`, `name`, `code`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`, `hasDms`, `hasComission`, `countryFk`, `hasProduction`, `isOrigin`, `isDestiny`) - VALUES - (1, 'Warehouse One', 'ALG', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), - (2, 'Warehouse Two', NULL, 1, 1, 1, 1, 0, 1, 13, 1, 1, 0), - (3, 'Warehouse Three', NULL, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0), - (4, 'Warehouse Four', NULL, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1), - (5, 'Warehouse Five', NULL, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0), - (6, 'Warehouse six', 'vnh', 1, 1, 1, 1, 0, 0, 1, 1, 0, 0), - (13, 'Inventory', 'inv', 1, 1, 1, 0, 0, 0, 1, 0, 0, 0), - (60, 'Algemesi', NULL, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0); + VALUES + (1, 'Warehouse One', 'ALG', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), + (2, 'Warehouse Two', NULL, 1, 1, 1, 1, 0, 1, 13, 1, 1, 0), + (3, 'Warehouse Three', NULL, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0), + (4, 'Warehouse Four', NULL, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1), + (5, 'Warehouse Five', NULL, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0), + (6, 'Warehouse six', 'vnh', 1, 1, 1, 1, 0, 0, 1, 1, 0, 0), + (13, 'Inventory', 'inv', 1, 1, 1, 0, 0, 0, 1, 0, 0, 0), + (60, 'Algemesi', NULL, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0); INSERT INTO `vn`.`sectorType` (`id`, `code`) VALUES (1,'normal'); INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `code`, `typeFk`) - VALUES - (1, 'First sector', 1, 'FIRST', 1), - (2, 'Second sector', 2, 'SECOND',1); + VALUES + (1, 'First sector', 1, 'FIRST', 1), + (2, 'Second sector', 2, 'SECOND',1); INSERT INTO `vn`.`printer` (`id`, `name`, `path`, `isLabeler`, `sectorFk`, `ipAddress`) - VALUES - (1, 'printer1', 'path1', 0, 1 , NULL), - (2, 'printer2', 'path2', 1, 1 , NULL), - (4, 'printer4', 'path4', 0, NULL, '10.1.10.4'); + VALUES + (1, 'printer1', 'path1', 0, 1 , NULL), + (2, 'printer2', 'path2', 1, 1 , NULL), + (4, 'printer4', 'path4', 0, NULL, '10.1.10.4'); UPDATE `vn`.`sector` SET `backupPrinterFk` = 1 WHERE id = 1; INSERT INTO `vn`.`worker`(`id`, `code`, `firstName`, `lastName`,`bossFk`, `phone`) - VALUES - (1106, 'LGN', 'David Charles', 'Haller', 19, 432978106), - (1107, 'ANT', 'Hank' , 'Pym' , 19, 432978107), - (1108, 'DCX', 'Charles' , 'Xavier', 19, 432978108), - (1109, 'HLK', 'Bruce' , 'Banner', 19, 432978109), - (1110, 'JJJ', 'Jessica' , 'Jones' , 19, 432978110); + VALUES + (1106, 'LGN', 'David Charles', 'Haller', 19, 432978106), + (1107, 'ANT', 'Hank' , 'Pym' , 19, 432978107), + (1108, 'DCX', 'Charles' , 'Xavier', 19, 432978108), + (1109, 'HLK', 'Bruce' , 'Banner', 19, 432978109), + (1110, 'JJJ', 'Jessica' , 'Jones' , 19, 432978110); -INSERT INTO `vn`.`parking` (`id`, `column`, `row`, `sectorFk`, `code`, `pickingOrder`) - VALUES - ('1', 700, '01', 1, '700-01', 70001), - ('2', 700, '02', 2, '700-02', 70002), - ('3', 100, '01', 1, '100-01', 1), - (32397, 100, '02', 1, 'A-47-1', 1165), - (34831, 200, '01', 1, 'K-26-2', 20220), - (34965, 200, '02', 2, 'L-08-4', 21800), - (39096, 200, '03', 2, 'LR-02-3', 99999); +INSERT INTO `vn`.`parking` (`id`, `sectorFk`, `code`, `pickingOrder`) + VALUES + ('1', 1, '700-01', 70001), + ('2', 2, '700-02', 70002), + ('3', 1, '100-01', 1), + (32397, 1, 'A-47-1', 1165), + (34831, 1, 'K-26-2', 20220), + (34965, 2, 'L-08-4', 21800), + (39096, 2, 'LR-02-3', 99999); INSERT INTO `vn`.`shelving` (`code`, `parkingFk`, `isPrinted`, `priority`, `userFk`, `isRecyclable`) - VALUES - ('AA6', 34965, 1, 0, NULL, 0), - ('AA7', 34965, 1, 0, NULL, 0), - ('AA8', 34965, 1, 0, NULL, 0), - ('AA9', NULL, 1, 0, NULL, 0), - ('AAA', NULL, 0, 0, 1109, 1), - ('AAB', NULL, 0, 0, 1109, 1), - ('AAC', NULL, 1, 99, 1109, 1), - ('AAD', NULL, 0, 0, 1109, 1), - ('AAE', 39096, 1, 0, 1109, 1), - ('AAF', 34831, 1, 0, 1109, 1), - ('GVC', 1, 0, 1, 1106, 1), - ('HEJ', 2, 0, 1, 1106, 1), - ('UXN', 1, 0, 1, 1106, 1); + VALUES + ('AA6', 34965, 1, 0, NULL, 0), + ('AA7', 34965, 1, 0, NULL, 0), + ('AA8', 34965, 1, 0, NULL, 0), + ('AA9', NULL, 1, 0, NULL, 0), + ('AAA', NULL, 0, 0, 1109, 1), + ('AAB', NULL, 0, 0, 1109, 1), + ('AAC', NULL, 1, 99, 1109, 1), + ('AAD', NULL, 0, 0, 1109, 1), + ('AAE', 39096, 1, 0, 1109, 1), + ('AAF', 34831, 1, 0, 1109, 1), + ('GVC', 1, 0, 1, 1106, 1), + ('HEJ', 2, 0, 1, 1106, 1), + ('UXN', 1, 0, 1, 1106, 1); INSERT INTO `vn`.`accountingType`(`id`, `description`, `receiptDescription`,`code`, `maxAmount`, `daysInFuture`) - VALUES - (1, 'CC and credit policies', 'Transfers', 'wireTransfer', NULL, 1), - (2, 'Cash', 'Cash', 'cash', 1000, 0), - (3, 'Credit card', 'Credit Card', 'creditCard', NULL, 0), - (4, 'Finalcial lines', NULL, NULL, NULL, 0), - (5, 'Other products', NULL, NULL, NULL, 0), - (6, 'Loans', NULL, NULL, NULL, 0), - (7, 'Leasing', NULL, NULL, NULL, 0), - (8, 'Compensations', 'Compensations', 'compensation', NULL, 0); + VALUES + (1, 'CC and credit policies', 'Transfers', 'wireTransfer', NULL, 1), + (2, 'Cash', 'Cash', 'cash', 1000, 0), + (3, 'Credit card', 'Credit Card', 'creditCard', NULL, 0), + (4, 'Finalcial lines', NULL, NULL, NULL, 0), + (5, 'Other products', NULL, NULL, NULL, 0), + (6, 'Loans', NULL, NULL, NULL, 0), + (7, 'Leasing', NULL, NULL, NULL, 0), + (8, 'Compensations', 'Compensations', 'compensation', NULL, 0); INSERT INTO `vn`.`bankEntity`(`id`, `countryFk`, `name`, `bic`) - VALUES - (128, 1, 'The Best Bank', 'BBKKESMMMMMM'), - (2100, 1, 'Caixa Bank', 'CAIXESBB'); + VALUES + (128, 1, 'The Best Bank', 'BBKKESMMMMMM'), + (2100, 1, 'Caixa Bank', 'CAIXESBB'); INSERT INTO `vn`.`accounting`(`id`, `bank`, `account`, `accountingTypeFk`, `entityFk`, `isActive`, `currencyFk`, `code`) - VALUES - (1, 'Pay on receipt', '5720000001', 3, 128, 1, 1, 'payOnReceipt'), - (2, 'Cash', '5700000001', 2, 128, 1, 1, 'cash'), - (3, 'Compensation', '4000000000', 8, 128, 1, 1, 'compensation'), - (4, 'Transfers', '4000000001', 1, 128, 1, 1, 'transfers'), - (3117, 'Caixa Rural d''Algemesi', '5720000000', 8, 2100, 1, 1, 'cra'); + VALUES + (1, 'Pay on receipt', '5720000001', 3, 128, 1, 1, 'payOnReceipt'), + (2, 'Cash', '5700000001', 2, 128, 1, 1, 'cash'), + (3, 'Compensation', '4000000000', 8, 128, 1, 1, 'compensation'), + (4, 'Transfers', '4000000001', 1, 128, 1, 1, 'transfers'), + (3117, 'Caixa Rural d''Algemesi', '5720000000', 8, 2100, 1, 1, 'cra'); INSERT INTO `vn`.`deliveryMethod`(`id`, `code`, `description`) - VALUES - (1, 'AGENCY', 'Agencia'), - (2, 'DELIVERY', 'Reparto'), - (3, 'PICKUP', 'Recogida'), - (4, 'OTHER', 'Otros'); + VALUES + (1, 'AGENCY', 'Agencia'), + (2, 'DELIVERY', 'Reparto'), + (3, 'PICKUP', 'Recogida'), + (4, 'OTHER', 'Otros'); INSERT INTO `vn`.`agency`(`id`, `name`, `warehouseFk`) - VALUES - (1, 'inhouse pickup' , 1), - (2, 'Super-Man delivery' , 1), - (3, 'Teleportation device' , 1), - (4, 'Entanglement' , 1), - (5, 'Quantum break device' , 1), - (6, 'Walking' , 1), - (7, 'Gotham247' , 1), - (8, 'Gotham247Expensive' , 1), - (9, 'Refund' , 1), - (10, 'Other agency' , 1); + VALUES + (1, 'inhouse pickup' , 1), + (2, 'Super-Man delivery' , 1), + (3, 'Teleportation device' , 1), + (4, 'Entanglement' , 1), + (5, 'Quantum break device' , 1), + (6, 'Walking' , 1), + (7, 'Gotham247' , 1), + (8, 'Gotham247Expensive' , 1), + (9, 'Refund' , 1), + (10, 'Other agency' , 1); UPDATE `vn`.`agencyMode` SET `id` = 1 WHERE `name` = 'inhouse pickup'; UPDATE `vn`.`agencyMode` SET `id` = 2 WHERE `name` = 'Super-Man delivery'; @@ -322,159 +322,159 @@ UPDATE `vn`.`agencyMode` SET `web` = 1, `reportMail` = 'no-reply@gothamcity.com' UPDATE `vn`.`agencyMode` SET `code` = 'refund' WHERE `id` = 23; INSERT INTO `vn`.`payMethod`(`id`,`code`, `name`, `graceDays`, `outstandingDebt`, `isIbanRequiredForClients`, `isIbanRequiredForSuppliers`, `hasVerified`) - VALUES - (1, NULL, 'PayMethod one', 0, 001, 0, 0, 0), - (2, NULL, 'PayMethod two', 10, 001, 0, 0, 1), - (3, 'compensation', 'PayMethod three', 0, 001, 0, 0, 0), - (4, NULL, 'PayMethod with IBAN', 0, 001, 1, 0, 0), - (5, NULL, 'PayMethod five', 10, 001, 0, 0, 0), - (8,'wireTransfer', 'WireTransfer', 5, 001, 1, 1, 0); + VALUES + (1, NULL, 'PayMethod one', 0, 001, 0, 0, 0), + (2, NULL, 'PayMethod two', 10, 001, 0, 0, 1), + (3, 'compensation', 'PayMethod three', 0, 001, 0, 0, 0), + (4, NULL, 'PayMethod with IBAN', 0, 001, 1, 0, 0), + (5, NULL, 'PayMethod five', 10, 001, 0, 0, 0), + (8,'wireTransfer', 'WireTransfer', 5, 001, 1, 1, 0); INSERT INTO `vn`.`payDem`(`id`, `payDem`) - VALUES - (1, 10), - (2, 20), - (7, 0); + VALUES + (1, 10), + (2, 20), + (7, 0); INSERT INTO `vn`.`autonomy`(`id`, `name`, `countryFk`, `hasDailyInvoice`) - VALUES - (1, 'Autonomy one', 1, 1), - (2, 'Autonomy two', 1, 0), - (3, 'Autonomy three', 2, 0), - (4, 'Autonomy four', 13, 0); + VALUES + (1, 'Autonomy one', 1, 1), + (2, 'Autonomy two', 1, 0), + (3, 'Autonomy three', 2, 0), + (4, 'Autonomy four', 13, 0); INSERT INTO `vn`.`province`(`id`, `name`, `countryFk`, `autonomyFk`, `warehouseFk`) - VALUES - (1, 'Province one', 1, 1, NULL), - (2, 'Province two', 1, 1, NULL), - (3, 'Province three', 30, 2, NULL), - (4, 'Province four', 2, 3, NULL), - (5, 'Province five', 13, 4, NULL); + VALUES + (1, 'Province one', 1, 1, NULL), + (2, 'Province two', 1, 1, NULL), + (3, 'Province three', 30, 2, NULL), + (4, 'Province four', 2, 3, NULL), + (5, 'Province five', 13, 4, NULL); INSERT INTO `vn`.`town`(`id`, `name`, `provinceFk`) - VALUES - (1, 'Valencia', 1), - (2, 'Gotham', 1), - (3, 'Algemesi', 1), - (4, 'Alzira', 1), - (5, 'Quito', 5); + VALUES + (1, 'Valencia', 1), + (2, 'Gotham', 1), + (3, 'Algemesi', 1), + (4, 'Alzira', 1), + (5, 'Quito', 5); INSERT INTO `vn`.`postCode`(`code`, `townFk`, `geoFk`) - VALUES - ('46000', 1, 6), - ('46460', 2, 6), - ('46680', 3, 6), - ('46600', 4, 7), - ('46600',1, 6), - ('EC170150', 5, 8); + VALUES + ('46000', 1, 6), + ('46460', 2, 6), + ('46680', 3, 6), + ('46600', 4, 7), + ('46600',1, 6), + ('EC170150', 5, 8); INSERT INTO `vn`.`clientType`(`code`, `type`) - VALUES - ('normal', 'Normal'), - ('internalUse', 'Autoconsumo'), - ('handMaking', 'Confección'), - ('loses', 'Mermas'); + VALUES + ('normal', 'Normal'), + ('internalUse', 'Autoconsumo'), + ('handMaking', 'Confección'), + ('loses', 'Mermas'); INSERT INTO `vn`.`cplusTerIdNif`(`id`, `description`) - VALUES - (1, 'NIF'); + VALUES + (1, 'NIF'); INSERT INTO `vn`.`contactChannel`(`id`, `name`) - VALUES - (1, 'Rumors on the streets'), - (2, 'Metropolis newspaper'), - (3, 'Daily Bugle'), - (4, 'GCN Channel'), - (5, 'The Newspaper'); + VALUES + (1, 'Rumors on the streets'), + (2, 'Metropolis newspaper'), + (3, 'Daily Bugle'), + (4, 'GCN Channel'), + (5, 'The Newspaper'); INSERT INTO `vn`.`client`(`id`,`name`,`fi`,`socialName`,`contact`,`street`,`city`,`postcode`,`phone`,`mobile`,`isRelevant`,`email`,`iban`,`dueDay`,`accountingAccount`,`isEqualizated`,`provinceFk`,`hasToInvoice`,`credit`,`countryFk`,`isActive`,`quality`,`payMethodFk`,`created`,`isToBeMailed`,`contactChannelFk`,`hasSepaVnl`,`hasCoreVnl`,`hasCoreVnh`,`riskCalculated`, `hasToInvoiceByAddress`,`isTaxDataChecked`,`isFreezed`,`creditInsurance`,`isCreatedAsServed`,`hasInvoiceSimplified`,`salesPersonFk`,`isVies`,`businessTypeFk`,`typeFk`) - VALUES - (1101, 'Bruce Wayne', '84612325V', 'BATMAN', 'Alfred', '1007 MOUNTAIN DRIVE, GOTHAM', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), - (1102, 'Petter Parker', '87945234L', 'SPIDER MAN', 'Aunt May', '20 INGRAM STREET, QUEENS, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), - (1103, 'Clark Kent', '06815934E', 'SUPER MAN', 'lois lane', '344 CLINTON STREET, APARTAMENT 3-D', 'Gotham', 46460, 1111111111, 222222222, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 0, 19, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), - (1104, 'Tony Stark', '06089160W', 'IRON MAN', 'Pepper Potts', '10880 MALIBU POINT, 90265', 'Gotham', 46460, 1111111111, 222222222, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), - (1105, 'Max Eisenhardt', '251628698', 'MAGNETO', 'Rogue', 'UNKNOWN WHEREABOUTS', 'Gotham', 46460, 1111111111, 222222222, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 300, 8, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, NULL, 0, 0, 18, 0, 'florist','normal'), - (1106, 'DavidCharlesHaller', '53136686Q', 'LEGION', 'Charles Xavier', 'CITY OF NEW YORK, NEW YORK, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 19, 0, 'florist','normal'), - (1107, 'Hank Pym', '09854837G', 'ANT MAN', 'Hawk', 'ANTHILL, SAN FRANCISCO, CALIFORNIA', 'Gotham', 46460, 1111111111, 222222222, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 0, 0, NULL, 0, 0, 19, 0, 'florist','normal'), - (1108, 'Charles Xavier', '22641921P', 'PROFESSOR X', 'Beast', '3800 VICTORY PKWY, CINCINNATI, OH 45207, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 5, 1, 300, 13, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, NULL, 0, 0, 19, 0, 'florist','normal'), - (1109, 'Bruce Banner', '16104829E', 'HULK', 'Black widow', 'SOMEWHERE IN NEW YORK', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 0, 0, NULL, 0, 0, 9, 0, 'florist','normal'), - (1110, 'Jessica Jones', '58282869H', 'JESSICA JONES', 'Luke Cage', 'NYCC 2015 POSTER', 'Gotham', 46460, 1111111111, 222222222, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, NULL, 1, 'florist','normal'), - (1111, 'Missing', NULL, 'MISSING MAN', 'Anton', 'THE SPACE, UNIVERSE FAR AWAY', 'Gotham', 46460, 1111111111, 222222222, 0, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 0, 1, 0, NULL, 1, 0, NULL, 0, 'others','loses'), - (1112, 'Trash', NULL, 'GARBAGE MAN', 'Unknown name', 'NEW YORK CITY, UNDERGROUND', 'Gotham', 46460, 1111111111, 222222222, 0, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 0, 1, 0, NULL, 1, 0, NULL, 0, 'others','loses'); + VALUES + (1101, 'Bruce Wayne', '84612325V', 'BATMAN', 'Alfred', '1007 MOUNTAIN DRIVE, GOTHAM', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), + (1102, 'Petter Parker', '87945234L', 'SPIDER MAN', 'Aunt May', '20 INGRAM STREET, QUEENS, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), + (1103, 'Clark Kent', '06815934E', 'SUPER MAN', 'lois lane', '344 CLINTON STREET, APARTAMENT 3-D', 'Gotham', 46460, 1111111111, 222222222, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 0, 19, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), + (1104, 'Tony Stark', '06089160W', 'IRON MAN', 'Pepper Potts', '10880 MALIBU POINT, 90265', 'Gotham', 46460, 1111111111, 222222222, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 18, 0, 'florist','normal'), + (1105, 'Max Eisenhardt', '251628698', 'MAGNETO', 'Rogue', 'UNKNOWN WHEREABOUTS', 'Gotham', 46460, 1111111111, 222222222, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 300, 8, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, NULL, 0, 0, 18, 0, 'florist','normal'), + (1106, 'DavidCharlesHaller', '53136686Q', 'LEGION', 'Charles Xavier', 'CITY OF NEW YORK, NEW YORK, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, 19, 0, 'florist','normal'), + (1107, 'Hank Pym', '09854837G', 'ANT MAN', 'Hawk', 'ANTHILL, SAN FRANCISCO, CALIFORNIA', 'Gotham', 46460, 1111111111, 222222222, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 0, 0, NULL, 0, 0, 19, 0, 'florist','normal'), + (1108, 'Charles Xavier', '22641921P', 'PROFESSOR X', 'Beast', '3800 VICTORY PKWY, CINCINNATI, OH 45207, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 5, 1, 300, 13, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, NULL, 0, 0, 19, 0, 'florist','normal'), + (1109, 'Bruce Banner', '16104829E', 'HULK', 'Black widow', 'SOMEWHERE IN NEW YORK', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 0, 0, NULL, 0, 0, 9, 0, 'florist','normal'), + (1110, 'Jessica Jones', '58282869H', 'JESSICA JONES', 'Luke Cage', 'NYCC 2015 POSTER', 'Gotham', 46460, 1111111111, 222222222, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 0, NULL, 0, 0, NULL, 1, 'florist','normal'), + (1111, 'Missing', NULL, 'MISSING MAN', 'Anton', 'THE SPACE, UNIVERSE FAR AWAY', 'Gotham', 46460, 1111111111, 222222222, 0, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 0, 1, 0, NULL, 1, 0, NULL, 0, 'others','loses'), + (1112, 'Trash', NULL, 'GARBAGE MAN', 'Unknown name', 'NEW YORK CITY, UNDERGROUND', 'Gotham', 46460, 1111111111, 222222222, 0, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 0, 1, 0, NULL, 1, 0, NULL, 0, 'others','loses'); INSERT INTO `vn`.`client`(`id`, `name`, `fi`, `socialName`, `contact`, `street`, `city`, `postcode`, `isRelevant`, `email`, `iban`,`dueDay`,`accountingAccount`, `isEqualizated`, `provinceFk`, `hasToInvoice`, `credit`, `countryFk`, `isActive`, `quality`, `payMethodFk`,`created`, `isTaxDataChecked`) - SELECT id, name, CONCAT(RPAD(CONCAT(id,9),8,id),'A'), UPPER(CONCAT(name, 'Social')), CONCAT(name, 'Contact'), UPPER(CONCAT(name, 'Street')), 'GOTHAM', 46460, 0, CONCAT(name,'@mydomain.com'), NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1 - FROM `account`.`role` `r` - WHERE `r`.`hasLogin` = 1; + SELECT id, name, CONCAT(RPAD(CONCAT(id,9),8,id),'A'), UPPER(CONCAT(name, 'Social')), CONCAT(name, 'Contact'), UPPER(CONCAT(name, 'Street')), 'GOTHAM', 46460, 0, CONCAT(name,'@mydomain.com'), NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, 10, 5, util.VN_CURDATE(), 1 + FROM `account`.`role` `r` + WHERE `r`.`hasLogin` = 1; INSERT INTO `vn`.`clientManaCache`(`clientFk`, `mana`, `dated`) - VALUES - (1101, 50, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (1102, 100, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (1103, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (1104, -30, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)); + VALUES + (1101, 50, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (1102, 100, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (1103, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (1104, -30, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)); INSERT INTO `vn`.`mandateType`(`id`, `code`) - VALUES - (1, 'B2B'), - (2, 'CORE'), - (3, 'LCR'); + VALUES + (1, 'B2B'), + (2, 'CORE'), + (3, 'LCR'); INSERT INTO `vn`.`clientConfig`(`id`, `riskTolerance`, `maxCreditRows`, `maxPriceIncreasingRatio`, `riskScope`, `defaultPayMethodFk`, `defaultDueDay`, `defaultCredit`, `defaultIsTaxDataChecked`, `defaultHasCoreVnl`, `defaultMandateTypeFk`) - VALUES - (1, 200, 10, 0.25, 2, 4, 5, 300.00, 1, 1, 2); + VALUES + (1, 200, 10, 0.25, 2, 4, 5, 300.00, 1, 1, 2); INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `phone`, `mobile`, `isActive`, `clientFk`, `agencyModeFk`, `longitude`, `latitude`, `isEqualizated`, `isDefaultAddress`) - VALUES - (1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, -74.1111111, 10.1111111, 0, 1), - (2, 'Petter Parker', '20 Ingram Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, -74.2222222, 10.2222222, 0, 1), - (3, 'Clark Kent', '344 Clinton Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, -74.3333333, 10.3333333, 0, 1), - (4, 'Tony Stark', '10880 Malibu Point', 'Gotham', 46460, 1, 1111111111, 222222222, 1 , 1104, 2, -74.4444444, 10.4444444, 0, 1), - (5, 'Max Eisenhardt', 'Unknown Whereabouts', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 1), - (6, 'DavidCharlesHaller', 'Evil hideout', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 1), - (7, 'Hank Pym', 'Anthill', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 1), - (8, 'Charles Xavier', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Gotham', 46460, 5, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 1), - (9, 'Bruce Banner', 'Somewhere in New York', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 1), - (10, 'Jessica Jones', 'NYCC 2015 Poster', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 1), - (11, 'Missing', 'The space', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1111, 10, NULL, NULL, 0, 1), - (12, 'Trash', 'New York city', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1112, 10, NULL, NULL, 0, 1), - (101, 'Somewhere in Thailand', 'address 01', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (102, 'Somewhere in Poland', 'address 02', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), - (103, 'Somewhere in Japan', 'address 03', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), - (104, 'Somewhere in Spain', 'address 04', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), - (105, 'Somewhere in Potugal', 'address 05', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (106, 'Somewhere in UK', 'address 06', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (107, 'Somewhere in Valencia', 'address 07', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (108, 'Somewhere in Gotham', 'address 08', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (109, 'Somewhere in London', 'address 09', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (110, 'Somewhere in Algemesi', 'address 10', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (111, 'Somewhere in Carlet', 'address 11', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (112, 'Somewhere in Campanar', 'address 12', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (113, 'Somewhere in Malilla', 'address 13', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (114, 'Somewhere in France', 'address 14', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (115, 'Somewhere in Birmingham', 'address 15', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (116, 'Somewhere in Scotland', 'address 16', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (117, 'Somewhere in nowhere', 'address 17', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (118, 'Somewhere over the rainbow', 'address 18', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (119, 'Somewhere in Alberic', 'address 19', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (120, 'Somewhere in Montortal', 'address 20', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (121, 'the bat cave', 'address 21', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 0), - (122, 'NY roofs', 'address 22', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 0), - (123, 'The phone box', 'address 23', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, -74.555555, 10.555555, 0, 0), - (124, 'Stark tower Gotham', 'address 24', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 0), - (125, 'The plastic cell', 'address 25', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 0), - (126, 'Many places', 'address 26', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 0), - (127, 'Your pocket', 'address 27', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 0), - (128, 'Cerebro', 'address 28', 'Gotham', 46460, 5, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 0), - (129, 'Luke Cages Bar', 'address 29', 'Gotham', 'EC170150', 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 0), - (130, 'Non valid address', 'address 30', 'Gotham', 46460, 1, 1111111111, 222222222, 0, 1101, 2, NULL, NULL, 0, 0); + VALUES + (1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, -74.1111111, 10.1111111, 0, 1), + (2, 'Petter Parker', '20 Ingram Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, -74.2222222, 10.2222222, 0, 1), + (3, 'Clark Kent', '344 Clinton Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, -74.3333333, 10.3333333, 0, 1), + (4, 'Tony Stark', '10880 Malibu Point', 'Gotham', 46460, 1, 1111111111, 222222222, 1 , 1104, 2, -74.4444444, 10.4444444, 0, 1), + (5, 'Max Eisenhardt', 'Unknown Whereabouts', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 1), + (6, 'DavidCharlesHaller', 'Evil hideout', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 1), + (7, 'Hank Pym', 'Anthill', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 1), + (8, 'Charles Xavier', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Gotham', 46460, 5, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 1), + (9, 'Bruce Banner', 'Somewhere in New York', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 1), + (10, 'Jessica Jones', 'NYCC 2015 Poster', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 1), + (11, 'Missing', 'The space', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1111, 10, NULL, NULL, 0, 1), + (12, 'Trash', 'New York city', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1112, 10, NULL, NULL, 0, 1), + (101, 'Somewhere in Thailand', 'address 01', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (102, 'Somewhere in Poland', 'address 02', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), + (103, 'Somewhere in Japan', 'address 03', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), + (104, 'Somewhere in Spain', 'address 04', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), + (105, 'Somewhere in Potugal', 'address 05', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (106, 'Somewhere in UK', 'address 06', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (107, 'Somewhere in Valencia', 'address 07', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (108, 'Somewhere in Gotham', 'address 08', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (109, 'Somewhere in London', 'address 09', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (110, 'Somewhere in Algemesi', 'address 10', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (111, 'Somewhere in Carlet', 'address 11', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (112, 'Somewhere in Campanar', 'address 12', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (113, 'Somewhere in Malilla', 'address 13', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (114, 'Somewhere in France', 'address 14', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (115, 'Somewhere in Birmingham', 'address 15', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (116, 'Somewhere in Scotland', 'address 16', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (117, 'Somewhere in nowhere', 'address 17', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (118, 'Somewhere over the rainbow', 'address 18', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (119, 'Somewhere in Alberic', 'address 19', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (120, 'Somewhere in Montortal', 'address 20', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (121, 'the bat cave', 'address 21', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 0), + (122, 'NY roofs', 'address 22', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 0), + (123, 'The phone box', 'address 23', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, -74.555555, 10.555555, 0, 0), + (124, 'Stark tower Gotham', 'address 24', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 0), + (125, 'The plastic cell', 'address 25', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 0), + (126, 'Many places', 'address 26', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 0), + (127, 'Your pocket', 'address 27', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 0), + (128, 'Cerebro', 'address 28', 'Gotham', 46460, 5, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 0), + (129, 'Luke Cages Bar', 'address 29', 'Gotham', 'EC170150', 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 0), + (130, 'Non valid address', 'address 30', 'Gotham', 46460, 1, 1111111111, 222222222, 0, 1101, 2, NULL, NULL, 0, 0); INSERT INTO `vn`.`address`( `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `isActive`, `clientFk`, `agencyModeFk`, `isDefaultAddress`) - SELECT name, CONCAT(name, 'Street'), 'GOTHAM', 46460, 1, 1, id, 2, 1 - FROM `account`.`role` `r` - WHERE `r`.`hasLogin` = 1; + SELECT name, CONCAT(name, 'Street'), 'GOTHAM', 46460, 1, 1, id, 2, 1 + FROM `account`.`role` `r` + WHERE `r`.`hasLogin` = 1; UPDATE `vn`.`client` SET defaultAddressFk = 1 WHERE id = 1101; UPDATE `vn`.`client` SET defaultAddressFk = 2 WHERE id = 1102; @@ -492,169 +492,169 @@ UPDATE `vn`.`client` SET defaultAddressFk = 12 WHERE id = 400; DROP TEMPORARY TABLE IF EXISTS tmp.address; CREATE TEMPORARY TABLE tmp.address - SELECT * FROM `vn`.`address`; + SELECT * FROM `vn`.`address`; - UPDATE `vn`.`client` `c` - JOIN `tmp`.`address` `a` ON `a`.`clientFk` = `c`.`id` +UPDATE `vn`.`client` `c` + JOIN `tmp`.`address` `a` ON `a`.`clientFk` = `c`.`id` SET `c`.`defaultAddressFk` = `a`.`id` - WHERE `defaultAddressFk` IS NULL; + WHERE `defaultAddressFk` IS NULL; DROP TEMPORARY TABLE tmp.address; INSERT INTO `vn`.`clientCredit`(`clientFk`, `workerFk`, `amount`, `created`) - VALUES - (1101, 5, 300, DATE_ADD(util.VN_CURDATE(), INTERVAL -11 MONTH)), - (1101, 5, 900, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 MONTH)), - (1101, 5, 800, DATE_ADD(util.VN_CURDATE(), INTERVAL -9 MONTH)), - (1101, 5, 700, DATE_ADD(util.VN_CURDATE(), INTERVAL -8 MONTH)), - (1101, 5, 600, DATE_ADD(util.VN_CURDATE(), INTERVAL -7 MONTH)), - (1101, 5, 500, DATE_ADD(util.VN_CURDATE(), INTERVAL -6 MONTH)), - (1101, 5, 400, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 MONTH)), - (1101, 9, 300, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), - (1101, 9, 200, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), - (1101, 9, 100, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), - (1101, 9, 50 , DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (1102, 9, 800, util.VN_CURDATE()), - (1104, 9, 90 , util.VN_CURDATE()), - (1105, 9, 90 , util.VN_CURDATE()); + VALUES + (1101, 5, 300, DATE_ADD(util.VN_CURDATE(), INTERVAL -11 MONTH)), + (1101, 5, 900, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 MONTH)), + (1101, 5, 800, DATE_ADD(util.VN_CURDATE(), INTERVAL -9 MONTH)), + (1101, 5, 700, DATE_ADD(util.VN_CURDATE(), INTERVAL -8 MONTH)), + (1101, 5, 600, DATE_ADD(util.VN_CURDATE(), INTERVAL -7 MONTH)), + (1101, 5, 500, DATE_ADD(util.VN_CURDATE(), INTERVAL -6 MONTH)), + (1101, 5, 400, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 MONTH)), + (1101, 9, 300, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), + (1101, 9, 200, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), + (1101, 9, 100, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), + (1101, 9, 50 , DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (1102, 9, 800, util.VN_CURDATE()), + (1104, 9, 90 , util.VN_CURDATE()), + (1105, 9, 90 , util.VN_CURDATE()); INSERT INTO `vn`.`roleCreditLimit`(`id`, `maxAmount`, `roleFk`) - VALUES - (1, 9999999, 20), - (2, 10000, 21), - (3, 600, 13); + VALUES + (1, 9999999, 20), + (2, 10000, 21), + (3, 600, 13); INSERT INTO `vn`.`clientObservation`(`id`, `clientFk`, `workerFk`, `text`, `created`) - VALUES - (1, 1101, 1, 'Madness, as you know, is like gravity, all it takes is a little push', util.VN_CURDATE()), - (2, 1102, 1, 'With great power, comes great responsibility', util.VN_CURDATE()), - (3, 1103, 3, 'this is a job for Super-Man!', util.VN_CURDATE()), - (4, 1104, 3, 'yes... I am Iron-Man', util.VN_CURDATE()), - (5, 1105, 5, 'They do understand. Our mutant powers make us superior', util.VN_CURDATE()), - (6, 1106, 5, 'My name is Legion, for we are many!', util.VN_CURDATE()), - (7, 1107, 9, 'I think our first move should be calling the Avengers..', util.VN_CURDATE()), - (8, 1108, 9, 'Just because someone stumbles and loses their path, does not mean they are lost forever.', util.VN_CURDATE()), - (9, 1109, 18, 'HULK SMASH! ...', util.VN_CURDATE()), - (10, 1110, 18, 'They say everyone is born a hero. But if you let it, life will push you over the line until you are the villain.', util.VN_CURDATE()); + VALUES + (1, 1101, 1, 'Madness, as you know, is like gravity, all it takes is a little push', util.VN_CURDATE()), + (2, 1102, 1, 'With great power, comes great responsibility', util.VN_CURDATE()), + (3, 1103, 3, 'this is a job for Super-Man!', util.VN_CURDATE()), + (4, 1104, 3, 'yes... I am Iron-Man', util.VN_CURDATE()), + (5, 1105, 5, 'They do understand. Our mutant powers make us superior', util.VN_CURDATE()), + (6, 1106, 5, 'My name is Legion, for we are many!', util.VN_CURDATE()), + (7, 1107, 9, 'I think our first move should be calling the Avengers..', util.VN_CURDATE()), + (8, 1108, 9, 'Just because someone stumbles and loses their path, does not mean they are lost forever.', util.VN_CURDATE()), + (9, 1109, 18, 'HULK SMASH! ...', util.VN_CURDATE()), + (10, 1110, 18, 'They say everyone is born a hero. But if you let it, life will push you over the line until you are the villain.', util.VN_CURDATE()); INSERT INTO `vn`.`observationType`(`id`,`description`, `code`) - VALUES - (1, 'ItemPicker', 'itemPicker'), - (2, 'Packager', 'packager'), - (3, 'Delivery', 'delivery'), - (4, 'SalesPerson', 'salesPerson'), - (5, 'Administrative', 'administrative'), - (6, 'Weight', 'weight'), - (7, 'InvoiceOut', 'invoiceOut'), - (8, 'DropOff', 'dropOff'), + VALUES + (1, 'ItemPicker', 'itemPicker'), + (2, 'Packager', 'packager'), + (3, 'Delivery', 'delivery'), + (4, 'SalesPerson', 'salesPerson'), + (5, 'Administrative', 'administrative'), + (6, 'Weight', 'weight'), + (7, 'InvoiceOut', 'invoiceOut'), + (8, 'DropOff', 'dropOff'), (9, 'Sustitución', 'substitution'), (10, 'Finance', 'finance'); INSERT INTO `vn`.`addressObservation`(`id`,`addressFk`,`observationTypeFk`,`description`) - VALUES - (1, 121, 1, 'under the floor'), - (2, 121, 2, 'wears leather and goes out at night'), - (3, 121, 3, 'care with the dog'), - (5, 122, 5, 'Delivery after 10am'); + VALUES + (1, 121, 1, 'under the floor'), + (2, 121, 2, 'wears leather and goes out at night'), + (3, 121, 3, 'care with the dog'), + (5, 122, 5, 'Delivery after 10am'); INSERT INTO `vn`.`creditClassification`(`id`, `client`, `dateStart`, `dateEnd`) - VALUES - (1, 1101, util.VN_CURDATE(), util.VN_CURDATE()), - (2, 1102, util.VN_CURDATE(), util.VN_CURDATE()), - (3, 1103, util.VN_CURDATE(), util.VN_CURDATE()), - (4, 1104, util.VN_CURDATE(), util.VN_CURDATE()), - (5, 1105, util.VN_CURDATE(), util.VN_CURDATE()); + VALUES + (1, 1101, util.VN_CURDATE(), util.VN_CURDATE()), + (2, 1102, util.VN_CURDATE(), util.VN_CURDATE()), + (3, 1103, util.VN_CURDATE(), util.VN_CURDATE()), + (4, 1104, util.VN_CURDATE(), util.VN_CURDATE()), + (5, 1105, util.VN_CURDATE(), util.VN_CURDATE()); INSERT INTO `vn`.`creditInsurance`(`id`, `creditClassificationFk`, `credit`, `creationDate`, `grade`) - VALUES - (1, 1, 3000, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL), - (2, 2, 6000, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL), - (3, 3, 10000, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL); + VALUES + (1, 1, 3000, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL), + (2, 2, 6000, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL), + (3, 3, 10000, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL); INSERT INTO `vn`.`companyGroup`(`id`, `code`) - VALUES - (1, 'wayneIndustries'), - (2, 'verdnatura'); + VALUES + (1, 'wayneIndustries'), + (2, 'verdnatura'); INSERT INTO `vn`.`supplierActivity`(`code`, `name`) - VALUES - ('animals', 'Food and complements for pets'), - ('complements', 'Other complements'), - ('flowerPlants', 'Wholesale of flowers and plants'), - ('vegetablesFruits', 'Fruit and vegetable trade'); + VALUES + ('animals', 'Food and complements for pets'), + ('complements', 'Other complements'), + ('flowerPlants', 'Wholesale of flowers and plants'), + ('vegetablesFruits', 'Fruit and vegetable trade'); INSERT INTO `vn`.`supplier`(`id`, `name`, `nickname`,`account`,`countryFk`,`nif`, `commission`, `created`, `isActive`, `street`, `city`, `provinceFk`, `postCode`, `payMethodFk`, `payDemFk`, `payDay`, `taxTypeSageFk`, `withholdingSageFk`, `transactionTypeSageFk`, `workerFk`, `supplierActivityFk`, `isPayMethodChecked`, `healthRegister`) - VALUES - (1, 'PLANTS SL', 'Plants nick', 4100000001, 1, '06089160W', 0, util.VN_CURDATE(), 1, 'supplier address 1', 'GOTHAM', 1, 46000, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'), - (2, 'FARMER KING', 'The farmer', 4000020002, 1, '87945234L', 0, util.VN_CURDATE(), 1, 'supplier address 2', 'GOTHAM', 2, 46000, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'), - (4, 'INVENTARIO', 'INVENTARIO', 4000000004, NULL, NULL, 0, util.VN_CURDATE(), 1, NULL, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL, NULL), - (69, 'PACKAGING', 'Packaging nick', 4100000069, 1, '94935005K', 0, util.VN_CURDATE(), 1, 'supplier address 5', 'ASGARD', 3, 46600, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'), - (442, 'VERDNATURA LEVANTE SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, util.VN_CURDATE(), 1, 'supplier address 3', 'GOTHAM', 1, 46000, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'), - (567, 'HOLLAND', 'Holland nick', 4000020567, 1, '14364089Z', 0, util.VN_CURDATE(), 1, 'supplier address 6', 'ASGARD', 3, 46600, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'), - (791, 'BROS SL', 'Bros nick', 5115000791, 1, '37718083S', 0, util.VN_CURDATE(), 1, 'supplier address 7', 'ASGARD', 3, 46600, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'), - (1381, 'ORNAMENTALES', 'Ornamentales', 7185001381, 1, '07972486L', 0, util.VN_CURDATE(), 1, 'supplier address 4', 'GOTHAM', 1, 46000, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'); + VALUES + (1, 'PLANTS SL', 'Plants nick', 4100000001, 1, '06089160W', 0, util.VN_CURDATE(), 1, 'supplier address 1', 'GOTHAM', 1, 46000, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'), + (2, 'FARMER KING', 'The farmer', 4000020002, 1, '87945234L', 0, util.VN_CURDATE(), 1, 'supplier address 2', 'GOTHAM', 2, 46000, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'), + (4, 'INVENTARIO', 'INVENTARIO', 4000000004, NULL, NULL, 0, util.VN_CURDATE(), 1, NULL, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL, NULL), + (69, 'PACKAGING', 'Packaging nick', 4100000069, 1, '94935005K', 0, util.VN_CURDATE(), 1, 'supplier address 5', 'ASGARD', 3, 46600, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'), + (442, 'VERDNATURA LEVANTE SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, util.VN_CURDATE(), 1, 'supplier address 3', 'GOTHAM', 1, 46000, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'), + (567, 'HOLLAND', 'Holland nick', 4000020567, 1, '14364089Z', 0, util.VN_CURDATE(), 1, 'supplier address 6', 'ASGARD', 3, 46600, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'), + (791, 'BROS SL', 'Bros nick', 5115000791, 1, '37718083S', 0, util.VN_CURDATE(), 1, 'supplier address 7', 'ASGARD', 3, 46600, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'), + (1381, 'ORNAMENTALES', 'Ornamentales', 7185001381, 1, '07972486L', 0, util.VN_CURDATE(), 1, 'supplier address 4', 'GOTHAM', 1, 46000, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'); INSERT INTO `vn`.`supplierAddress`(`id`, `supplierFk`, `nickname`, `street`, `provinceFk`, `postalCode`, `city`, `phone`, `mobile`) - VALUES - (1, 1, 'Ace Chemicals', 'The Midtown', 1, '46000', 'Gotham', '111111111', '222222222'), - (2, 1, 'Arkham Asylum', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), - (3, 2, 'Wayne Tower', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), - (4, 2, 'Bank of Gotham', 'Founders Island', 1, '46000', 'Gotham', '111111111', '222222222'), - (5, 442, 'GCR building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'), - (6, 442, 'The Gotham Tonight building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'); + VALUES + (1, 1, 'Ace Chemicals', 'The Midtown', 1, '46000', 'Gotham', '111111111', '222222222'), + (2, 1, 'Arkham Asylum', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), + (3, 2, 'Wayne Tower', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), + (4, 2, 'Bank of Gotham', 'Founders Island', 1, '46000', 'Gotham', '111111111', '222222222'), + (5, 442, 'GCR building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'), + (6, 442, 'The Gotham Tonight building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'); INSERT INTO `vn`.`supplierContact`(`id`, `supplierFk`, `phone`, `mobile`, `email`, `observation`, `name`) - VALUES - (1, 1, 123121212, 654789123, 'supplier1@email.es', 'observation1', 'the boss'), - (2, 1, 987456132, NULL, NULL, NULL, 'the salesperson'), - (3, 2, 321654987, NULL, 'supplier2@email.es', NULL, NULL), - (4, 442, 321654987, NULL, NULL, 'observation442', NULL); + VALUES + (1, 1, 123121212, 654789123, 'supplier1@email.es', 'observation1', 'the boss'), + (2, 1, 987456132, NULL, NULL, NULL, 'the salesperson'), + (3, 2, 321654987, NULL, 'supplier2@email.es', NULL, NULL), + (4, 442, 321654987, NULL, NULL, 'observation442', NULL); INSERT INTO `vn`.`supplierAccount`(`id`, `supplierFk`, `iban`, `bankEntityFk`) - VALUES - (241, 442, 'ES111122333344111122221111', 128); + VALUES + (241, 442, 'ES111122333344111122221111', 128); INSERT INTO `vn`.`company`(`id`, `code`, `supplierAccountFk`, `workerManagerFk`, `companyCode`, `expired`, `companyGroupFk`, `phytosanitary` , `clientFk`) - VALUES - (69 , 'CCs', NULL, 30, 0, NULL, 1, NULL , NULL), - (442 , 'VNL', 241, 30, 1, NULL, 2, 'VNL Company - Plant passport' , 1101), - (567 , 'VNH', NULL, 30, 4, NULL, 1, 'VNH Company - Plant passport' , NULL), - (791 , 'FTH', NULL, 30, 3, '2015-11-30', 1, NULL , NULL), - (1381, 'ORN', NULL, 30, 7, NULL, 1, 'ORN Company - Plant passport' , NULL); + VALUES + (69 , 'CCs', NULL, 30, 0, NULL, 1, NULL , NULL), + (442 , 'VNL', 241, 30, 1, NULL, 2, 'VNL Company - Plant passport' , 1101), + (567 , 'VNH', NULL, 30, 4, NULL, 1, 'VNH Company - Plant passport' , NULL), + (791 , 'FTH', NULL, 30, 3, '2015-11-30', 1, NULL , NULL), + (1381, 'ORN', NULL, 30, 7, NULL, 1, 'ORN Company - Plant passport' , NULL); INSERT INTO `vn`.`taxArea` (`code`, `claveOperacionFactura`, `CodigoTransaccion`) - VALUES - ('CEE', 1, 10), - ('EQU', 0, 1), - ('NATIONAL', 0, 1), - ('WORLD', 2, 15); + VALUES + ('CEE', 1, 10), + ('EQU', 0, 1), + ('NATIONAL', 0, 1), + ('WORLD', 2, 15); INSERT INTO vn.invoiceOutConfig - SET id = 1, - parallelism = 8; + SET id = 1, + parallelism = 8; INSERT INTO `vn`.`invoiceOutSerial` - (`code`,`description`, `isTaxed`, `taxAreaFk`, `isCEE`, `type`) - VALUES - ('A', 'Global nacional', 1, 'NATIONAL', 0, 'global'), - ('T', 'Española rapida', 1, 'NATIONAL', 0, 'quick'), - ('V', 'Intracomunitaria global', 0, 'CEE', 1, 'global'), - ('M', 'Múltiple nacional', 1, 'NATIONAL', 0, 'multiple'), - ('R', 'Rectificativa', 1, 'NATIONAL', 0, NULL), - ('E', 'Exportación rápida', 0, 'WORLD', 0, 'quick'), - ('H', 'Intracomunitaria rápida', 0, 'CEE', 1, 'quick'), - ('P', 'Factura simplificada', 1, 'NATIONAL', 0, NULL), - ('PE', 'COOPERATIE FLORAHOLLAND UA', 0, 'CEE', 1, NULL), - ('S', 'Simplificada', 1, 'NATIONAL', 0, NULL), - ('X', 'Exportación global', 0, 'WORLD', 0, 'global'), - ('N', 'Múltiple Intracomunitaria', 0, 'CEE', 1, 'multiple'); + (`code`,`description`, `isTaxed`, `taxAreaFk`, `isCEE`, `type`) + VALUES + ('A', 'Global nacional', 1, 'NATIONAL', 0, 'global'), + ('T', 'Española rapida', 1, 'NATIONAL', 0, 'quick'), + ('V', 'Intracomunitaria global', 0, 'CEE', 1, 'global'), + ('M', 'Múltiple nacional', 1, 'NATIONAL', 0, 'multiple'), + ('R', 'Rectificativa', 1, 'NATIONAL', 0, NULL), + ('E', 'Exportación rápida', 0, 'WORLD', 0, 'quick'), + ('H', 'Intracomunitaria rápida', 0, 'CEE', 1, 'quick'), + ('P', 'Factura simplificada', 1, 'NATIONAL', 0, NULL), + ('PE', 'COOPERATIE FLORAHOLLAND UA', 0, 'CEE', 1, NULL), + ('S', 'Simplificada', 1, 'NATIONAL', 0, NULL), + ('X', 'Exportación global', 0, 'WORLD', 0, 'global'), + ('N', 'Múltiple Intracomunitaria', 0, 'CEE', 1, 'multiple'); INSERT INTO `vn`.`invoiceOut`(`id`, `serial`, `amount`, `issued`,`clientFk`, `created`, `companyFk`, `dued`, `booked`, `bankFk`, `hasPdf`) - VALUES - (1, 'T', 1026.24, util.VN_CURDATE(), 1101, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), - (2, 'T', 121.36, util.VN_CURDATE(), 1102, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), - (3, 'T', 8.88, util.VN_CURDATE(), 1103, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), - (4, 'T', 8.88, util.VN_CURDATE(), 1104, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), - (5, 'A', 8.88, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 442, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 0); + VALUES + (1, 'T', 1026.24, util.VN_CURDATE(), 1101, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (2, 'T', 121.36, util.VN_CURDATE(), 1102, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (3, 'T', 8.88, util.VN_CURDATE(), 1103, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (4, 'T', 8.88, util.VN_CURDATE(), 1104, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (5, 'A', 8.88, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 442, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 0); UPDATE `vn`.`invoiceOut` SET ref = 'T1111111' WHERE id = 1; UPDATE `vn`.`invoiceOut` SET ref = 'T2222222' WHERE id = 2; @@ -663,860 +663,860 @@ UPDATE `vn`.`invoiceOut` SET ref = 'T4444444' WHERE id = 4; UPDATE `vn`.`invoiceOut` SET ref = 'A1111111' WHERE id = 5; INSERT INTO `vn`.`invoiceOutTax` (`invoiceOutFk`, `taxableBase`, `vat`, `pgcFk`) - VALUES - (1, 895.76, 89.58, 4722000010), - (1, 33.80, 7.10, 4722000021), - (2, 110.33, 11.03, 4770000010), - (3, 8.07, 0.81, 4770000010), - (4, 8.07, 0.81, 4770000010), - (5, 8.07, 0.81, 4770000010); + VALUES + (1, 895.76, 89.58, 4722000010), + (1, 33.80, 7.10, 4722000021), + (2, 110.33, 11.03, 4770000010), + (3, 8.07, 0.81, 4770000010), + (4, 8.07, 0.81, 4770000010), + (5, 8.07, 0.81, 4770000010); INSERT INTO `vn`.`expense`(`id`, `name`, `isWithheld`) - VALUES - (2000000000, 'Inmovilizado pendiente', 0), - (2000000001, 'Compra de bienes de inmovilizado', 0), - (4751000000, 'Retenciones', 1), - (4751000001, 'Retencion', 0), - (6210000567, 'Alquiler VNH', 0), - (6240000000, 'Transportes de ventas rutas', 0), - (7001000000, 'Mercaderia', 0), - (7050000000, 'Prestacion de servicios', 1); + VALUES + (2000000000, 'Inmovilizado pendiente', 0), + (2000000001, 'Compra de bienes de inmovilizado', 0), + (4751000000, 'Retenciones', 1), + (4751000001, 'Retencion', 0), + (6210000567, 'Alquiler VNH', 0), + (6240000000, 'Transportes de ventas rutas', 0), + (7001000000, 'Mercaderia', 0), + (7050000000, 'Prestacion de servicios', 1); INSERT INTO `vn`.`agencyTermConfig` VALUES ('6240000000','4721000015',21.0000000000,'Adquisiciones intracomunitarias de servicios'); INSERT INTO `vn`.`invoiceOutExpense`(`id`, `invoiceOutFk`, `amount`, `expenseFk`, `created`) - VALUES - (1, 1, 813.06, 2000000000, util.VN_CURDATE()), - (2, 1, 33.80, 4751000000, util.VN_CURDATE()), - (3, 1, 70.70, 6210000567, util.VN_CURDATE()), - (4, 2, 110.33, 2000000000, util.VN_CURDATE()), - (5, 3, 8.07, 2000000000, util.VN_CURDATE()), - (6, 4, 8.07, 2000000000, util.VN_CURDATE()), - (7, 5, 8.07, 2000000000, util.VN_CURDATE()); + VALUES + (1, 1, 813.06, 2000000000, util.VN_CURDATE()), + (2, 1, 33.80, 4751000000, util.VN_CURDATE()), + (3, 1, 70.70, 6210000567, util.VN_CURDATE()), + (4, 2, 110.33, 2000000000, util.VN_CURDATE()), + (5, 3, 8.07, 2000000000, util.VN_CURDATE()), + (6, 4, 8.07, 2000000000, util.VN_CURDATE()), + (7, 5, 8.07, 2000000000, util.VN_CURDATE()); INSERT INTO `vn`.`zone` (`id`, `name`, `hour`, `agencyModeFk`, `travelingDays`, `price`, `bonus`, `itemMaxSize`) - VALUES - (1, 'Zone pickup A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), - (2, 'Zone pickup B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), - (3, 'Zone 247 A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), - (4, 'Zone 247 B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), - (5, 'Zone expensive A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), - (6, 'Zone expensive B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), - (7, 'Zone refund', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 23, 0, 1, 0, 100), - (8, 'Zone others', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 10, 0, 1, 0, 100), - (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 2, 0, 1, 0, 100), - (10, 'Zone teleportation', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 3, 0, 1, 0, 100), - (11, 'Zone pickup C', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), - (12, 'Zone entanglement', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 4, 0, 1, 0, 100), - (13, 'Zone quantum break', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 5, 0, 1, 0, 100); + VALUES + (1, 'Zone pickup A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), + (2, 'Zone pickup B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), + (3, 'Zone 247 A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), + (4, 'Zone 247 B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), + (5, 'Zone expensive A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), + (6, 'Zone expensive B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), + (7, 'Zone refund', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 23, 0, 1, 0, 100), + (8, 'Zone others', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 10, 0, 1, 0, 100), + (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 2, 0, 1, 0, 100), + (10, 'Zone teleportation', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 3, 0, 1, 0, 100), + (11, 'Zone pickup C', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100), + (12, 'Zone entanglement', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 4, 0, 1, 0, 100), + (13, 'Zone quantum break', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 5, 0, 1, 0, 100); INSERT INTO `vn`.`zoneWarehouse` (`id`, `zoneFk`, `warehouseFk`) - VALUES - (1, 1, 1), - (2, 2, 2), - (3, 3, 1), - (4, 4, 2), - (5, 5, 1), - (6, 6, 2), - (7, 7, 1), - (8, 8, 1), - (9, 9, 1), - (10, 10, 3), - (11, 11, 5), - (12, 12, 4), - (13, 13, 5); + VALUES + (1, 1, 1), + (2, 2, 2), + (3, 3, 1), + (4, 4, 2), + (5, 5, 1), + (6, 6, 2), + (7, 7, 1), + (8, 8, 1), + (9, 9, 1), + (10, 10, 3), + (11, 11, 5), + (12, 12, 4), + (13, 13, 5); INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`) - VALUES - (1, util.VN_CURDATE(), '23:59'), - (2, util.VN_CURDATE(), '23:59'), - (3, util.VN_CURDATE(), '23:59'), - (4, util.VN_CURDATE(), '23:59'), - (5, util.VN_CURDATE(), '23:59'), - (6, util.VN_CURDATE(), '23:59'), - (7, util.VN_CURDATE(), '23:59'), - (8, util.VN_CURDATE(), '23:59'), - (9, util.VN_CURDATE(), '23:59'), - (10, util.VN_CURDATE(), '23:59'), - (11, util.VN_CURDATE(), '23:59'), - (12, util.VN_CURDATE(), '23:59'), - (13, util.VN_CURDATE(), '23:59'); + VALUES + (1, util.VN_CURDATE(), '23:59'), + (2, util.VN_CURDATE(), '23:59'), + (3, util.VN_CURDATE(), '23:59'), + (4, util.VN_CURDATE(), '23:59'), + (5, util.VN_CURDATE(), '23:59'), + (6, util.VN_CURDATE(), '23:59'), + (7, util.VN_CURDATE(), '23:59'), + (8, util.VN_CURDATE(), '23:59'), + (9, util.VN_CURDATE(), '23:59'), + (10, util.VN_CURDATE(), '23:59'), + (11, util.VN_CURDATE(), '23:59'), + (12, util.VN_CURDATE(), '23:59'), + (13, util.VN_CURDATE(), '23:59'); INSERT INTO `vn`.`zoneConfig` (`id`, `scope`) VALUES (1, '1'); INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`, `dated`) - VALUES - (1, '1899-12-30 12:15:00', 56, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()), - (2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE()), - (3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10, util.VN_CURDATE()), - (4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12, util.VN_CURDATE()), - (5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13, util.VN_CURDATE()), - (6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3, util.VN_CURDATE()), - (7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5, util.VN_CURDATE()); + VALUES + (1, '1899-12-30 12:15:00', 56, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1, util.VN_CURDATE()), + (2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9, util.VN_CURDATE()), + (3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10, util.VN_CURDATE()), + (4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12, util.VN_CURDATE()), + (5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13, util.VN_CURDATE()), + (6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3, util.VN_CURDATE()), + (7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5, util.VN_CURDATE()); INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`, `weight`, `cmrFk`, `problem`, `risk`) - VALUES - (1 , 3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 121, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 'hasHighRisk', 901.4), - (2 , 1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 1, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 2, 'hasHighRisk', 901.4), - (3 , 1, 7, 1, 6, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL, 3, NULL, NULL), - (4 , 3, 2, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 9, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL, NULL, NULL, NULL), - (5 , 3, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), NULL, NULL, NULL, NULL), - (6 , 1, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, NULL, 'hasHighRisk', 901.4), - (7 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), - (8 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Bat cave', 121, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), - (9 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (10, 1, 1, 5, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'Ingram Street', 2, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isTooLittle', NULL), - (11, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasTicketRequest', NULL), - (12, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (13, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (14, 1, 2, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1104, 'Malibu Point', 4, NULL, 0, 9, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (15, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 'An incredibly long alias for testing purposes', 125, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isFreezed', NULL), - (16, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 388.7), - (17, 1, 7, 2, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 388.7), - (18, 1, 4, 4, 4, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 'Cerebro', 128, NULL, 0, 12, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +12 HOUR), NULL, NULL, 'isFreezed', NULL), - (19, 1, 5, 5, NULL, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 1, NULL, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isTaxDataChecked', NULL), - (20, 1, 5, 5, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL), - (21, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Holland', 102, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL), - (22, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Japan', 103, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL), - (23, NULL, 8, 1, 7, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'address 21', 121, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasTicketRequest, hasHighRisk', 901.4), - (24 ,NULL, 8, 1, 7, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), - (25 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), - (26 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'An incredibly long alias for testing purposes', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), - (27 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 901.4), - (28, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (29, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (30, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (31, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (32, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (33, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (34, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1103, 'BEJAR', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL); + VALUES + (1 , 3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 121, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 'hasHighRisk', 901.4), + (2 , 1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 1, NULL, 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 2, 'hasHighRisk', 901.4), + (3 , 1, 7, 1, 6, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL, 3, NULL, NULL), + (4 , 3, 2, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 9, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL, NULL, NULL, NULL), + (5 , 3, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), NULL, NULL, NULL, NULL), + (6 , 1, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, NULL, 'hasHighRisk', 901.4), + (7 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), + (8 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Bat cave', 121, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), + (9 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (10, 1, 1, 5, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'Ingram Street', 2, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isTooLittle', NULL), + (11, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasTicketRequest', NULL), + (12, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (13, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (14, 1, 2, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1104, 'Malibu Point', 4, NULL, 0, 9, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (15, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 'An incredibly long alias for testing purposes', 125, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isFreezed', NULL), + (16, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 388.7), + (17, 1, 7, 2, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 388.7), + (18, 1, 4, 4, 4, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 'Cerebro', 128, NULL, 0, 12, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +12 HOUR), NULL, NULL, 'isFreezed', NULL), + (19, 1, 5, 5, NULL, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 1, NULL, 5, 1, util.VN_CURDATE(), NULL, NULL, 'isTaxDataChecked', NULL), + (20, 1, 5, 5, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL), + (21, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Holland', 102, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL), + (22, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Japan', 103, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), NULL, NULL, 'isTaxDataChecked', NULL), + (23, NULL, 8, 1, 7, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'address 21', 121, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasTicketRequest, hasHighRisk', 901.4), + (24 ,NULL, 8, 1, 7, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 5, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), + (25 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), + (26 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'An incredibly long alias for testing purposes', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, 'hasHighRisk', 901.4), + (27 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, 901.4), + (28, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (29, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (30, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (31, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (32, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (33, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (34, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1103, 'BEJAR', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL); INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`) - VALUES - (1, 11, 1, 'ready'), - (2, 2, 2, 'do it fast please'), - (3, 3, 5, 'Faster faster fasteeeeeer!!!'), - (4, 4, 5, 'Deliver before 8am'), - (5, 13, 5, 'You can run from the disappointments you are trying to forget. But its only when you embrace your past that you truly move forward. Maybe I never get to go home again, but I found my way there. And I am glad I did.'), - (6, 14, 5, 'Careful, armed warhead'), - (7, 23, 1, 'under the floor'), - (8, 23, 2, 'wears leather and goes out at night'), - (9, 23, 5, 'care with the dog'), - (10, 23, 4, 'Reclama ticket: 8'), - (11, 24, 4, 'Reclama ticket: 7'), - (12, 11, 3, 'Delivery after 10am'), - (13, 1, 7, 'observation of ticket one'), - (14, 2, 7, 'observation of ticket two'); + VALUES + (1, 11, 1, 'ready'), + (2, 2, 2, 'do it fast please'), + (3, 3, 5, 'Faster faster fasteeeeeer!!!'), + (4, 4, 5, 'Deliver before 8am'), + (5, 13, 5, 'You can run from the disappointments you are trying to forget. But its only when you embrace your past that you truly move forward. Maybe I never get to go home again, but I found my way there. And I am glad I did.'), + (6, 14, 5, 'Careful, armed warhead'), + (7, 23, 1, 'under the floor'), + (8, 23, 2, 'wears leather and goes out at night'), + (9, 23, 5, 'care with the dog'), + (10, 23, 4, 'Reclama ticket: 8'), + (11, 24, 4, 'Reclama ticket: 7'), + (12, 11, 3, 'Delivery after 10am'), + (13, 1, 7, 'observation of ticket one'), + (14, 2, 7, 'observation of ticket two'); -- FIX for state hours on local, inter_afterInsert -- UPDATE vncontrol.inter SET odbc_date = DATE_ADD(util.VN_CURDATE(), INTERVAL -10 SECOND); INSERT INTO `vn`.`ticketTracking`(`ticketFk`, `stateFk`, `userFk`, `created`) - VALUES - (1, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), - (2, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), - (3, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -2 MONTH)), - (4, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -3 MONTH)), - (5, 16, 18, DATE_ADD(util.VN_NOW(), INTERVAL -4 MONTH)), - (6, 16, 18, DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), - (7, 10, 18, util.VN_NOW()), - (8, 5, 19, util.VN_NOW()), - (9, 5, 19, util.VN_NOW()), - (10, 5, 19, util.VN_NOW()), - (11, 3, 19, util.VN_NOW()), - (12, 3, 19, util.VN_NOW()), - (13, 3, 19, util.VN_NOW()), - (14, 3, 19, util.VN_NOW()), - (15, 10, 19, util.VN_NOW()), - (16, 3, 19, util.VN_NOW()), - (17, 2, 19, util.VN_NOW()), - (37, 10, 19, util.VN_NOW()), - (19, 2, 19, util.VN_NOW()), - (20, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), - (21, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), - (22, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), - (23, 16, 21, util.VN_NOW()), - (24, 16, 21, util.VN_NOW()), - (34, 14, 49, util.VN_NOW()), - (35, 14, 18, util.VN_NOW()), - (36, 14, 18, util.VN_NOW()); + VALUES + (1, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), + (2, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), + (3, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -2 MONTH)), + (4, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -3 MONTH)), + (5, 16, 18, DATE_ADD(util.VN_NOW(), INTERVAL -4 MONTH)), + (6, 16, 18, DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), + (7, 10, 18, util.VN_NOW()), + (8, 5, 19, util.VN_NOW()), + (9, 5, 19, util.VN_NOW()), + (10, 5, 19, util.VN_NOW()), + (11, 3, 19, util.VN_NOW()), + (12, 3, 19, util.VN_NOW()), + (13, 3, 19, util.VN_NOW()), + (14, 3, 19, util.VN_NOW()), + (15, 10, 19, util.VN_NOW()), + (16, 3, 19, util.VN_NOW()), + (17, 2, 19, util.VN_NOW()), + (37, 10, 19, util.VN_NOW()), + (19, 2, 19, util.VN_NOW()), + (20, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), + (21, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), + (22, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), + (23, 16, 21, util.VN_NOW()), + (24, 16, 21, util.VN_NOW()), + (34, 14, 49, util.VN_NOW()), + (35, 14, 18, util.VN_NOW()), + (36, 14, 18, util.VN_NOW()); INSERT INTO `vn`.`deliveryPoint` (`id`, `name`, `ubication`) - VALUES - (1, 'Gotham','1007 Mountain Drive, Gotham'); + VALUES + (1, 'Gotham','1007 Mountain Drive, Gotham'); INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`) - VALUES - (1, '3333-BAT', 'WAYNE INDUSTRIES', 'BATMOBILE', 442, 1, 'The ultimate war machine', 50, 1, 1), - (2, '1111-IMK', 'STARK INDUSTRIES', 'MARK-III', 442, 1, 'Iron-Man Heavy Armor MARK-III', 18, 1, 1), - (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1, 1), - (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1, 1), - (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1, 1), - (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1); + VALUES + (1, '3333-BAT', 'WAYNE INDUSTRIES', 'BATMOBILE', 442, 1, 'The ultimate war machine', 50, 1, 1), + (2, '1111-IMK', 'STARK INDUSTRIES', 'MARK-III', 442, 1, 'Iron-Man Heavy Armor MARK-III', 18, 1, 1), + (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1, 1), + (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1, 1), + (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1, 1), + (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1); INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`, `inventoried`) - VALUES - (1, 'beta-server', 'nightmare@mydomain.com', '200', DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH)); + VALUES + (1, 'beta-server', 'nightmare@mydomain.com', '200', DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH)); INSERT INTO `vn`.`greugeType`(`id`, `name`, `code`) - VALUES - (1, 'Diff', 'diff'), - (2, 'Recovery', 'recovery'), - (3, 'Mana', 'mana'), - (4, 'Claim', 'claim'), - (5, 'Heritage', 'heritage'), - (6, 'Miscellaneous', 'miscellaneous'), - (7, 'Freight Pickup', 'freightPickUp'); + VALUES + (1, 'Diff', 'diff'), + (2, 'Recovery', 'recovery'), + (3, 'Mana', 'mana'), + (4, 'Claim', 'claim'), + (5, 'Heritage', 'heritage'), + (6, 'Miscellaneous', 'miscellaneous'), + (7, 'Freight Pickup', 'freightPickUp'); INSERT INTO `vn`.`greuge`(`id`, `clientFk`, `description`, `amount`, `shipped`, `created`, `greugeTypeFk`, `ticketFk`) - VALUES - (1, 1101, 'some diff charges', -19.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 1, 1), - (2, 1101, 'more diff charges', 60, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 2, 1), - (3, 1101, 'even more! diff charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 3, 1), - (4, 1101, 'insane diff charges', 60, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 4, 1), - (5, 1101, 'gargantuous diff charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 5, 1), - (6, 1101, 'diff charges', 88.30, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 6, 1), - (7, 1101, 'unaffordable diff charges', -39.12, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 1, 1), - (8, 1101, 'some recovery charges', 29.35, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 2, 1), - (9, 1101, 'some manna charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 3, 1), - (10, 1101, 'some claim charges', 13.13, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 4, 1), - (11, 1101, 'some heritage charges', -15.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 5, 1), - (12, 1101, 'some miscellaneous charges', 58.00, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 6, 1); + VALUES + (1, 1101, 'some diff charges', -19.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 1, 1), + (2, 1101, 'more diff charges', 60, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 2, 1), + (3, 1101, 'even more! diff charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 3, 1), + (4, 1101, 'insane diff charges', 60, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 4, 1), + (5, 1101, 'gargantuous diff charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 5, 1), + (6, 1101, 'diff charges', 88.30, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 6, 1), + (7, 1101, 'unaffordable diff charges', -39.12, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 1, 1), + (8, 1101, 'some recovery charges', 29.35, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 2, 1), + (9, 1101, 'some manna charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 3, 1), + (10, 1101, 'some claim charges', 13.13, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 4, 1), + (11, 1101, 'some heritage charges', -15.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 5, 1), + (12, 1101, 'some miscellaneous charges', 58.00, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 6, 1); INSERT INTO `vn`.`mandate`(`id`, `clientFk`, `companyFk`, `code`, `created`, `mandateTypeFk`) - VALUES - (1, 1102, 442, '1-1', util.VN_CURDATE(), 2); + VALUES + (1, 1102, 442, '1-1', util.VN_CURDATE(), 2); INSERT INTO `vn`.`itemCategory`(`id`, `name`, `display`, `color`, `icon`, `code`) - VALUES - (1, 'Plant', 1, 'B92A26', 'icon-plant', 'plant'), - (2, 'Flower', 2, 'dcf711', 'icon-flower', 'flower'), - (3, 'Logistic', 0, 'b9f711', NULL, 'logistical'), - (4, 'Handmade', 1, NULL, 'icon-handmade', 'handmade'), - (5, 'Artificial', 1, NULL, 'icon-artificial', 'artificial'), - (6, 'Green', 1, NULL, 'icon-greenery', 'greenery'), - (7, 'Accessories', 1, NULL, 'icon-accessory', 'accessory'), - (8, 'Fruit', 1, NULL, 'icon-fruit', 'fruit'); + VALUES + (1, 'Plant', 1, 'B92A26', 'icon-plant', 'plant'), + (2, 'Flower', 2, 'dcf711', 'icon-flower', 'flower'), + (3, 'Logistic', 0, 'b9f711', NULL, 'logistical'), + (4, 'Handmade', 1, NULL, 'icon-handmade', 'handmade'), + (5, 'Artificial', 1, NULL, 'icon-artificial', 'artificial'), + (6, 'Green', 1, NULL, 'icon-greenery', 'greenery'), + (7, 'Accessories', 1, NULL, 'icon-accessory', 'accessory'), + (8, 'Fruit', 1, NULL, 'icon-fruit', 'fruit'); INSERT INTO `vn`.`temperature`(`code`, `name`, `description`) - VALUES - ('warm', 'Warm', 'Warm'), - ('cool', 'Cool', 'Cool'); + VALUES + ('warm', 'Warm', 'Warm'), + ('cool', 'Cool', 'Cool'); INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `life`, `workerFk`, `isPackaging`, `temperatureFk`, `isFragile`) - VALUES - (1, 'CRI', 'Crisantemo', 2, 31, 35, 0, 'cool', 0), - (2, 'ITG', 'Anthurium', 1, 31, 35, 0, 'cool', 1), - (3, 'WPN', 'Paniculata', 2, 31, 35, 0, 'cool', 0), - (4, 'PRT', 'Delivery ports', 3, NULL, 35, 1, 'warm', 0), - (5, 'CON', 'Container', 3, NULL, 35, 1, 'warm', 0), - (6, 'ALS', 'Alstroemeria', 1, 31, 16, 0, 'warm', 1); + VALUES + (1, 'CRI', 'Crisantemo', 2, 31, 35, 0, 'cool', 0), + (2, 'ITG', 'Anthurium', 1, 31, 35, 0, 'cool', 1), + (3, 'WPN', 'Paniculata', 2, 31, 35, 0, 'cool', 0), + (4, 'PRT', 'Delivery ports', 3, NULL, 35, 1, 'warm', 0), + (5, 'CON', 'Container', 3, NULL, 35, 1, 'warm', 0), + (6, 'ALS', 'Alstroemeria', 1, 31, 16, 0, 'warm', 1); INSERT INTO `vn`.`ink`(`id`, `name`, `picture`, `showOrder`, `hex`) - VALUES - ('YEL', 'Yellow', 1, 1, 'F4D03F'), - ('BLU', 'Blue', 1, 2, '5DADE2'), - ('RED', 'Red', 1, 3, 'EC7063'), - ('SLV', 'Silver', 1, 4, 'CACFD2'), - ('BRW', 'Brown', 1, 5, 'DC7633'), - ('BLK', 'Black', 1, 6, '000000'), - ('BAS', 'Blue/Silver', 1, 7, '5DADE2'), - ('GRN', 'Green', 1, 8, '28A745'), - ('WHT', 'White', 1, 9, 'FFFFFF'); + VALUES + ('YEL', 'Yellow', 1, 1, 'F4D03F'), + ('BLU', 'Blue', 1, 2, '5DADE2'), + ('RED', 'Red', 1, 3, 'EC7063'), + ('SLV', 'Silver', 1, 4, 'CACFD2'), + ('BRW', 'Brown', 1, 5, 'DC7633'), + ('BLK', 'Black', 1, 6, '000000'), + ('BAS', 'Blue/Silver', 1, 7, '5DADE2'), + ('GRN', 'Green', 1, 8, '28A745'), + ('WHT', 'White', 1, 9, 'FFFFFF'); INSERT INTO `vn`.`origin`(`id`,`code`, `name`) - VALUES - (1, 'SPA', 'Spain'), - (2, 'HOL', 'Holand'), - (3, 'VLC', 'Valencia'); + VALUES + (1, 'SPA', 'Spain'), + (2, 'HOL', 'Holand'), + (3, 'VLC', 'Valencia'); INSERT INTO `vn`.`producer`(`id`, `name`) - VALUES - (1, 'Marvel Studios'), - (2, 'Nordic Mythology'); + VALUES + (1, 'Marvel Studios'), + (2, 'Nordic Mythology'); INSERT INTO `vn`.`taxType`(`id`, `nickname`, `isAccrued`, `serial`, `TIPOOPE`, `description`, `countryFk`) - VALUES - (1, 'National', 1, 'R', 'I', 'national VAT', 1), - (2, 'European', 0, 'E', 'I', 'europe VAT', 1); + VALUES + (1, 'National', 1, 'R', 'I', 'national VAT', 1), + (2, 'European', 0, 'E', 'I', 'europe VAT', 1); INSERT INTO `vn`.`taxCode`(`id`, `dated`, `code`, `taxTypeFk`, `rate`, `equalizationTax`, `type`, `link`, `isActive`, `updated`, `transactionCode`) - VALUES - (1 , util.VN_CURDATE(), '1111111111', 1, 7.0 , 0.0, 'R', 1, 1, util.VN_CURDATE(), 1), - (2 , util.VN_CURDATE(), '2222222222', 2, 16.0, 0.0, 'G', 2, 1, util.VN_CURDATE(), 1), - (21 , util.VN_CURDATE(), '3333333333', 1, 7.0, 0.0, 'R', 3, 1, util.VN_CURDATE(), 1), - (108, util.VN_CURDATE(), '4444444444', 2, 8.0 , 0.0, 'R', 4, 1, util.VN_CURDATE(), 1); + VALUES + (1 , util.VN_CURDATE(), '1111111111', 1, 7.0 , 0.0, 'R', 1, 1, util.VN_CURDATE(), 1), + (2 , util.VN_CURDATE(), '2222222222', 2, 16.0, 0.0, 'G', 2, 1, util.VN_CURDATE(), 1), + (21 , util.VN_CURDATE(), '3333333333', 1, 7.0, 0.0, 'R', 3, 1, util.VN_CURDATE(), 1), + (108, util.VN_CURDATE(), '4444444444', 2, 8.0 , 0.0, 'R', 4, 1, util.VN_CURDATE(), 1); INSERT INTO `vn`.`taxClass`(`id`, `description`, `code`) - VALUES - (1, 'Reduced VAT', 'R'), - (2, 'General VAT', 'G'); + VALUES + (1, 'Reduced VAT', 'R'), + (2, 'General VAT', 'G'); INSERT INTO `vn`.`taxClassCode`(`taxClassFk`, `effectived`, `taxCodeFk`) - VALUES - (1, util.VN_CURDATE(), 1), - (1, util.VN_CURDATE(), 21), - (2, util.VN_CURDATE(), 2); + VALUES + (1, util.VN_CURDATE(), 1), + (1, util.VN_CURDATE(), 21), + (2, util.VN_CURDATE(), 2); INSERT INTO `vn`.`intrastat`(`id`, `description`, `taxClassFk`, `taxCodeFk`) - VALUES - (05080000, 'Coral y materiales similares', 2, 2), - (06021010, 'Plantas vivas: Esqueje/injerto, Vid', 1, 1); + VALUES + (05080000, 'Coral y materiales similares', 2, 2), + (06021010, 'Plantas vivas: Esqueje/injerto, Vid', 1, 1); INSERT INTO `vn`.`itemFamily`(`code`, `description`) - VALUES - ('EMB', 'Packagings'), - ('SER', 'Services'), - ('VT', 'Sales'); + VALUES + ('EMB', 'Packagings'), + ('SER', 'Services'), + ('VT', 'Sales'); INSERT INTO `vn`.`item`(`id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`, - `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `weightByPiece`) - VALUES - (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3), - (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2), - (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5), - (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), - (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), - (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL), - (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), - (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), - (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), - (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL); + `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `weightByPiece`) + VALUES + (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3), + (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2), + (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5), + (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), + (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL), + (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL), + (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL), + (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), + (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL), + (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL); -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 - WHERE `itemFk` IN(4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 71); + WHERE `itemFk` IN(4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 71); INSERT INTO `vn`.`priceFixed`(`id`, `itemFk`, `rate0`, `rate1`, `rate2`, `rate3`, `started`, `ended`, `bonus`, `warehouseFk`, `created`) - VALUES - (1, 1, 0, 0, 2.5, 2, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 0, 1, util.VN_CURDATE()), - (2, 3, 10, 10, 10, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 0, 1, util.VN_CURDATE()), - (3, 13, 8.5, 10, 7.5, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 1, 2, util.VN_CURDATE()); + VALUES + (1, 1, 0, 0, 2.5, 2, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 0, 1, util.VN_CURDATE()), + (2, 3, 10, 10, 10, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 0, 1, util.VN_CURDATE()), + (3, 13, 8.5, 10, 7.5, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 1, 2, util.VN_CURDATE()); INSERT INTO `vn`.`itemMinimumQuantity`(`itemFk`, `quantity`, `started`, `ended`, `warehouseFk`) - VALUES - (1, 5, util.VN_CURDATE() - INTERVAL 2 MONTH, util.VN_CURDATE() + INTERVAL 1 MONTH, 1), - (2, 10, util.VN_CURDATE() - INTERVAL 2 DAY, util.VN_CURDATE() - INTERVAL 1 DAY, 2), - (3, 15, util.VN_CURDATE() + INTERVAL 3 DAY, util.VN_CURDATE() + INTERVAL 2 WEEK, 3), - (2, 10, util.VN_CURDATE() + INTERVAL 2 MONTH, NULL, 5), - (4, 8, util.VN_CURDATE() - INTERVAL 3 MONTH, NULL, NULL); + VALUES + (1, 5, util.VN_CURDATE() - INTERVAL 2 MONTH, util.VN_CURDATE() + INTERVAL 1 MONTH, 1), + (2, 10, util.VN_CURDATE() - INTERVAL 2 DAY, util.VN_CURDATE() - INTERVAL 1 DAY, 2), + (3, 15, util.VN_CURDATE() + INTERVAL 3 DAY, util.VN_CURDATE() + INTERVAL 2 WEEK, 3), + (2, 10, util.VN_CURDATE() + INTERVAL 2 MONTH, NULL, 5), + (4, 8, util.VN_CURDATE() - INTERVAL 3 MONTH, NULL, NULL); INSERT INTO `vn`.`expeditionBoxVol`(`boxFk`, `m3`, `ratio`) - VALUES - (71,0.141,1); + VALUES + (71,0.141,1); INSERT INTO `vn`.`packaging`(`id`, `volume`, `width`, `height`, `depth`, `isPackageReturnable`, `created`, `itemFk`, `price`) - VALUES - (1, 0.00, 10, 10, 0, 1, util.VN_CURDATE(), 6, 1.50), - (2, 100.00, 20, 20, 0, 1, util.VN_CURDATE(), 7, 1.00), - (3, 14000.00, 0, 0, 0, 1, util.VN_CURDATE(), NULL, 0), - (4, 218000.00, 0, 0, 0, 0, util.VN_CURDATE(), NULL, 0), - (5, 292000.00, 0, 0, 0, 0, util.VN_CURDATE(), NULL, 0), - (94, 140875.00, 49.00, 115.00, 25.00, 0, util.VN_CURDATE(), 71, 0.00), - ('cc', 1640038.00, 56.00, 220.00, 128.00, 1, util.VN_CURDATE(), 15, 90.00), - ('pallet 100', 2745600.00, 100.00, 220.00, 120.00, 1, util.VN_CURDATE(), 16, 0.00); + VALUES + (1, 0.00, 10, 10, 0, 1, util.VN_CURDATE(), 6, 1.50), + (2, 100.00, 20, 20, 0, 1, util.VN_CURDATE(), 7, 1.00), + (3, 14000.00, 0, 0, 0, 1, util.VN_CURDATE(), NULL, 0), + (4, 218000.00, 0, 0, 0, 0, util.VN_CURDATE(), NULL, 0), + (5, 292000.00, 0, 0, 0, 0, util.VN_CURDATE(), NULL, 0), + (94, 140875.00, 49.00, 115.00, 25.00, 0, util.VN_CURDATE(), 71, 0.00), + ('cc', 1640038.00, 56.00, 220.00, 128.00, 1, util.VN_CURDATE(), 15, 90.00), + ('pallet 100', 2745600.00, 100.00, 220.00, 120.00, 1, util.VN_CURDATE(), 16, 0.00); INSERT INTO `vn`.`packagingConfig`(`id`, `upperGap`, `defaultSmallPackageFk`, `defaultBigPackageFk`) - VALUES - (1, '10', 1, 'pallet 100'); + VALUES + (1, '10', 1, 'pallet 100'); INSERT INTO `vn`.`expeditionStateType`(`id`, `description`, `code`) - VALUES - (1, 'En reparto', 'ON DELIVERY'), - (2, 'Entregada', 'DELIVERED'), - (3, 'Perdida', 'LOST'); + VALUES + (1, 'En reparto', 'ON DELIVERY'), + (2, 'Entregada', 'DELIVERED'), + (3, 'Perdida', 'LOST'); INSERT INTO `vn`.`expedition`(`id`, `agencyModeFk`, `ticketFk`, `freightItemFk`, `created`, `counter`, `workerFk`, `externalId`, `packagingFk`, `stateTypeFk`, `hostFk`) - VALUES - (1, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 18, 'UR9000006041', 94, 1, 'pc1'), - (2, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 18, 'UR9000006041', 94, 1, NULL), - (3, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3, 18, 'UR9000006041', 94, 2, NULL), - (4, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4, 18, 'UR9000006041', 94, 2, NULL), - (5, 1, 2, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 18, NULL, 94, 3, NULL), - (6, 7, 3, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 1, 18, NULL, 94, 3, NULL), - (7, 2, 4, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 1, 18, NULL, 94, NULL,NULL), - (8, 3, 5, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 1, 18, NULL, 94, 1, NULL), - (9, 3, 6, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 18, NULL, 94, 2, NULL), - (10, 7, 7, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), - (11, 7, 8, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), - (12, 7, 9, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), - (13, 1, 10, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), + VALUES + (1, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 18, 'UR9000006041', 94, 1, 'pc1'), + (2, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 18, 'UR9000006041', 94, 1, NULL), + (3, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3, 18, 'UR9000006041', 94, 2, NULL), + (4, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4, 18, 'UR9000006041', 94, 2, NULL), + (5, 1, 2, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 18, NULL, 94, 3, NULL), + (6, 7, 3, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 1, 18, NULL, 94, 3, NULL), + (7, 2, 4, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 1, 18, NULL, 94, NULL,NULL), + (8, 3, 5, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 1, 18, NULL, 94, 1, NULL), + (9, 3, 6, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 18, NULL, 94, 2, NULL), + (10, 7, 7, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), + (11, 7, 8, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), + (12, 7, 9, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), + (13, 1, 10, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL), (14, 1, 37, 71, util.VN_NOW(), 1, 18, NULL, 94, 3, NULL); INSERT INTO `vn`.`expeditionState`(`id`, `created`, `expeditionFk`, `typeFk`, `userFk`) - VALUES - (1, util.VN_CURDATE(), 1, 1, 1), - (2, util.VN_CURDATE(), 2, 1, 1), - (3, util.VN_CURDATE(), 3, 1, 1), - (4, util.VN_CURDATE(), 3, 2, 1106), - (5, util.VN_CURDATE(), 5, 1, 1106), - (6, util.VN_CURDATE(), 5, 3, 1106); + VALUES + (1, util.VN_CURDATE(), 1, 1, 1), + (2, util.VN_CURDATE(), 2, 1, 1), + (3, util.VN_CURDATE(), 3, 1, 1), + (4, util.VN_CURDATE(), 3, 2, 1106), + (5, util.VN_CURDATE(), 5, 1, 1106), + (6, util.VN_CURDATE(), 5, 3, 1106); INSERT INTO `vn`.`ticketPackaging`(`id`, `ticketFk`, `packagingFk`, `quantity`, `created`, `pvp`) - VALUES - (1, 1, 2, 2, util.VN_CURDATE(), NULL), - (2, 2, 2, 1, util.VN_CURDATE(), NULL), - (3, 3, 2, 4, util.VN_CURDATE(), NULL); + VALUES + (1, 1, 2, 2, util.VN_CURDATE(), NULL), + (2, 2, 2, 1, util.VN_CURDATE(), NULL), + (3, 3, 2, 4, util.VN_CURDATE(), NULL); INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `price`, `discount`, `reserved`, `isPicked`, `created`, `problem`) - VALUES - (1, 1, 1, 'Ranged weapon longbow 200cm', 5, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), - (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), - (3, 1, 1, 'Ranged weapon longbow 200cm', 2, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), - (4, 4, 1, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), - (5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), - (6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 'hasComponentLack'), - (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE(), NULL), - (8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL), - (9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), - (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE(), NULL), - (11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), - (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), NULL), - (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL), - (14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), - (15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), - (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'), - (18, 4, 22, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'), - (19, 1, 4, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 'hasComponentLack'), - (20, 1, 5, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 'hasComponentLack'), - (21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), - (22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL), - (32, 1, 24, 'Ranged weapon longbow 200cm', -1, 8.07, 0, 0, 0, util.VN_CURDATE(), NULL), - (33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL), - (34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), NULL), - (36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'), - (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), - (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'); + VALUES + (1, 1, 1, 'Ranged weapon longbow 200cm', 5, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), + (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), + (3, 1, 1, 'Ranged weapon longbow 200cm', 2, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), + (4, 4, 1, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), + (5, 1, 2, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), + (6, 1, 3, 'Ranged weapon longbow 200cm', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 'hasComponentLack'), + (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.74, 0, 0, 0, util.VN_CURDATE(), NULL), + (8, 4, 11, 'Melee weapon heavy shield 100cm', 10, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL), + (9, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), + (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE(), NULL), + (11, 1, 16, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), + (12, 4, 16, 'Melee weapon heavy shield 100cm', 20, 1.71, 0, 0, 0, util.VN_CURDATE(), NULL), + (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL), + (14, 1, 8, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), + (15, 1, 19, 'Ranged weapon longbow 200cm', 1, 103.49, 0, 0, 0, util.VN_CURDATE(), NULL), + (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'), + (18, 4, 22, 'Melee weapon heavy shield 100cm', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'), + (19, 1, 4, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 'hasComponentLack'), + (20, 1, 5, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 'hasComponentLack'), + (21, 1, 6, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 'hasComponentLack'), + (22, 1, 7, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (23, 1, 9, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (24, 1, 10, 'Ranged weapon longbow 200cm', 1, 8.07, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (25, 4, 12, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (26, 4, 13, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (27, 4, 14, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (28, 4, 15, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (29, 4, 17, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (30, 4, 18, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE(), NULL), + (32, 1, 24, 'Ranged weapon longbow 200cm', -1, 8.07, 0, 0, 0, util.VN_CURDATE(), NULL), + (33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE(), NULL), + (34, 4, 28, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (35, 4, 29, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), NULL), + (36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 'hasComponentLack'), + (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), + (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'); INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) - VALUES - (1, 28, 50), - (1, 29, 49.4), - (1, 39, 0.994), - (2, 28, 5), - (2, 29, 2), - (2, 39, 0.07), - (3, 28, 50), - (3, 29, 49.4), - (3, 39, 0.994), - (4, 28, 1.25), - (4, 29, 0.42), - (4, 39, 0.017), - (5, 17, 9.94), - (5, 28, 50), - (5, 29, 49.4), - (5, 39, 0.994), - (6, 17, 9.94), - (6, 28, 50), - (6, 29, 49.4), - (6, 39, 0.994), - (7, 15, 0.0199), - (7, 17, 0.35), - (7, 28, 5), - (7, 29, 2), - (7, 39, 0.07), - (8, 15, 0.0199), - (8, 17, 0.084), - (8, 28, 1.25), - (8, 29, 0.42), - (8, 39, 0.017), - (9, 15, 3.0949), - (9, 21, 0.001), - (9, 28, 53), - (9, 29, 46.4), - (9, 39, 0.994), - (10, 15, 0.0199), - (10, 28, 7), - (10, 29, 0), - (10, 39, 0.07), - (11, 15, 3.0949), - (11, 21, 0.001), - (11, 28, 53), - (11, 29, 46.4), - (11, 39, 0.994), - (12, 15, 0.0199), - (12, 21, 0.003), - (12, 28, 2.25), - (12, 29, -0.58), - (12, 39, 0.017), - (13, 15, 0.114), - (13, 28, 5), - (13, 29, 2), - (13, 39, 0.07), - (14, 15, 3.0949), - (14, 28, 50), - (14, 29, 49.4), - (14, 39, 0.994), - (15, 15, 3.0949), - (15, 28, 50), - (15, 29, 49.4), - (15, 39, 0.994), - (16, 28, 5), - (16, 29, 2), - (16, 39, 0.07), - (17, 28, 5), - (17, 29, 2), - (17, 39, 0.07), - (18, 28, 1.25), - (18, 29, 0.42), - (18, 39, 0.017), - (19, 17, 0.7), - (19, 22, 0.3), - (19, 28, 5), - (19, 29, 2), - (19, 39, 0.02), - (20, 17, 0.7), - (20, 22, 0.3), - (20, 28, 5), - (20, 29, 2), - (20, 39, 0.02), - (21, 17, 0.7), - (21, 22, 0.3), - (21, 28, 5), - (21, 29, 2), - (21, 39, 0.02), - (22, 17, 0.7), - (22, 22, 0.3), - (22, 28, 5), - (22, 29, 2), - (22, 39, 0.02), - (23, 17, 0.7), - (23, 22, 0.3), - (23, 28, 5), - (23, 29, 2), - (23, 39, 0.02), - (24, 17, 0.7), - (24, 22, 0.3), - (24, 28, 5), - (24, 29, 2), - (24, 39, 0.02), - (25, 17, 0.033), - (25, 28, 1.25), - (25, 29, 0.42), - (25, 39, 0.017), - (26, 17, 0.033), - (26, 28, 1.25), - (26, 29, 0.42), - (26, 39, 0.017), - (27, 17, 0.033), - (27, 28, 1.25), - (27, 29, 0.42), - (27, 39, 0.017), - (28, 17, 0.033), - (28, 28, 1.25), - (28, 29, 0.42), - (28, 39, 0.017), - (29, 17, 0.033), - (29, 28, 1.25), - (29, 29, 0.42), - (29, 39, 0.017), - (30, 17, 0.033), - (30, 28, 1.25), - (30, 29, 0.42), - (30, 39, 0.017), - (31, 28, 5), - (31, 29, 2), - (31, 36, 0.01), - (31, 39, 0.07), - (32, 28, 50), - (32, 29, 49.4), - (32, 36, -92.324), - (32, 39, 0.994); + VALUES + (1, 28, 50), + (1, 29, 49.4), + (1, 39, 0.994), + (2, 28, 5), + (2, 29, 2), + (2, 39, 0.07), + (3, 28, 50), + (3, 29, 49.4), + (3, 39, 0.994), + (4, 28, 1.25), + (4, 29, 0.42), + (4, 39, 0.017), + (5, 17, 9.94), + (5, 28, 50), + (5, 29, 49.4), + (5, 39, 0.994), + (6, 17, 9.94), + (6, 28, 50), + (6, 29, 49.4), + (6, 39, 0.994), + (7, 15, 0.0199), + (7, 17, 0.35), + (7, 28, 5), + (7, 29, 2), + (7, 39, 0.07), + (8, 15, 0.0199), + (8, 17, 0.084), + (8, 28, 1.25), + (8, 29, 0.42), + (8, 39, 0.017), + (9, 15, 3.0949), + (9, 21, 0.001), + (9, 28, 53), + (9, 29, 46.4), + (9, 39, 0.994), + (10, 15, 0.0199), + (10, 28, 7), + (10, 29, 0), + (10, 39, 0.07), + (11, 15, 3.0949), + (11, 21, 0.001), + (11, 28, 53), + (11, 29, 46.4), + (11, 39, 0.994), + (12, 15, 0.0199), + (12, 21, 0.003), + (12, 28, 2.25), + (12, 29, -0.58), + (12, 39, 0.017), + (13, 15, 0.114), + (13, 28, 5), + (13, 29, 2), + (13, 39, 0.07), + (14, 15, 3.0949), + (14, 28, 50), + (14, 29, 49.4), + (14, 39, 0.994), + (15, 15, 3.0949), + (15, 28, 50), + (15, 29, 49.4), + (15, 39, 0.994), + (16, 28, 5), + (16, 29, 2), + (16, 39, 0.07), + (17, 28, 5), + (17, 29, 2), + (17, 39, 0.07), + (18, 28, 1.25), + (18, 29, 0.42), + (18, 39, 0.017), + (19, 17, 0.7), + (19, 22, 0.3), + (19, 28, 5), + (19, 29, 2), + (19, 39, 0.02), + (20, 17, 0.7), + (20, 22, 0.3), + (20, 28, 5), + (20, 29, 2), + (20, 39, 0.02), + (21, 17, 0.7), + (21, 22, 0.3), + (21, 28, 5), + (21, 29, 2), + (21, 39, 0.02), + (22, 17, 0.7), + (22, 22, 0.3), + (22, 28, 5), + (22, 29, 2), + (22, 39, 0.02), + (23, 17, 0.7), + (23, 22, 0.3), + (23, 28, 5), + (23, 29, 2), + (23, 39, 0.02), + (24, 17, 0.7), + (24, 22, 0.3), + (24, 28, 5), + (24, 29, 2), + (24, 39, 0.02), + (25, 17, 0.033), + (25, 28, 1.25), + (25, 29, 0.42), + (25, 39, 0.017), + (26, 17, 0.033), + (26, 28, 1.25), + (26, 29, 0.42), + (26, 39, 0.017), + (27, 17, 0.033), + (27, 28, 1.25), + (27, 29, 0.42), + (27, 39, 0.017), + (28, 17, 0.033), + (28, 28, 1.25), + (28, 29, 0.42), + (28, 39, 0.017), + (29, 17, 0.033), + (29, 28, 1.25), + (29, 29, 0.42), + (29, 39, 0.017), + (30, 17, 0.033), + (30, 28, 1.25), + (30, 29, 0.42), + (30, 39, 0.017), + (31, 28, 5), + (31, 29, 2), + (31, 36, 0.01), + (31, 39, 0.07), + (32, 28, 50), + (32, 29, 49.4), + (32, 36, -92.324), + (32, 39, 0.994); INSERT INTO `vn`.`itemShelving` (`itemFk`, `shelvingFk`, `visible`, `grouping`, `packing`,`buyFk`, `userFk`) - VALUES - (2, 11, 1, 1, 1, 2,1106), - (4, 12, 1, 1, 1, NULL,1106), - (1, 13, 2, 12, 12, NULL,1106); + VALUES + (2, 11, 1, 1, 1, 2,1106), + (4, 12, 1, 1, 1, NULL,1106), + (1, 13, 2, 12, 12, NULL,1106); INSERT INTO `vn`.`itemShelvingSale` (`itemShelvingFk`, `saleFk`, `quantity`, `created`, `userFk`) - VALUES - ('1', '1', '1', util.VN_CURDATE(), '1106'), - ('2', '2', '5', util.VN_CURDATE(), '1106'), - ('1', '7', '1', util.VN_CURDATE(), '1106'), - ('2', '8', '5', util.VN_CURDATE(), '1106'); + VALUES + ('1', '1', '1', util.VN_CURDATE(), '1106'), + ('2', '2', '5', util.VN_CURDATE(), '1106'), + ('1', '7', '1', util.VN_CURDATE(), '1106'), + ('2', '8', '5', util.VN_CURDATE(), '1106'); INSERT INTO `vn`.`saleTracking`(`saleFk`, `isChecked`, `created`, `originalQuantity`, `workerFk`, `id`, `stateFk`) - VALUES - (1, 0, util.VN_CURDATE(), 5, 55, 1, 14), - (1, 1, util.VN_CURDATE(), 5, 54, 2, 8), - (2, 1, util.VN_CURDATE(), 10, 40, 3, 8), - (3, 1, util.VN_CURDATE(), 2, 40, 4, 8), - (31, 1, util.VN_CURDATE(), -5, 40, 5, 8); + VALUES + (1, 0, util.VN_CURDATE(), 5, 55, 1, 14), + (1, 1, util.VN_CURDATE(), 5, 54, 2, 8), + (2, 1, util.VN_CURDATE(), 10, 40, 3, 8), + (3, 1, util.VN_CURDATE(), 2, 40, 4, 8), + (31, 1, util.VN_CURDATE(), -5, 40, 5, 8); INSERT INTO `vn`.`itemBarcode`(`id`, `itemFk`, `code`) - VALUES - (1, 1, 1111111111), - (2, 1, 2222222222), - (3, 1, 3333333333), - (4, 2, 4444444444); + VALUES + (1, 1, 1111111111), + (2, 1, 2222222222), + (3, 1, 3333333333), + (4, 2, 4444444444); INSERT INTO `vn`.`train`(`id`, `name`) - VALUES - (1, 'Train1'), - (2, 'Train2'); + VALUES + (1, 'Train1'), + (2, 'Train2'); INSERT INTO `vn`.`operator` (`workerFk`, `numberOfWagons`, `trainFk`, `itemPackingTypeFk`, `warehouseFk`, `sectorFk`, `labelerFk`) - VALUES - ('1106', '1', '1', 'H', '1', '1', '1'), - ('9', '2', '1', 'H', '1', '1', '1'), + VALUES + ('1106', '1', '1', 'H', '1', '1', '1'), + ('9', '2', '1', 'H', '1', '1', '1'), ('1107', '1', '1', 'V', '1', '1', '1'); INSERT INTO `vn`.`collection`(`id`, `workerFk`, `stateFk`, `created`, `trainFk`) - VALUES - (1, 1106, 5, DATE_ADD(util.VN_CURDATE(),INTERVAL +1 DAY), 1), - (2, 1106, 14, util.VN_CURDATE(), 1), - (4, 49, 5, util.VN_CURDATE(), 1), - (5, 18, 5, util.VN_CURDATE(), 1), - (6, 18, 5, util.VN_CURDATE(), 1); + VALUES + (1, 1106, 5, DATE_ADD(util.VN_CURDATE(),INTERVAL +1 DAY), 1), + (2, 1106, 14, util.VN_CURDATE(), 1), + (4, 49, 5, util.VN_CURDATE(), 1), + (5, 18, 5, util.VN_CURDATE(), 1), + (6, 18, 5, util.VN_CURDATE(), 1); INSERT INTO `vn`.`ticketCollection`(`ticketFk`, `collectionFk`, `level`) - VALUES - (1, 1, 1), - (2, 1, NULL), - (3, 2, NULL), - (23, 1, NULL), - (34, 4, 1), - (35, 5, 1), - (8, 6, 1); + VALUES + (1, 1, 1), + (2, 1, NULL), + (3, 2, NULL), + (23, 1, NULL), + (34, 4, 1), + (35, 5, 1), + (8, 6, 1); INSERT INTO `vn`.`genus`(`id`, `name`) - VALUES - (1, 'Abelia'), - (2, 'Abies'), - (3, 'Abutilon'); + VALUES + (1, 'Abelia'), + (2, 'Abies'), + (3, 'Abutilon'); INSERT INTO `vn`.`specie`(`id`, `name`) - VALUES - (1, 'grandiflora'), - (2, 'procera'), - (3, 'decurrens'), - (4, 'dealbata'); + VALUES + (1, 'grandiflora'), + (2, 'procera'), + (3, 'decurrens'), + (4, 'dealbata'); INSERT INTO `vn`.`itemBotanical`(`itemFk`, `genusFk`, `specieFk`) - VALUES - (1, 1, 1), - (2, 2, 2), - (3, 2, NULL), - (4, 2, 1); + VALUES + (1, 1, 1), + (2, 2, 2), + (3, 2, NULL), + (4, 2, 1); INSERT INTO `vn`.`tag`(`id`, `code`, `name`, `isFree`, `isQuantitatif`, `sourceTable`, `unit`, `ediTypeFk`, `overwrite`) - VALUES - (1, 'color', 'Color', 0, 0, 'ink', NULL, NULL, 'inkFk'), - (2, NULL, 'Forma', 1, 0, NULL, NULL,NULL, NULL), - (3, NULL, 'Material', 1, 0, NULL, NULL,NULL, NULL), - (4, NULL, 'Longitud', 1, 1, NULL, 'mm', NULL, 'size'), - (5, NULL, 'Diámetro', 1, 1, NULL, 'mm',NULL, 'diameter'), - (7, NULL, 'Ancho de la base', 1, 1, NULL, 'mm',NULL, NULL), - (23, 'stems', 'Tallos', 1, 1, NULL, NULL, NULL, 'stems'), - (27, NULL, 'Longitud(cm)', 1, 1, NULL, 'cm', NULL, 'size'), - (36, 'producer', 'Proveedor', 1, 0, NULL, NULL, NULL, 'producer'), - (56, NULL, 'Genero', 1, 0, NULL, NULL, NULL, NULL), - (58, NULL, 'Variedad', 1, 0, NULL, NULL, NULL, NULL), - (67, 'category', 'Categoria', 1, 0, NULL, NULL, NULL, NULL), - (92, NULL, 'Nombre temporal', 1, 0, NULL, NULL, NULL, NULL); + VALUES + (1, 'color', 'Color', 0, 0, 'ink', NULL, NULL, 'inkFk'), + (2, NULL, 'Forma', 1, 0, NULL, NULL,NULL, NULL), + (3, NULL, 'Material', 1, 0, NULL, NULL,NULL, NULL), + (4, NULL, 'Longitud', 1, 1, NULL, 'mm', NULL, 'size'), + (5, NULL, 'Diámetro', 1, 1, NULL, 'mm',NULL, 'diameter'), + (7, NULL, 'Ancho de la base', 1, 1, NULL, 'mm',NULL, NULL), + (23, 'stems', 'Tallos', 1, 1, NULL, NULL, NULL, 'stems'), + (27, NULL, 'Longitud(cm)', 1, 1, NULL, 'cm', NULL, 'size'), + (36, 'producer', 'Proveedor', 1, 0, NULL, NULL, NULL, 'producer'), + (56, NULL, 'Genero', 1, 0, NULL, NULL, NULL, NULL), + (58, NULL, 'Variedad', 1, 0, NULL, NULL, NULL, NULL), + (67, 'category', 'Categoria', 1, 0, NULL, NULL, NULL, NULL), + (92, NULL, 'Nombre temporal', 1, 0, NULL, NULL, NULL, NULL); INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`) - VALUES - (1, 1, 56, 'Ranged weapon', 1), - (2, 1, 58, 'longbow', 2), - (3, 1, 27, '200cm', 3), - (4, 1, 36, 'Stark Industries', 4), - (5, 1, 1, 'Brown', 5), - (6, 1, 67, '+1 precission', 6), - (7, 1, 23, '1', 7), - (8, 2, 56, 'Melee weapon', 1), - (9, 2, 58, 'combat fist', 2), - (10, 2, 27, '15cm', 3), - (11, 2, 36, 'Stark Industries', 4), - (12, 2, 1, 'Silver', 5), - (13, 2, 67, 'Concussion', 6), - (14, 2, 23, '2', 7), - (15, 3, 56, 'Ranged weapon', 1), - (16, 3, 58, 'sniper rifle', 2), - (17, 3, 4, '113cm', 3), - (18, 3, 36, 'Stark Industries', 4), - (19, 3, 1, 'Green', 5), - (20, 3, 67, 'precission', 6), - (21, 3, 23, '3', 7), - (22, 4, 56, 'Melee weapon', 1), - (23, 4, 58, 'heavy shield', 2), - (24, 4, 4, '100cm', 3), - (25, 4, 36, 'Stark Industries', 4), - (26, 4, 1, 'Black', 5), - (27, 4, 67, 'containtment', 6), - (28, 4, 23, '4', 7), - (29, 5, 56, 'Ranged weapon', 1), - (30, 5, 58, 'pistol', 2), - (31, 5, 67, '9mm', 3), - (32, 5, 36, 'Stark Industries', 4), - (33, 5, 1, 'Silver', 5), - (34, 5, 27, '15cm', 6), - (35, 5, 23, '5', 7), - (36, 6, 56, 'Container', 1), - (37, 6, 58, 'ammo box', 2), - (38, 6, 27, '100cm', 3), - (39, 6, 36, 'Stark Industries', 4), - (40, 6, 1, 'Green', 5), - (41, 6, 67, 'supply', 6), - (42, 6, 23, '6', 7), - (43, 7, 56, 'Container', 1), - (44, 7, 58, 'medical box', 2), - (45, 7, 27, '100cm', 3), - (46, 7, 36, 'Stark Industries', 4), - (47, 7, 1, 'White', 5), - (48, 7, 67, 'supply', 6), - (49, 7, 23, '7', 7), - (50, 8, 56, 'Ranged Reinforced weapon', 1), - (51, 8, 58, '+1 longbow', 2), - (52, 8, 27, '200cm', 3), - (53, 8, 36, 'Stark Industries', 4), - (54, 8, 1, 'Brown', 5), - (55, 8, 67, 'precission', 6), - (56, 8, 23, '8', 7), - (57, 9, 56, 'Melee Reinforced weapon', 1), - (58, 9, 58, 'combat fist', 2), - (59, 9, 27, '15cm', 3), - (60, 9, 36, 'Stark Industries', 4), - (61, 9, 1, 'Silver', 5), - (62, 9, 67, 'Concussion', 6), - (63, 9, 23, '9', 7), - (64, 10, 56, 'Ranged Reinforced weapon', 1), - (65, 10, 58, 'sniper rifle', 2), - (66, 10, 67, '700mm', 3), - (67, 10, 36, 'Stark Industries', 4), - (68, 10, 1, 'Green', 5), - (69, 10, 27, '130cm', 6), - (70, 10, 23, '10', 7), - (71, 11, 56, 'Melee Reinforced weapon', 1), - (72, 11, 58, 'heavy shield', 2), - (73, 11, 4, '120cm', 3), - (74, 11, 36, 'Stark Industries', 4), - (75, 11, 1, 'Black', 5), - (76, 11, 67, 'containtment', 6), - (77, 11, 23, '11', 7), - (78, 12, 56, 'Ranged Reinforced weapon', 1), - (79, 12, 58, 'pistol', 2), - (80, 12, 27, '9mm', 3), - (81, 12, 36, 'Stark Industries', 4), - (82, 12, 1, 'Silver', 5), - (83, 12, 67, '23cm', 6), - (84, 12, 23, '12', 7), - (85, 13, 56, 'Chest', 1), - (86, 13, 58, 'ammo box', 2), - (87, 13, 27, '100cm', 3), - (88, 13, 36, 'Stark Industries', 4), - (89, 13, 1, 'Green', 5), - (90, 13, 67, 'supply', 6), - (91, 13, 23, '13', 7), - (92, 14, 56, 'Chest', 1), - (93, 14, 58, 'medical box', 2), - (94, 14, 27, '100cm', 3), - (95, 14, 36, 'Stark Industries', 4), - (96, 14, 1, 'White', 5), - (97, 14, 67, 'supply', 6), - (98, 14, 23, '1', 7), - (99, 15, 92, 'Trolley', 2), - (100, 16, 92, 'Pallet', 2), - (101, 71, 92, 'Shipping cost', 2); + VALUES + (1, 1, 56, 'Ranged weapon', 1), + (2, 1, 58, 'longbow', 2), + (3, 1, 27, '200cm', 3), + (4, 1, 36, 'Stark Industries', 4), + (5, 1, 1, 'Brown', 5), + (6, 1, 67, '+1 precission', 6), + (7, 1, 23, '1', 7), + (8, 2, 56, 'Melee weapon', 1), + (9, 2, 58, 'combat fist', 2), + (10, 2, 27, '15cm', 3), + (11, 2, 36, 'Stark Industries', 4), + (12, 2, 1, 'Silver', 5), + (13, 2, 67, 'Concussion', 6), + (14, 2, 23, '2', 7), + (15, 3, 56, 'Ranged weapon', 1), + (16, 3, 58, 'sniper rifle', 2), + (17, 3, 4, '113cm', 3), + (18, 3, 36, 'Stark Industries', 4), + (19, 3, 1, 'Green', 5), + (20, 3, 67, 'precission', 6), + (21, 3, 23, '3', 7), + (22, 4, 56, 'Melee weapon', 1), + (23, 4, 58, 'heavy shield', 2), + (24, 4, 4, '100cm', 3), + (25, 4, 36, 'Stark Industries', 4), + (26, 4, 1, 'Black', 5), + (27, 4, 67, 'containtment', 6), + (28, 4, 23, '4', 7), + (29, 5, 56, 'Ranged weapon', 1), + (30, 5, 58, 'pistol', 2), + (31, 5, 67, '9mm', 3), + (32, 5, 36, 'Stark Industries', 4), + (33, 5, 1, 'Silver', 5), + (34, 5, 27, '15cm', 6), + (35, 5, 23, '5', 7), + (36, 6, 56, 'Container', 1), + (37, 6, 58, 'ammo box', 2), + (38, 6, 27, '100cm', 3), + (39, 6, 36, 'Stark Industries', 4), + (40, 6, 1, 'Green', 5), + (41, 6, 67, 'supply', 6), + (42, 6, 23, '6', 7), + (43, 7, 56, 'Container', 1), + (44, 7, 58, 'medical box', 2), + (45, 7, 27, '100cm', 3), + (46, 7, 36, 'Stark Industries', 4), + (47, 7, 1, 'White', 5), + (48, 7, 67, 'supply', 6), + (49, 7, 23, '7', 7), + (50, 8, 56, 'Ranged Reinforced weapon', 1), + (51, 8, 58, '+1 longbow', 2), + (52, 8, 27, '200cm', 3), + (53, 8, 36, 'Stark Industries', 4), + (54, 8, 1, 'Brown', 5), + (55, 8, 67, 'precission', 6), + (56, 8, 23, '8', 7), + (57, 9, 56, 'Melee Reinforced weapon', 1), + (58, 9, 58, 'combat fist', 2), + (59, 9, 27, '15cm', 3), + (60, 9, 36, 'Stark Industries', 4), + (61, 9, 1, 'Silver', 5), + (62, 9, 67, 'Concussion', 6), + (63, 9, 23, '9', 7), + (64, 10, 56, 'Ranged Reinforced weapon', 1), + (65, 10, 58, 'sniper rifle', 2), + (66, 10, 67, '700mm', 3), + (67, 10, 36, 'Stark Industries', 4), + (68, 10, 1, 'Green', 5), + (69, 10, 27, '130cm', 6), + (70, 10, 23, '10', 7), + (71, 11, 56, 'Melee Reinforced weapon', 1), + (72, 11, 58, 'heavy shield', 2), + (73, 11, 4, '120cm', 3), + (74, 11, 36, 'Stark Industries', 4), + (75, 11, 1, 'Black', 5), + (76, 11, 67, 'containtment', 6), + (77, 11, 23, '11', 7), + (78, 12, 56, 'Ranged Reinforced weapon', 1), + (79, 12, 58, 'pistol', 2), + (80, 12, 27, '9mm', 3), + (81, 12, 36, 'Stark Industries', 4), + (82, 12, 1, 'Silver', 5), + (83, 12, 67, '23cm', 6), + (84, 12, 23, '12', 7), + (85, 13, 56, 'Chest', 1), + (86, 13, 58, 'ammo box', 2), + (87, 13, 27, '100cm', 3), + (88, 13, 36, 'Stark Industries', 4), + (89, 13, 1, 'Green', 5), + (90, 13, 67, 'supply', 6), + (91, 13, 23, '13', 7), + (92, 14, 56, 'Chest', 1), + (93, 14, 58, 'medical box', 2), + (94, 14, 27, '100cm', 3), + (95, 14, 36, 'Stark Industries', 4), + (96, 14, 1, 'White', 5), + (97, 14, 67, 'supply', 6), + (98, 14, 23, '1', 7), + (99, 15, 92, 'Trolley', 2), + (100, 16, 92, 'Pallet', 2), + (101, 71, 92, 'Shipping cost', 2); INSERT INTO `vn`.`itemTypeTag`(`id`, `itemTypeFk`, `tagFk`, `priority`) - VALUES - (1, 1, 1, 0), - (2, 2, 2, 0), - (3, 3, 3, 0), - (4, 1, 4, 4), - (5, 1, 5, 5); + VALUES + (1, 1, 1, 0), + (2, 2, 2, 0), + (3, 3, 3, 0), + (4, 1, 4, 4), + (5, 1, 5, 5); CALL `vn`.`itemRefreshTags`(NULL); INSERT INTO `vn`.`itemLog` (`id`, `originFk`, `userFk`, `action`, `description`, `changedModel`, `oldInstance`, `newInstance`, `changedModelId`, `changedModelValue`) - VALUES - ('1', '1', '1', 'insert', 'We made a change!', 'Item', '{}', '{}', 1, '1'); + VALUES + ('1', '1', '1', 'insert', 'We made a change!', 'Item', '{}', '{}', 1, '1'); INSERT INTO `vn`.`recovery`(`id`, `clientFk`, `started`, `finished`, `amount`, `period`) - VALUES - (1, 1101, DATE_ADD(util.VN_CURDATE(),INTERVAL -7 MONTH), DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), 50, 7), - (2, 1102, DATE_ADD(util.VN_CURDATE(),INTERVAL -5 MONTH), util.VN_CURDATE(), 100, 1), - (3, 1102, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(),INTERVAL 1 MONTH), 50, 7), - (4, 1103, util.VN_CURDATE(), NULL, 50, 7); + VALUES + (1, 1101, DATE_ADD(util.VN_CURDATE(),INTERVAL -7 MONTH), DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), 50, 7), + (2, 1102, DATE_ADD(util.VN_CURDATE(),INTERVAL -5 MONTH), util.VN_CURDATE(), 100, 1), + (3, 1102, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(),INTERVAL 1 MONTH), 50, 7), + (4, 1103, util.VN_CURDATE(), NULL, 50, 7); INSERT INTO `bs`.`clientAnnualConsumption`(`clientFk`, `invoiced`) - VALUES - (1101, 1500), - (1102, 100), - (1103, 1000), - (1104, 500), - (1105, 5000); + VALUES + (1101, 1500), + (1102, 100), + (1103, 1000), + (1104, 500), + (1105, 5000); INSERT INTO `cache`.`cache_calc`(`id`, `cache_id`, `cacheName`, `params`, `last_refresh`, `expires`, `created`, `connection_id`) - VALUES - (1, 2, 'available', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL), - (2, 4, 'last_buy', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL), - (3, 8, 'visible', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL); + VALUES + (1, 2, 'available', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL), + (2, 4, 'last_buy', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL), + (3, 8, 'visible', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL); INSERT INTO `vn`.`ticketWeekly`(`ticketFk`, `weekDay`) - VALUES - (2, 1), - (3, 2), - (5, 6), - (15, 6), - (17, 6); + VALUES + (2, 1), + (3, 2), + (5, 6), + (15, 6), + (17, 6); INSERT INTO `vn`.`awb` (id, code, package, weight, created, amount, transitoryFk, taxFk) - VALUES - (1, '07546501420', 67, 671, util.VN_CURDATE(), 1761, 1, 1), - (2, '07546491421', 252, 2769, util.VN_CURDATE(), 5231, 1, 1), - (3, '07546500823', 102, 1495, util.VN_CURDATE(), 3221, 1, 1), - (4, '99610288821', 252, 2777, util.VN_CURDATE(), 3641, 1, 1), - (5, '07546500834', 229, 3292, util.VN_CURDATE(), 6601, 2, 1), - (6, '22101929561', 37, 458, util.VN_CURDATE(), 441, 2, 1), - (7, '07546491432', 258, 3034, util.VN_CURDATE(), 6441, 2, 1), - (8, '99610288644', 476, 4461, util.VN_CURDATE(), 5751, 442, 1), - (9, '99610289193', 302, 2972, util.VN_CURDATE(), 3871, 442, 1), - (10, '07546500856', 185, 2364, util.VN_CURDATE(), 5321, 442, 1); + VALUES + (1, '07546501420', 67, 671, util.VN_CURDATE(), 1761, 1, 1), + (2, '07546491421', 252, 2769, util.VN_CURDATE(), 5231, 1, 1), + (3, '07546500823', 102, 1495, util.VN_CURDATE(), 3221, 1, 1), + (4, '99610288821', 252, 2777, util.VN_CURDATE(), 3641, 1, 1), + (5, '07546500834', 229, 3292, util.VN_CURDATE(), 6601, 2, 1), + (6, '22101929561', 37, 458, util.VN_CURDATE(), 441, 2, 1), + (7, '07546491432', 258, 3034, util.VN_CURDATE(), 6441, 2, 1), + (8, '99610288644', 476, 4461, util.VN_CURDATE(), 5751, 442, 1), + (9, '99610289193', 302, 2972, util.VN_CURDATE(), 3871, 442, 1), + (10, '07546500856', 185, 2364, util.VN_CURDATE(), 5321, 442, 1); INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseOutFk`, `agencyModeFk`, `m3`, `kg`,`ref`, `totalEntries`, `cargoSupplierFk`, `awbFK`, `isRaid`, `daysInForward`) - VALUES (1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 1, 2, 1, 100.00, 1000, 'first travel', 1, 1, 1, FALSE, NULL), - (2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 150.00, 2000, 'second travel', 2, 2, 2, FALSE, NULL), - (3, util.VN_CURDATE(), util.VN_CURDATE(), 1, 2, 1, 0.00, 0.00, 'third travel', 1, 1, 3, FALSE, NULL), - (4, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 3, 1, 50.00, 500, 'fourth travel', 0, 2, 4, FALSE, NULL), - (5, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3, 3, 1, 50.00, 500, 'fifth travel', 1, 1, 5, FALSE, NULL), - (6, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4, 4, 1, 50.00, 500, 'sixth travel', 1, 2, 6, FALSE,NULL), - (7, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 4, 1, 50.00, 500, 'seventh travel', 2, 1, 7, TRUE, 2), - (8, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 1, 1, 50.00, 500, 'eight travel', 1, 2, 10, FALSE, NULL), - (10, DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY), 5, 1, 1, 50.00, 500, 'nineth travel', 1, 2, 10, TRUE, 2), - (11, util.VN_CURDATE() - INTERVAL 1 DAY , util.VN_CURDATE(), 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL), - (12, util.VN_CURDATE() , util.VN_CURDATE() + INTERVAL 1 DAY, 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL); + VALUES (1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 1, 2, 1, 100.00, 1000, 'first travel', 1, 1, 1, FALSE, NULL), + (2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 150.00, 2000, 'second travel', 2, 2, 2, FALSE, NULL), + (3, util.VN_CURDATE(), util.VN_CURDATE(), 1, 2, 1, 0.00, 0.00, 'third travel', 1, 1, 3, FALSE, NULL), + (4, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 3, 1, 50.00, 500, 'fourth travel', 0, 2, 4, FALSE, NULL), + (5, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3, 3, 1, 50.00, 500, 'fifth travel', 1, 1, 5, FALSE, NULL), + (6, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4, 4, 1, 50.00, 500, 'sixth travel', 1, 2, 6, FALSE,NULL), + (7, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 4, 1, 50.00, 500, 'seventh travel', 2, 1, 7, TRUE, 2), + (8, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 1, 1, 50.00, 500, 'eight travel', 1, 2, 10, FALSE, NULL), + (10, DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY), 5, 1, 1, 50.00, 500, 'nineth travel', 1, 2, 10, TRUE, 2), + (11, util.VN_CURDATE() - INTERVAL 1 DAY , util.VN_CURDATE(), 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL), + (12, util.VN_CURDATE() , util.VN_CURDATE() + INTERVAL 1 DAY, 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL); INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed`, `companyFk`, `invoiceNumber`, `reference`, `isExcludedFromAvailable`, `evaNotes`, `typeFk`) VALUES @@ -1530,548 +1530,548 @@ INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed (8, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'IN2008', 'Movement 8', 1, '', 'product'), (9, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 9', 1, '', 'product'), (10, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 10',1, '', 'product'), - (11, 4, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'IN2001', 'Movement 11',0, '', 'product'), + (11, 4, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'IN2001', 'Movement 11',0, '', 'product'), (99, 69, util.VN_CURDATE() - INTERVAL 1 MONTH, 11, 0, 442, 'IN2009', 'Movement 99',0, '', 'product'); INSERT INTO `vn`.`entryConfig` (`defaultEntry`, `inventorySupplierFk`, `defaultSupplierFk`) VALUES (2, 4, 1); INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `saleTotal`, `saleWasteQuantity`, `saleExternalWaste`, `saleFaultWaste`, `saleContainerWaste`, `saleBreakWaste`, `saleOtherWaste`) - VALUES - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 1, 1, '1062', '51', '56.20', '56.20', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 2, 1, '35074', '687', '53.12', '89.69', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 3, 1, '1777', '13', '12.02', '53.12', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 4, 1, '3182', '59', '51', '56.20', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 5, 1, '1747', '13', '53.12', '53.12', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 6, 1, '7182', '59', '51', '53.12', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 7, 1, '1777', '13', '89.69', '89.69', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 8, 1, '4181', '59', '53.12', '53.12', '56.20', '56.20', '56.20'), - ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 9, 1, '7268', '59', '12.02', '56.20', '56.20', '56.20', '56.20'), - ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 2, 1, '-74', '0', '51', '89.69', '56.20', '56.20', '56.20'), - ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 3, 1, '-7', '0', '12.02', '53.12', '56.20', '56.20', '56.20'), - ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 4, 1, '1100', '0', '51', '56.20', '56.20', '56.20', '56.20'), - ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 5, 1, '848', '-187', '12.02', '89.69', '56.20', '56.20', '56.20'), - ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 6, 1, '186', '0', '51', '53.12', '56.20', '56.20', '56.20'), - ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 7, 1, '277', '0', '53.12', '56.20', '56.20', '56.20', '56.20'); + VALUES + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 1, 1, '1062', '51', '56.20', '56.20', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 2, 1, '35074', '687', '53.12', '89.69', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 3, 1, '1777', '13', '12.02', '53.12', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 4, 1, '3182', '59', '51', '56.20', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 5, 1, '1747', '13', '53.12', '53.12', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 6, 1, '7182', '59', '51', '53.12', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 7, 1, '1777', '13', '89.69', '89.69', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 8, 1, '4181', '59', '53.12', '53.12', '56.20', '56.20', '56.20'), + ('35', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 9, 1, '7268', '59', '12.02', '56.20', '56.20', '56.20', '56.20'), + ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 2, 1, '-74', '0', '51', '89.69', '56.20', '56.20', '56.20'), + ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 3, 1, '-7', '0', '12.02', '53.12', '56.20', '56.20', '56.20'), + ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 4, 1, '1100', '0', '51', '56.20', '56.20', '56.20', '56.20'), + ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 5, 1, '848', '-187', '12.02', '89.69', '56.20', '56.20', '56.20'), + ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 6, 1, '186', '0', '51', '53.12', '56.20', '56.20', '56.20'), + ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 7, 1, '277', '0', '53.12', '56.20', '56.20', '56.20', '56.20'); INSERT INTO vn.buy(id,entryFk,itemFk,buyingValue,quantity,packagingFk,stickers,freightValue,packageValue,comissionValue,packing,grouping,groupingMode,location,price1,price2,price3,printedStickers,isChecked,isIgnored,weight,created) - VALUES - (1, 1, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), - (2, 2, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 1 MONTH), - (3, 3, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, NULL, NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE()), - (4, 2, 2, 5, 450, 3, 1, 1.000, 1.000, 0.000, 10, 10, NULL, NULL, 0.00, 7.30, 7.00, 0, 1, 0, 2.5, util.VN_CURDATE()), - (5, 3, 3, 55, 500, 5, 1, 1.000, 1.000, 0.000, 1, 1, NULL, NULL, 0.00, 78.3, 75.6, 0, 1, 0, 2.5, util.VN_CURDATE()), - (6, 4, 8, 50, 1000, 4, 1, 1.000, 1.000, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 2.5, util.VN_CURDATE()), - (7, 4, 9, 20, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'packing', NULL, 0.00, 30.50, 29.00, 0, 1, 0, 2.5, util.VN_CURDATE()), - (8, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 2.5, util.VN_CURDATE()), - (9, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (10, 5, 1, 50, 10, 4, 1, 2.500, 2.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 4, util.VN_CURDATE()), - (11, 5, 4, 1.25, 10, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (12, 6, 4, 1.25, 0, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 4, util.VN_CURDATE()), - (14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 7.30, 7.00, 0, 1, 0, 4, util.VN_CURDATE()), + VALUES + (1, 1, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), + (2, 2, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 1 MONTH), + (3, 3, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, NULL, NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE()), + (4, 2, 2, 5, 450, 3, 1, 1.000, 1.000, 0.000, 10, 10, NULL, NULL, 0.00, 7.30, 7.00, 0, 1, 0, 2.5, util.VN_CURDATE()), + (5, 3, 3, 55, 500, 5, 1, 1.000, 1.000, 0.000, 1, 1, NULL, NULL, 0.00, 78.3, 75.6, 0, 1, 0, 2.5, util.VN_CURDATE()), + (6, 4, 8, 50, 1000, 4, 1, 1.000, 1.000, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 2.5, util.VN_CURDATE()), + (7, 4, 9, 20, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'packing', NULL, 0.00, 30.50, 29.00, 0, 1, 0, 2.5, util.VN_CURDATE()), + (8, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 2.5, util.VN_CURDATE()), + (9, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), + (10, 5, 1, 50, 10, 4, 1, 2.500, 2.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 4, util.VN_CURDATE()), + (11, 5, 4, 1.25, 10, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), + (12, 6, 4, 1.25, 0, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), + (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 4, util.VN_CURDATE()), + (14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 7.30, 7.00, 0, 1, 0, 4, util.VN_CURDATE()), (15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (16, 99,1,50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, '2024-07-30 08:13:51.000'), - (17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH); + (16, 99,1,50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, '2024-07-30 08:13:51.000'), + (17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH); INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`,`total`, `date_make`, `first_row_stamp`, `confirm_date`) - VALUES - (1, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 3, 1, 121, 442, NULL, 'TPV', 1,'155.89', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (2, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1104, 3, 1, 124, 442, NULL, 'WEB', 1,'100.10', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (3, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'ANDROID', 1,'107.25', DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), - (4, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), - (5, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 1, 3, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), - (6, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 1, 3, 1, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), - (7, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 1, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (8, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 121, 442, NULL, 'SALIX', 0,'123.53', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (9, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 2, 7, 124, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (10, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 3, 1, 2, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (11, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 2, 7, 122, 442, NULL, 'SALIX', 0,'60.90', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (12, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 3, 1, 3, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (13, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 1, 2, 123, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (14, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 1, 2, 4, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (15, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 1, 3, 125, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (16, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 2, 7, 126, 442, NULL, 'SALIX', 0,'155.89', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (17, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1107, 1, 4, 127, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (18, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 1, 4, 128, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (19, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 1, 5, 129, 442, NULL, 'SALIX', 0,'16.50', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), - (20, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 101, 442, NULL, 'SALIX', 0,'21.45', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), - (21, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 102, 442, NULL, 'SALIX', 0,'0.00', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), - (22, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 103, 442, NULL, 'SALIX', 0,'148.50', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)); + VALUES + (1, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 3, 1, 121, 442, NULL, 'TPV', 1,'155.89', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (2, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1104, 3, 1, 124, 442, NULL, 'WEB', 1,'100.10', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (3, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'ANDROID', 1,'107.25', DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), + (4, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), + (5, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 1, 3, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), + (6, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 1, 3, 1, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (7, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 1, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (8, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 121, 442, NULL, 'SALIX', 0,'123.53', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (9, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 2, 7, 124, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (10, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 3, 1, 2, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (11, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 2, 7, 122, 442, NULL, 'SALIX', 0,'60.90', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (12, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 3, 1, 3, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (13, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 1, 2, 123, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (14, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 1, 2, 4, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (15, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 1, 3, 125, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (16, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 2, 7, 126, 442, NULL, 'SALIX', 0,'155.89', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (17, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1107, 1, 4, 127, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (18, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 1, 4, 128, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (19, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 1, 5, 129, 442, NULL, 'SALIX', 0,'16.50', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (20, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 101, 442, NULL, 'SALIX', 0,'21.45', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (21, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 102, 442, NULL, 'SALIX', 0,'0.00', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (22, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 103, 442, NULL, 'SALIX', 0,'148.50', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)); INSERT INTO `hedera`.`orderRow`(`id`, `orderFk`, `itemFk`, `warehouseFk`, `shipment`, `amount`, `price`, `rate`, `created`, `saleFk`) - VALUES - (1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1), - (2, 1, 2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 10, 1.07, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2), - (3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3), - (4, 1, 4, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 20, 3.06, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4), - (5, 2, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 10, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5), - (6, 3, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 15, 6.50, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 6), - (7, 11, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 7), - (8, 11, 4, 1, util.VN_CURDATE(), 10, 3.26, 0, util.VN_CURDATE(), 8), - (9, 16, 1, 1, util.VN_CURDATE(), 5, 9.10, 0, util.VN_CURDATE(), 9), - (10, 16, 2, 1, util.VN_CURDATE(), 10, 1.07, 0, util.VN_CURDATE(), 10), - (11, 16, 1, 1, util.VN_CURDATE(), 2, 9.10, 0, util.VN_CURDATE(), 11), - (12, 16, 4, 1, util.VN_CURDATE(), 20, 3.06, 0, util.VN_CURDATE(), 12), - (13, 8, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 13), - (14, 8, 1, 1, util.VN_CURDATE(), 10, 9.28, 0, util.VN_CURDATE(), 14), - (15, 19, 1, 1, util.VN_CURDATE(), 10, 1.50, 0, util.VN_CURDATE(), 15), - (16, 20, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 16), - (17, 22, 2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 30, 2.30, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 17), - (18, 22, 4, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 20, 3.00, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 18), - (19, 4, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 19), - (20, 5, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 20), - (21, 6, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 21), - (22, 7, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 22), - (23, 9, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 23), - (24, 10, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 24), - (25, 12, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 25), - (26, 13, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 26), - (27, 14, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 27), - (28, 15, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 28), - (29, 17, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 29), - (30, 18, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 30); + VALUES + (1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1), + (2, 1, 2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 10, 1.07, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2), + (3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3), + (4, 1, 4, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 20, 3.06, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4), + (5, 2, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 10, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5), + (6, 3, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 15, 6.50, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 6), + (7, 11, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 7), + (8, 11, 4, 1, util.VN_CURDATE(), 10, 3.26, 0, util.VN_CURDATE(), 8), + (9, 16, 1, 1, util.VN_CURDATE(), 5, 9.10, 0, util.VN_CURDATE(), 9), + (10, 16, 2, 1, util.VN_CURDATE(), 10, 1.07, 0, util.VN_CURDATE(), 10), + (11, 16, 1, 1, util.VN_CURDATE(), 2, 9.10, 0, util.VN_CURDATE(), 11), + (12, 16, 4, 1, util.VN_CURDATE(), 20, 3.06, 0, util.VN_CURDATE(), 12), + (13, 8, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 13), + (14, 8, 1, 1, util.VN_CURDATE(), 10, 9.28, 0, util.VN_CURDATE(), 14), + (15, 19, 1, 1, util.VN_CURDATE(), 10, 1.50, 0, util.VN_CURDATE(), 15), + (16, 20, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 16), + (17, 22, 2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 30, 2.30, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 17), + (18, 22, 4, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 20, 3.00, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 18), + (19, 4, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 19), + (20, 5, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 20), + (21, 6, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 21), + (22, 7, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 22), + (23, 9, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 23), + (24, 10, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 24), + (25, 12, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 25), + (26, 13, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 26), + (27, 14, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 27), + (28, 15, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 28), + (29, 17, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 29), + (30, 18, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 30); INSERT INTO `hedera`.`orderRowComponent`(`rowFk`, `componentFk`, `price`) - VALUES - (1, 15, 0.58), - (1, 23, 6.5), - (1, 28, 20.72), - (1, 29, -18.72), - (1, 39, 0.02), - (2, 15, 0.058), - (2, 21, 0.002), - (2, 28, 5.6), - (2, 29, -4.6), - (2, 39, 0.01), - (3, 15, 0.58), - (3, 23, 6.5), - (3, 28, 20.72), - (3, 29, -18.72), - (3, 39, 0.02), - (4, 15, 0.051), - (4, 21, -0.001), - (4, 28, 20.72), - (4, 29, -19.72), - (4, 37, 2), - (4, 39, 0.01), - (5, 15, 0.58), - (5, 23, 6.5), - (5, 28, 20.72), - (5, 29, -18.72), - (5, 39, 0.02), - (6, 23, 6.5), - (7, 15, 0.0114), - (7, 28, 5.6), - (7, 29, -4.6), - (7, 39, 0.01), - (8, 15, 0.0016), - (8, 28, 20.72), - (8, 29, -19.72), - (8, 37, 2), - (8, 39, 0.01), - (9, 15, 0.58), - (9, 23, 6.5), - (9, 28, 20.72), - (9, 29, -18.72), - (9, 39, 0.02), - (10, 15, 0.058), - (10, 21, 0.002), - (10, 28, 5.6), - (10, 29, -4.6), - (10, 39, 0.01), - (11, 15, 0.58), - (11, 23, 6.5), - (11, 28, 20.72), - (11, 29, -18.72), - (11, 39, 0.02), - (12, 15, 0.051), - (12, 22, -0.001), - (12, 28, 20.72), - (12, 29, -19.72), - (12, 37, 2), - (12, 39, 0.01), - (13, 15, 0.2899), - (13, 28, 5.6), - (13, 29, -4.6), - (13, 39, 0.01), - (14, 15, 0.58), - (14, 23, 6.5), - (14, 28, 20.72), - (14, 29, -18.72), - (14, 39, 0.02), - (15, 15, 0.58), - (15, 23, 6.5), - (15, 28, 20.72), - (15, 29, -18.72), - (15, 39, 0.02), - (16, 15, 0.058), - (16, 21, 0.002), - (16, 28, 5.6), - (16, 29, -4.6), - (16, 39, 0.01), - (17, 15, 0.058), - (17, 21, 0.002), - (17, 28, 5.6), - (17, 29, -4.6), - (17, 39, 0.01), - (18, 15, 0.051), - (18, 22, -0.001), - (18, 28, 20.72), - (18, 29, -19.72), - (18, 37, 2), - (18, 39, 0.01), - (19, 15, 0.58), - (19, 23, 6.5), - (19, 28, 20.72), - (19, 29, -18.72), - (19, 39, 0.02), - (20, 15, 0.58), - (20, 23, 6.5), - (20, 28, 20.72), - (20, 29, -18.72), - (20, 39, 0.02), - (21, 15, 0.58), - (21, 23, 6.5), - (21, 28, 20.72), - (21, 29, -18.72), - (21, 39, 0.02), - (22, 15, 0.58), - (22, 23, 6.5), - (22, 28, 20.72), - (22, 29, -18.72), - (22, 39, 0.02), - (23, 15, 0.58), - (23, 23, 6.5), - (23, 28, 20.72), - (23, 29, -18.72), - (23, 39, 0.02), - (24, 15, 0.58), - (24, 23, 6.5), - (24, 28, 20.72), - (24, 29, -18.72), - (24, 39, 0.02), - (25, 15, 0.051), - (25, 22, -0.001), - (25, 28, 20.72), - (25, 29, -19.72), - (25, 37, 2), - (25, 39, 0.01), - (26, 15, 0.051), - (26, 22, -0.001), - (26, 28, 20.72), - (26, 29, -19.72), - (26, 37, 2), - (26, 39, 0.01), - (27, 15, 0.051), - (27, 22, -0.001), - (27, 28, 20.72), - (27, 29, -19.72), - (27, 37, 2), - (27, 39, 0.01), - (28, 15, 0.051), - (28, 22, -0.001), - (28, 28, 20.72), - (28, 29, -19.72), - (28, 37, 2), - (28, 39, 0.01), - (29, 15, 0.051), - (29, 22, -0.001), - (29, 28, 20.72), - (29, 29, -19.72), - (29, 37, 2), - (29, 39, 0.01), - (30, 15, 0.051), - (30, 22, -0.001), - (30, 28, 20.72), - (30, 29, -19.72), - (30, 37, 2), - (30, 39, 0.01); + VALUES + (1, 15, 0.58), + (1, 23, 6.5), + (1, 28, 20.72), + (1, 29, -18.72), + (1, 39, 0.02), + (2, 15, 0.058), + (2, 21, 0.002), + (2, 28, 5.6), + (2, 29, -4.6), + (2, 39, 0.01), + (3, 15, 0.58), + (3, 23, 6.5), + (3, 28, 20.72), + (3, 29, -18.72), + (3, 39, 0.02), + (4, 15, 0.051), + (4, 21, -0.001), + (4, 28, 20.72), + (4, 29, -19.72), + (4, 37, 2), + (4, 39, 0.01), + (5, 15, 0.58), + (5, 23, 6.5), + (5, 28, 20.72), + (5, 29, -18.72), + (5, 39, 0.02), + (6, 23, 6.5), + (7, 15, 0.0114), + (7, 28, 5.6), + (7, 29, -4.6), + (7, 39, 0.01), + (8, 15, 0.0016), + (8, 28, 20.72), + (8, 29, -19.72), + (8, 37, 2), + (8, 39, 0.01), + (9, 15, 0.58), + (9, 23, 6.5), + (9, 28, 20.72), + (9, 29, -18.72), + (9, 39, 0.02), + (10, 15, 0.058), + (10, 21, 0.002), + (10, 28, 5.6), + (10, 29, -4.6), + (10, 39, 0.01), + (11, 15, 0.58), + (11, 23, 6.5), + (11, 28, 20.72), + (11, 29, -18.72), + (11, 39, 0.02), + (12, 15, 0.051), + (12, 22, -0.001), + (12, 28, 20.72), + (12, 29, -19.72), + (12, 37, 2), + (12, 39, 0.01), + (13, 15, 0.2899), + (13, 28, 5.6), + (13, 29, -4.6), + (13, 39, 0.01), + (14, 15, 0.58), + (14, 23, 6.5), + (14, 28, 20.72), + (14, 29, -18.72), + (14, 39, 0.02), + (15, 15, 0.58), + (15, 23, 6.5), + (15, 28, 20.72), + (15, 29, -18.72), + (15, 39, 0.02), + (16, 15, 0.058), + (16, 21, 0.002), + (16, 28, 5.6), + (16, 29, -4.6), + (16, 39, 0.01), + (17, 15, 0.058), + (17, 21, 0.002), + (17, 28, 5.6), + (17, 29, -4.6), + (17, 39, 0.01), + (18, 15, 0.051), + (18, 22, -0.001), + (18, 28, 20.72), + (18, 29, -19.72), + (18, 37, 2), + (18, 39, 0.01), + (19, 15, 0.58), + (19, 23, 6.5), + (19, 28, 20.72), + (19, 29, -18.72), + (19, 39, 0.02), + (20, 15, 0.58), + (20, 23, 6.5), + (20, 28, 20.72), + (20, 29, -18.72), + (20, 39, 0.02), + (21, 15, 0.58), + (21, 23, 6.5), + (21, 28, 20.72), + (21, 29, -18.72), + (21, 39, 0.02), + (22, 15, 0.58), + (22, 23, 6.5), + (22, 28, 20.72), + (22, 29, -18.72), + (22, 39, 0.02), + (23, 15, 0.58), + (23, 23, 6.5), + (23, 28, 20.72), + (23, 29, -18.72), + (23, 39, 0.02), + (24, 15, 0.58), + (24, 23, 6.5), + (24, 28, 20.72), + (24, 29, -18.72), + (24, 39, 0.02), + (25, 15, 0.051), + (25, 22, -0.001), + (25, 28, 20.72), + (25, 29, -19.72), + (25, 37, 2), + (25, 39, 0.01), + (26, 15, 0.051), + (26, 22, -0.001), + (26, 28, 20.72), + (26, 29, -19.72), + (26, 37, 2), + (26, 39, 0.01), + (27, 15, 0.051), + (27, 22, -0.001), + (27, 28, 20.72), + (27, 29, -19.72), + (27, 37, 2), + (27, 39, 0.01), + (28, 15, 0.051), + (28, 22, -0.001), + (28, 28, 20.72), + (28, 29, -19.72), + (28, 37, 2), + (28, 39, 0.01), + (29, 15, 0.051), + (29, 22, -0.001), + (29, 28, 20.72), + (29, 29, -19.72), + (29, 37, 2), + (29, 39, 0.01), + (30, 15, 0.051), + (30, 22, -0.001), + (30, 28, 20.72), + (30, 29, -19.72), + (30, 37, 2), + (30, 39, 0.01); INSERT INTO `hedera`.`visit`(`id`, `firstAgentFk`) - VALUES - (1, NULL), - (2, NULL), - (3, NULL), - (4, NULL), - (5, NULL), - (6, NULL), - (7, NULL), - (8, NULL), - (9, NULL), - (10, NULL), - (11, NULL); + VALUES + (1, NULL), + (2, NULL), + (3, NULL), + (4, NULL), + (5, NULL), + (6, NULL), + (7, NULL), + (8, NULL), + (9, NULL), + (10, NULL), + (11, NULL); INSERT INTO `hedera`.`visitAgent`(`id`, `visitFk`) - VALUES - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11); + VALUES + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11); INSERT INTO `hedera`.`visitAccess`(`id`, `agentFk`, `stamp`) - VALUES - (1, 1, util.VN_CURDATE()), - (2, 2, util.VN_CURDATE()), - (3, 3, util.VN_CURDATE()), - (4, 4, util.VN_CURDATE()), - (5, 5, util.VN_CURDATE()), - (6, 6, util.VN_CURDATE()), - (7, 7, util.VN_CURDATE()), - (8, 8, util.VN_CURDATE()), - (9, 9, util.VN_CURDATE()), - (10, 10, util.VN_CURDATE()), - (11, 11, util.VN_CURDATE()); + VALUES + (1, 1, util.VN_CURDATE()), + (2, 2, util.VN_CURDATE()), + (3, 3, util.VN_CURDATE()), + (4, 4, util.VN_CURDATE()), + (5, 5, util.VN_CURDATE()), + (6, 6, util.VN_CURDATE()), + (7, 7, util.VN_CURDATE()), + (8, 8, util.VN_CURDATE()), + (9, 9, util.VN_CURDATE()), + (10, 10, util.VN_CURDATE()), + (11, 11, util.VN_CURDATE()); INSERT INTO `hedera`.`visitUser`(`id`, `accessFk`, `userFk`, `stamp`) - VALUES - (1, 1, 1101, util.VN_CURDATE()), - (2, 2, 1101, util.VN_CURDATE()), - (3, 3, 1101, util.VN_CURDATE()), - (4, 4, 1102, util.VN_CURDATE()), - (5, 5, 1102, util.VN_CURDATE()), - (6, 6, 1102, util.VN_CURDATE()), - (7, 7, 1103, util.VN_CURDATE()), - (8, 8, 1103, util.VN_CURDATE()), - (9, 9, 1103, util.VN_CURDATE()), - (10, 10, 1102, DATE_SUB(util.VN_CURDATE(), INTERVAL 1 DAY)), - (11, 11, 1103, DATE_SUB(util.VN_CURDATE(), INTERVAL 1 DAY)); + VALUES + (1, 1, 1101, util.VN_CURDATE()), + (2, 2, 1101, util.VN_CURDATE()), + (3, 3, 1101, util.VN_CURDATE()), + (4, 4, 1102, util.VN_CURDATE()), + (5, 5, 1102, util.VN_CURDATE()), + (6, 6, 1102, util.VN_CURDATE()), + (7, 7, 1103, util.VN_CURDATE()), + (8, 8, 1103, util.VN_CURDATE()), + (9, 9, 1103, util.VN_CURDATE()), + (10, 10, 1102, DATE_SUB(util.VN_CURDATE(), INTERVAL 1 DAY)), + (11, 11, 1103, DATE_SUB(util.VN_CURDATE(), INTERVAL 1 DAY)); INSERT INTO `hedera`.`userSession`(`created`, `lastUpdate`, `ssid`, `data`, `userVisitFk`) - VALUES - (util.VN_CURDATE(), util.VN_CURDATE(), '121', 'data', 1), - (util.VN_CURDATE(), util.VN_CURDATE(), '122', 'data', 2), - (util.VN_CURDATE(), util.VN_CURDATE(), '123', 'data', 3), - (util.VN_CURDATE(), util.VN_CURDATE(), '124', 'data', 4), - (util.VN_CURDATE(), util.VN_CURDATE(), '125', 'data', 5), - (util.VN_CURDATE(), util.VN_CURDATE(), '126', 'data', 6), - (util.VN_CURDATE(), util.VN_CURDATE(), '127', 'data', 7), - (util.VN_CURDATE(), util.VN_CURDATE(), '128', 'data', 8), - (util.VN_CURDATE(), util.VN_CURDATE(), '129', 'data', 9); + VALUES + (util.VN_CURDATE(), util.VN_CURDATE(), '121', 'data', 1), + (util.VN_CURDATE(), util.VN_CURDATE(), '122', 'data', 2), + (util.VN_CURDATE(), util.VN_CURDATE(), '123', 'data', 3), + (util.VN_CURDATE(), util.VN_CURDATE(), '124', 'data', 4), + (util.VN_CURDATE(), util.VN_CURDATE(), '125', 'data', 5), + (util.VN_CURDATE(), util.VN_CURDATE(), '126', 'data', 6), + (util.VN_CURDATE(), util.VN_CURDATE(), '127', 'data', 7), + (util.VN_CURDATE(), util.VN_CURDATE(), '128', 'data', 8), + (util.VN_CURDATE(), util.VN_CURDATE(), '129', 'data', 9); INSERT INTO `vn`.`clientContact`(`id`, `clientFk`, `name`, `phone`) - VALUES - (1, 1101, 'contact 1', 666777888), - (2, 1101, 'contact 2', 111222333), - (3, 1101, 'contact 3', 222333444), - (4, 1102, 'contact 1', 876543219); + VALUES + (1, 1101, 'contact 1', 666777888), + (2, 1101, 'contact 2', 111222333), + (3, 1101, 'contact 3', 222333444), + (4, 1102, 'contact 1', 876543219); INSERT INTO `vn`.`workerManaExcluded`(`workerFk`) - VALUES - (9); + VALUES + (9); /* - el mana de los trabajadores lo podemos poner a mano en la tabla si lo calculamos antes, - pero si hazemos alguna modificacion en alguna tabla que utiliza para calcularlo ya no seria correcto +el mana de los trabajadores lo podemos poner a mano en la tabla si lo calculamos antes, +pero si hazemos alguna modificacion en alguna tabla que utiliza para calcularlo ya no seria correcto - La otra manera es poner el calculo con los 2 trabajadores que utilizamos ahora mismo para los tickets +La otra manera es poner el calculo con los 2 trabajadores que utilizamos ahora mismo para los tickets */ call vn.manaSpellersRequery(19); call vn.manaSpellersRequery(18); INSERT INTO `vn`.`clientSample`(`id`, `clientFk`, `typeFk`, `created`, `workerFk`, `userFk`, `companyFk`) - VALUES - (1, 1101, 1, util.VN_CURDATE(), 18, 18, 442), - (2, 1101, 1, util.VN_CURDATE(), 18, 18, 442), - (3, 1101, 2, util.VN_CURDATE(), 18, 18, 442), - (4, 1102, 2, util.VN_CURDATE(), 18, 18, 567), - (5, 1102, 3, util.VN_CURDATE(), 19, 19, 567); + VALUES + (1, 1101, 1, util.VN_CURDATE(), 18, 18, 442), + (2, 1101, 1, util.VN_CURDATE(), 18, 18, 442), + (3, 1101, 2, util.VN_CURDATE(), 18, 18, 442), + (4, 1102, 2, util.VN_CURDATE(), 18, 18, 567), + (5, 1102, 3, util.VN_CURDATE(), 19, 19, 567); INSERT INTO `vn`.`claimState`(`id`, `code`, `description`, `roleFk`, `priority`, `hasToNotify`) - VALUES - ( 1, 'pending', 'Pendiente', 1, 1, 0), - ( 3, 'resolved', 'Resuelto', 72, 7, 0), - ( 4, 'canceled', 'Anulado', 72, 6, 1), - ( 5, 'incomplete', 'Incompleta', 1, 3, 1); + VALUES + ( 1, 'pending', 'Pendiente', 1, 1, 0), + ( 3, 'resolved', 'Resuelto', 72, 7, 0), + ( 4, 'canceled', 'Anulado', 72, 6, 1), + ( 5, 'incomplete', 'Incompleta', 1, 3, 1); INSERT INTO `vn`.`claim`(`id`, `ticketCreated`, `claimStateFk`, `clientFk`, `workerFk`, `responsibility`, `isChargedToMana`, `created`, `packages`, `ticketFk`) - VALUES - (1, util.VN_CURDATE(), 1, 1101, 19, 3, 0, util.VN_CURDATE(), 0, 11), - (2, util.VN_CURDATE(), 4, 1101, 18, 3, 0, util.VN_CURDATE(), 1, 16), - (3, util.VN_CURDATE(), 3, 1101, 19, 1, 1, util.VN_CURDATE(), 5, 7), - (4, util.VN_CURDATE(), 3, 1104, 18, 5, 0, util.VN_CURDATE(), 10, 8); + VALUES + (1, util.VN_CURDATE(), 1, 1101, 19, 3, 0, util.VN_CURDATE(), 0, 11), + (2, util.VN_CURDATE(), 4, 1101, 18, 3, 0, util.VN_CURDATE(), 1, 16), + (3, util.VN_CURDATE(), 3, 1101, 19, 1, 1, util.VN_CURDATE(), 5, 7), + (4, util.VN_CURDATE(), 3, 1104, 18, 5, 0, util.VN_CURDATE(), 10, 8); INSERT INTO `vn`.`claimObservation` (`claimFk`, `workerFk`, `text`, `created`) - VALUES - (1, 18, 'Cu nam labores lobortis definiebas, ei aliquyam salutatus persequeris quo, cum eu nemore fierent dissentiunt. Per vero dolor id, vide democritum scribentur eu vim, pri erroribus temporibus ex.', util.VN_CURDATE()), - (2, 18, 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.', util.VN_CURDATE()), - (3, 18, 'An vim commodo dolorem volutpat, cu expetendis voluptatum usu, et mutat consul adversarium his. His natum numquam legimus an, diam fabulas mei ut. Melius fabellas sadipscing vel id. Partem diceret mandamus mea ne, has te tempor nostrud. Aeque nostro eum no.', util.VN_CURDATE()), - (4, 18, 'Wisi forensibus mnesarchum in cum. Per id impetus abhorreant, his no magna definiebas, inani rationibus in quo. Ut vidisse dolores est, ut quis nominavi mel. Ad pri quod apeirian concludaturque.', util.VN_CURDATE()); + VALUES + (1, 18, 'Cu nam labores lobortis definiebas, ei aliquyam salutatus persequeris quo, cum eu nemore fierent dissentiunt. Per vero dolor id, vide democritum scribentur eu vim, pri erroribus temporibus ex.', util.VN_CURDATE()), + (2, 18, 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.', util.VN_CURDATE()), + (3, 18, 'An vim commodo dolorem volutpat, cu expetendis voluptatum usu, et mutat consul adversarium his. His natum numquam legimus an, diam fabulas mei ut. Melius fabellas sadipscing vel id. Partem diceret mandamus mea ne, has te tempor nostrud. Aeque nostro eum no.', util.VN_CURDATE()), + (4, 18, 'Wisi forensibus mnesarchum in cum. Per id impetus abhorreant, his no magna definiebas, inani rationibus in quo. Ut vidisse dolores est, ut quis nominavi mel. Ad pri quod apeirian concludaturque.', util.VN_CURDATE()); INSERT INTO `vn`.`claimBeginning`(`id`, `claimFk`, `saleFk`, `quantity`) - VALUES - (1, 1, 7, 5), - (2, 2, 10, 10), - (3, 3, 22, 1), - (4, 4, 13, 5); + VALUES + (1, 1, 7, 5), + (2, 2, 10, 10), + (3, 3, 22, 1), + (4, 4, 13, 5); INSERT INTO `vn`.`claimDestination`(`id`, `description`, `addressFk`) - VALUES - (1, 'Bueno', NULL), - (2, 'Basura/Perd.', 12), - (3, 'Confeccion', NULL), - (4, 'Reclam.PRAG', 12), - (5, 'Corregido', 11); + VALUES + (1, 'Bueno', NULL), + (2, 'Basura/Perd.', 12), + (3, 'Confeccion', NULL), + (4, 'Reclam.PRAG', 12), + (5, 'Corregido', 11); INSERT INTO `vn`.`claimDevelopment`(`id`, `claimFk`, `claimResponsibleFk`, `workerFk`, `claimReasonFk`, `claimResultFk`, `claimRedeliveryFk`, `claimDestinationFk`) - VALUES - (1, 1, 1, 21, 7, 1, 2, 5), - (2, 1, 2, 21, 7, 2, 2, 5), - (3, 2, 7, 21, 9, 3, 2, 5), - (4, 3, 7, 21, 15, 8, 2, 5), - (5, 4, 7, 21, 7, 8, 2, 5); + VALUES + (1, 1, 1, 21, 7, 1, 2, 5), + (2, 1, 2, 21, 7, 2, 2, 5), + (3, 2, 7, 21, 9, 3, 2, 5), + (4, 3, 7, 21, 15, 8, 2, 5), + (5, 4, 7, 21, 7, 8, 2, 5); INSERT INTO `vn`.`claimEnd`(`id`, `saleFk`, `claimFk`, `workerFk`, `claimDestinationFk`) - VALUES - (1, 31, 4, 21, 2), - (2, 32, 3, 21, 3); + VALUES + (1, 31, 4, 21, 2), + (2, 32, 3, 21, 3); INSERT INTO `vn`.`claimConfig`(`id`, `maxResponsibility`, `monthsToRefund`, `minShipped`) - VALUES - (1, 5, 4, '2016-10-01'); + VALUES + (1, 5, 4, '2016-10-01'); INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`) - VALUES - (1101, 500, NULL, 0.00, 0.00, 1.00), - (1102, 1000, 2.00, 0.01, 0.05, 1.00), - (1103, 2000, 0.00, 0.00, 0.02, 1.00), - (1104, 2500, 150.00, 0.02, 0.10, 1.00); + VALUES + (1101, 500, NULL, 0.00, 0.00, 1.00), + (1102, 1000, 2.00, 0.01, 0.05, 1.00), + (1103, 2000, 0.00, 0.00, 0.02, 1.00), + (1104, 2500, 150.00, 0.02, 0.10, 1.00); INSERT INTO `vn`.`claimLog` (`originFk`, userFk, `action`, changedModel, oldInstance, newInstance, changedModelId, `description`) - VALUES - (1, 18, 'update', 'Claim', '{"pickup":null}', '{"pickup":"agency"}', 1, NULL), - (1, 18, 'update', 'ClaimObservation', '{}', '{"claimFk":1,"text":"Waiting for customer"}', 1, NULL), - (1, 18, 'insert', 'ClaimBeginning', '{}', '{"claimFk":1,"saleFk":1,"quantity":10}', 1, NULL), - (1, 18, 'insert', 'ClaimDms', '{}', '{"claimFk":1,"dmsFk":1}', 1, NULL); + VALUES + (1, 18, 'update', 'Claim', '{"pickup":null}', '{"pickup":"agency"}', 1, NULL), + (1, 18, 'update', 'ClaimObservation', '{}', '{"claimFk":1,"text":"Waiting for customer"}', 1, NULL), + (1, 18, 'insert', 'ClaimBeginning', '{}', '{"claimFk":1,"saleFk":1,"quantity":10}', 1, NULL), + (1, 18, 'insert', 'ClaimDms', '{}', '{"claimFk":1,"dmsFk":1}', 1, NULL); INSERT INTO `hedera`.`tpvMerchant`(`id`, `description`, `companyFk`, `bankFk`, `secretKey`) - VALUES - (1, 'Arkham Bank', 442, 1, 'h12387193H10238'), - (2, 'NewYork Bank', 442, 1, '7981ugsgd1hsdad'); + VALUES + (1, 'Arkham Bank', 442, 1, 'h12387193H10238'), + (2, 'NewYork Bank', 442, 1, '7981ugsgd1hsdad'); INSERT INTO `hedera`.`tpvTransaction`(`id`,`merchantFk`, `clientFk`,`receiptFk`, `amount`, `response`, `errorCode`, `status`, `created`) - VALUES - (1, 1, 1101, NULL, 2000, NULL, 'SIS0042', 'ok', util.VN_CURDATE()), - (2, 1, 1101, NULL, 1000, NULL, 'SIS0051', 'started', util.VN_CURDATE()), - (3, 2, 1101, NULL, 7268, NULL, NULL, 'ok', util.VN_CURDATE()), - (4, 2, 1101, NULL, 4698, NULL, NULL, 'started', util.VN_CURDATE()), - (5, 1, 1104, NULL, 2000, NULL, 'SIS0043', 'ok', util.VN_CURDATE()), - (6, 2, 1104, NULL, 4000, NULL, 'SIS0044', 'started', util.VN_CURDATE()); + VALUES + (1, 1, 1101, NULL, 2000, NULL, 'SIS0042', 'ok', util.VN_CURDATE()), + (2, 1, 1101, NULL, 1000, NULL, 'SIS0051', 'started', util.VN_CURDATE()), + (3, 2, 1101, NULL, 7268, NULL, NULL, 'ok', util.VN_CURDATE()), + (4, 2, 1101, NULL, 4698, NULL, NULL, 'started', util.VN_CURDATE()), + (5, 1, 1104, NULL, 2000, NULL, 'SIS0043', 'ok', util.VN_CURDATE()), + (6, 2, 1104, NULL, 4000, NULL, 'SIS0044', 'started', util.VN_CURDATE()); INSERT INTO `vn`.`orderTicket`(`orderFk`, `ticketFk`) - VALUES - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), - (15, 15), - (16, 16), - (17, 17), - (18, 18), - (19, 19), - (20, 20), - (21, 21), - (22, 22); + VALUES + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), + (17, 17), + (18, 18), + (19, 19), + (20, 20), + (21, 21), + (22, 22); INSERT INTO `vn`.`userMultiConfig` (`userFk`, `warehouseFk`, `companyFk`) - VALUES - (1, 1, 69), - (5, 1, 442), - (9, 1, 442), - (18, 3, 567); + VALUES + (1, 1, 69), + (5, 1, 442), + (9, 1, 442), + (18, 3, 567); INSERT INTO `vn`.`receipt`(`id`, `invoiceFk`, `amountPaid`, `payed`, `workerFk`, `bankFk`, `clientFk`, `created`, `companyFk`, `isConciliate`) - VALUES - (1, 'Cobro web', 100.50, util.VN_CURDATE(), 9, 1, 1101, util.VN_CURDATE(), 442, 1), - (2, 'Cobro web', 200.50, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), 9, 1, 1101, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), 442, 1), - (3, 'Cobro en efectivo', 300.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), 9, 1, 1102, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), 442, 0), - (4, 'Cobro en efectivo', 400.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 9, 1, 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 442, 0), - (5, 'Compensación', 400.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 9, 3, 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 442, 0); + VALUES + (1, 'Cobro web', 100.50, util.VN_CURDATE(), 9, 1, 1101, util.VN_CURDATE(), 442, 1), + (2, 'Cobro web', 200.50, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), 9, 1, 1101, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), 442, 1), + (3, 'Cobro en efectivo', 300.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), 9, 1, 1102, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), 442, 0), + (4, 'Cobro en efectivo', 400.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 9, 1, 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 442, 0), + (5, 'Compensación', 400.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 9, 3, 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 442, 0); INSERT INTO `vn`.`workerTeam`(`id`, `team`, `workerFk`) - VALUES - (1, 1, 9), - (2, 2, 18), - (3, 2, 19), - (4, 3, 1101), - (5, 3, 1102), - (6, 4, 1103), - (7, 4, 1104); + VALUES + (1, 1, 9), + (2, 2, 18), + (3, 2, 19), + (4, 3, 1101), + (5, 3, 1102), + (6, 4, 1103), + (7, 4, 1104); INSERT INTO `vn`.`ticketRequest`(`id`, `description`, `requesterFk`, `attenderFk`, `quantity`, `itemFk`, `price`, `isOk`, `saleFk`, `ticketFk`, `created`) - VALUES - (1, 'Ranged weapon longbow 200cm', 18, 35, 5, 1, 9.10, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY)), - (2, 'Melee weapon combat first 15cm', 18, 35, 10, 2, 1.07, 0, NULL, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY)), - (3, 'Melee weapon heavy shield 100cm', 18, 35, 20, NULL, 3.06, NULL, NULL, 23, util.VN_CURDATE()), - (4, 'Melee weapon combat first 15cm', 18, 35, 15, NULL, 1.30, NULL, NULL, 11, util.VN_CURDATE()), - (5, 'Melee weapon combat first 15cm', 18, 35, 15, 4, 1.30, 0, NULL, 18, util.VN_CURDATE()); + VALUES + (1, 'Ranged weapon longbow 200cm', 18, 35, 5, 1, 9.10, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY)), + (2, 'Melee weapon combat first 15cm', 18, 35, 10, 2, 1.07, 0, NULL, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY)), + (3, 'Melee weapon heavy shield 100cm', 18, 35, 20, NULL, 3.06, NULL, NULL, 23, util.VN_CURDATE()), + (4, 'Melee weapon combat first 15cm', 18, 35, 15, NULL, 1.30, NULL, NULL, 11, util.VN_CURDATE()), + (5, 'Melee weapon combat first 15cm', 18, 35, 15, 4, 1.30, 0, NULL, 18, util.VN_CURDATE()); INSERT INTO `vn`.`ticketServiceType`(`id`, `name`, `expenseFk`) - VALUES - (1, 'Porte Agencia', 7001000000), - (2, 'Portes Retorno', 7001000000), - (3, 'Porte Carry', 7001000000), - (4, 'Cargo FITOSANITARIO', 4751000000), - (5, 'Documentos', 2000000000); + VALUES + (1, 'Porte Agencia', 7001000000), + (2, 'Portes Retorno', 7001000000), + (3, 'Porte Carry', 7001000000), + (4, 'Cargo FITOSANITARIO', 4751000000), + (5, 'Documentos', 2000000000); INSERT INTO `vn`.`ticketService`(`id`, `description`, `quantity`, `price`, `taxClassFk`, `ticketFk`, `ticketServiceTypeFk`) - VALUES - (1, 'Documentos', 1, 2.00, 1, 1, 1), - (2, 'Porte Agencia', 1, 10.00, 1, 2, 1), - (3, 'Documentos', 1, 5.50, 1, 11, 1), - (4, 'Documentos', 1, 2.00, 1, 9, 1), - (5, 'Documentos', 1, 2.00, 1, 8, 1); + VALUES + (1, 'Documentos', 1, 2.00, 1, 1, 1), + (2, 'Porte Agencia', 1, 10.00, 1, 2, 1), + (3, 'Documentos', 1, 5.50, 1, 11, 1), + (4, 'Documentos', 1, 2.00, 1, 9, 1), + (5, 'Documentos', 1, 2.00, 1, 8, 1); INSERT INTO `pbx`.`config` (id,defaultPrefix) - VALUES (1,'0034'); + VALUES (1,'0034'); INSERT IGNORE INTO `pbx`.`prefix` (country, prefix) - VALUES - ('es', '0034'), - ('fr', '0033'), - ('pt', '00351'); + VALUES + ('es', '0034'), + ('fr', '0033'), + ('pt', '00351'); INSERT INTO `pbx`.`sip`(`user_id`, `extension`) - VALUES - (1, 1010), - (3, 1101), - (5, 1102), - (9, 1201); + VALUES + (1, 1010), + (3, 1101), + (5, 1102), + (9, 1201); INSERT INTO `vn`.`professionalCategory` (`id`, `description`) - VALUES - (1, 'employee'), - (2, 'florist'); + VALUES + (1, 'employee'), + (2, 'florist'); INSERT INTO `vn`.`calendarType` (`id`, `description`, `hoursWeek`, `isPartial`) - VALUES - (1, 'General schedule', 40, 0); + VALUES + (1, 'General schedule', 40, 0); INSERT INTO `vn`.`workerBusinessAgreement` (`id`, `name`, `monthHolidays`, `yearHours`, `started`, `ended`) - VALUES(1, 'flowers', 2.5, 1830, '2001-01-01', NULL); + VALUES(1, 'flowers', 2.5, 1830, '2001-01-01', NULL); DROP TEMPORARY TABLE IF EXISTS tmp.worker; CREATE TEMPORARY TABLE tmp.worker - (PRIMARY KEY (id)) - ENGINE = MEMORY - SELECT w.id, w.id as `workerFk`, 'VNL', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-12-25') as started, CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL +1 YEAR)), '-12-25') as ended, CONCAT('E-46-', RPAD(CONCAT(w.id, 9), 8, w.id)), NULL as `notes`, NULL as `departmentFk`, 23, 1 as `workerBusinessProfessionalCategoryFk`, 1 as `calendarTypeFk`, 1 as `isHourlyLabor`, 1 as `workerBusinessAgreementFk`, 1 as `workcenterFk` + (PRIMARY KEY (id)) + ENGINE = MEMORY + SELECT w.id, w.id as `workerFk`, 'VNL', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-12-25') as started, CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL +1 YEAR)), '-12-25') as ended, CONCAT('E-46-', RPAD(CONCAT(w.id, 9), 8, w.id)), NULL as `notes`, NULL as `departmentFk`, 23, 1 as `workerBusinessProfessionalCategoryFk`, 1 as `calendarTypeFk`, 1 as `isHourlyLabor`, 1 as `workerBusinessAgreementFk`, 1 as `workcenterFk` FROM `vn`.`worker` `w`; INSERT INTO `vn`.`business`(`id`, `workerFk`, `companyCodeFk`, `started`, `ended`, `workerBusiness`, `reasonEndFk`, `notes`, `departmentFk`, `workerBusinessProfessionalCategoryFk`, `calendarTypeFk`, `isHourlyLabor`, `workerBusinessAgreementFk`, `workcenterFk`) @@ -2079,610 +2079,610 @@ INSERT INTO `vn`.`business`(`id`, `workerFk`, `companyCodeFk`, `started`, `ended DROP TEMPORARY TABLE IF EXISTS tmp.worker; CREATE TEMPORARY TABLE tmp.worker - (PRIMARY KEY (id)) - ENGINE = MEMORY - SELECT '1111' as 'id', w.id as `workerFk`, 'VNL', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-12-25') as started, CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-12-24') as ended, CONCAT('E-46-', RPAD(CONCAT(w.id, 9), 8, w.id)), NULL as `notes`, NULL as `departmentFk`, 23, 1 as `workerBusinessProfessionalCategoryFk`, 1 as `calendarTypeFk`, 1 as `isHourlyLabor`, 1 as `workerBusinessAgreementFk`, 1 as `workcenterFk` + (PRIMARY KEY (id)) + ENGINE = MEMORY + SELECT '1111' as 'id', w.id as `workerFk`, 'VNL', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-12-25') as started, CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-12-24') as ended, CONCAT('E-46-', RPAD(CONCAT(w.id, 9), 8, w.id)), NULL as `notes`, NULL as `departmentFk`, 23, 1 as `workerBusinessProfessionalCategoryFk`, 1 as `calendarTypeFk`, 1 as `isHourlyLabor`, 1 as `workerBusinessAgreementFk`, 1 as `workcenterFk` FROM `vn`.`worker` `w` WHERE `w`.`id` = 1109; INSERT INTO `vn`.`business` (`id`, `workerFk`, `companyCodeFk`, `started`, `ended`, `workerBusiness`, `reasonEndFk`, `notes`, `departmentFk`, `workerBusinessProfessionalCategoryFk`, `calendarTypeFk`, `isHourlyLabor`, `workerBusinessAgreementFk`, `workcenterFk`) - SELECT * FROM tmp.worker; + SELECT * FROM tmp.worker; DROP TEMPORARY TABLE IF EXISTS tmp.worker; UPDATE `vn`.`business` - SET `payedHolidays`= 8 - WHERE `id`= 1106; + SET `payedHolidays`= 8 + WHERE `id`= 1106; UPDATE `vn`.`business` b - SET b.`workerBusinessProfessionalCategoryFk` = 2 - WHERE b.`workerFk` = 1110; + SET b.`workerBusinessProfessionalCategoryFk` = 2 + WHERE b.`workerFk` = 1110; UPDATE `vn`.`business` b - SET b.`departmentFk` = 43 - WHERE b.id IN(18, 19); + SET b.`departmentFk` = 43 + WHERE b.id IN(18, 19); UPDATE `vn`.`business` b - SET b.`started` = b.`started` - INTERVAL 100 DAY - WHERE b.id = 1107; + SET b.`started` = b.`started` - INTERVAL 100 DAY + WHERE b.id = 1107; INSERT INTO `vn`.`workCenterHoliday` (`workCenterFk`, `days`, `year`) - VALUES - ('1', '27.5', YEAR(util.VN_CURDATE())), - ('5', '22', YEAR(util.VN_CURDATE())), - ('1', '24.5', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR))), - ('5', '23', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR))); + VALUES + ('1', '27.5', YEAR(util.VN_CURDATE())), + ('5', '22', YEAR(util.VN_CURDATE())), + ('1', '24.5', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR))), + ('5', '23', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR))); INSERT INTO `vn`.`workerBusinessType` (`id`, `name`, `isFullTime`, `isPermanent`, `hasHolidayEntitlement`) - VALUES - (1, 'CONTRATO HOLANDA', 1, 0, 1), - (100, 'INDEFINIDO A TIEMPO COMPLETO', 1, 1, 1), - (109, 'CONVERSION DE TEMPORAL EN INDEFINIDO T.COMPLETO', 1, 1, 1); + VALUES + (1, 'CONTRATO HOLANDA', 1, 0, 1), + (100, 'INDEFINIDO A TIEMPO COMPLETO', 1, 1, 1), + (109, 'CONVERSION DE TEMPORAL EN INDEFINIDO T.COMPLETO', 1, 1, 1); UPDATE `vn`.`business` b - SET `rate` = 7, - `workerBusinessTypeFk` = 100, - `amount` = 900.50 - WHERE b.id = 1; + SET `rate` = 7, + `workerBusinessTypeFk` = 100, + `amount` = 900.50 + WHERE b.id = 1; UPDATE `vn`.`business` b - SET `rate` = 7, - `workerBusinessTypeFk` = 100, - `amount` = 1263.03 - WHERE b.id = 1106; + SET `rate` = 7, + `workerBusinessTypeFk` = 100, + `amount` = 1263.03 + WHERE b.id = 1106; UPDATE `vn`.`business` b - SET `rate` = 7, - `workerBusinessTypeFk` = 100, - `amount` = 2000 - WHERE b.id = 1107; + SET `rate` = 7, + `workerBusinessTypeFk` = 100, + `amount` = 2000 + WHERE b.id = 1107; UPDATE `vn`.`business` b - SET `rate` = 7, - `workerBusinessTypeFk` = 100, - `amount` = 1500 - WHERE b.id = 1108; + SET `rate` = 7, + `workerBusinessTypeFk` = 100, + `amount` = 1500 + WHERE b.id = 1108; INSERT INTO `vn`.`absenceType` (`id`, `name`, `rgb`, `code`, `holidayEntitlementRate`, `discountRate`) - VALUES - (1, 'Holidays', '#FF4444', 'holiday', 0, 0), - (2, 'Leave of absence', '#C71585', 'absence', 0, 1), - (6, 'Half holiday', '#E65F00', 'halfHoliday', 0, 0.5), - (15, 'Half Paid Leave', '#5151c0', 'halfPaidLeave', 0, 1), - (20, 'Furlough', '#97B92F', 'furlough', 1, 1), - (21, 'Furlough half day', '#778899', 'halfFurlough', 0.5, 1); + VALUES + (1, 'Holidays', '#FF4444', 'holiday', 0, 0), + (2, 'Leave of absence', '#C71585', 'absence', 0, 1), + (6, 'Half holiday', '#E65F00', 'halfHoliday', 0, 0.5), + (15, 'Half Paid Leave', '#5151c0', 'halfPaidLeave', 0, 1), + (20, 'Furlough', '#97B92F', 'furlough', 1, 1), + (21, 'Furlough half day', '#778899', 'halfFurlough', 0.5, 1); INSERT INTO `vn`.`calendar` (`businessFk`, `dayOffTypeFk`, `dated`) - VALUES - (1, 6, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 10 DAY, util.VN_CURDATE() + INTERVAL 10 DAY)), - (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 10 DAY, util.VN_CURDATE() + INTERVAL 10 DAY)), - (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 11 DAY, util.VN_CURDATE() + INTERVAL 11 DAY)), - (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 12 DAY, util.VN_CURDATE() + INTERVAL 12 DAY)), - (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 20 DAY, util.VN_CURDATE() + INTERVAL 20 DAY)), - (1106, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 13 DAY, util.VN_CURDATE() + INTERVAL 8 DAY)), - (1106, 1, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 14 DAY, util.VN_CURDATE() + INTERVAL 9 DAY)), - (1106, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 15 DAY, util.VN_CURDATE() + INTERVAL 7 DAY)), - (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 10 DAY, util.VN_CURDATE() + INTERVAL 10 DAY)), - (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 11 DAY, util.VN_CURDATE() + INTERVAL 11 DAY)), - (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 12 DAY, util.VN_CURDATE() + INTERVAL 12 DAY)), - (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 20 DAY, util.VN_CURDATE() + INTERVAL 20 DAY)), - (1107, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 13 DAY, util.VN_CURDATE() + INTERVAL 8 DAY)), - (1107, 1, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 14 DAY, util.VN_CURDATE() + INTERVAL 9 DAY)), - (1107, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 15 DAY, util.VN_CURDATE() + INTERVAL 7 DAY)), - (1107, 2, util.VN_CURDATE() - INTERVAL 16 DAY); + VALUES + (1, 6, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 10 DAY, util.VN_CURDATE() + INTERVAL 10 DAY)), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 10 DAY, util.VN_CURDATE() + INTERVAL 10 DAY)), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 11 DAY, util.VN_CURDATE() + INTERVAL 11 DAY)), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 12 DAY, util.VN_CURDATE() + INTERVAL 12 DAY)), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 20 DAY, util.VN_CURDATE() + INTERVAL 20 DAY)), + (1106, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 13 DAY, util.VN_CURDATE() + INTERVAL 8 DAY)), + (1106, 1, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 14 DAY, util.VN_CURDATE() + INTERVAL 9 DAY)), + (1106, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 15 DAY, util.VN_CURDATE() + INTERVAL 7 DAY)), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 10 DAY, util.VN_CURDATE() + INTERVAL 10 DAY)), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 11 DAY, util.VN_CURDATE() + INTERVAL 11 DAY)), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 12 DAY, util.VN_CURDATE() + INTERVAL 12 DAY)), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, util.VN_CURDATE() - INTERVAL 20 DAY, util.VN_CURDATE() + INTERVAL 20 DAY)), + (1107, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 13 DAY, util.VN_CURDATE() + INTERVAL 8 DAY)), + (1107, 1, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 14 DAY, util.VN_CURDATE() + INTERVAL 9 DAY)), + (1107, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, util.VN_CURDATE() - INTERVAL 15 DAY, util.VN_CURDATE() + INTERVAL 7 DAY)), + (1107, 2, util.VN_CURDATE() - INTERVAL 16 DAY); INSERT INTO `vn`.`smsConfig` (`id`, `uri`, `title`, `apiKey`) - VALUES - ('1', 'https://api.gateway360.com/api/3.0/sms/send', 'Verdnatura', '5715476da95b46d686a5a255e6459523'); + VALUES + ('1', 'https://api.gateway360.com/api/3.0/sms/send', 'Verdnatura', '5715476da95b46d686a5a255e6459523'); INSERT INTO `vn`.`sharingClient`(`id`, `workerFk`, `started`, `ended`, `clientFk`) - VALUES - (1, 19, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 1101), - (2, 18, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 1106); + VALUES + (1, 19, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 1101), + (2, 18, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 1106); INSERT INTO `vn`.`sharingCart`(`id`, `workerFk`, `started`, `ended`, `workerSubstitute`, `created`) - VALUES - (1, 18, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 19, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY)); + VALUES + (1, 18, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 19, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY)); CALL `vn`.zoneGeo_calcTree(); -- this is an auto calculate for table vn.zoneGeo, columns: path,lft,rgt,depth,sons INSERT INTO `vn`.`zoneIncluded` (`zoneFk`, `geoFk`, `isIncluded`) - VALUES - (1, 3, 0), - (1, 4, 0), - (1, 5, 0), - (1, 1, 1), - (2, 3, 0), - (2, 4, 0), - (2, 5, 0), - (2, 1, 1), - (3, 3, 0), - (3, 4, 0), - (3, 5, 0), - (3, 1, 1), - (4, 3, 0), - (4, 4, 0), - (4, 5, 0), - (4, 1, 1), - (5, 3, 1), - (5, 4, 0), - (5, 5, 1), - (5, 1, 1), - (6, 3, 1), - (6, 4, 0), - (6, 5, 1), - (6, 1, 1), - (7, 3, 0), - (7, 4, 0), - (7, 5, 0), - (7, 1, 1), - (8, 3, 0), - (8, 4, 0), - (8, 5, 0), - (8, 1, 1), - (9, 7, 1), - (10, 14, 1); + VALUES + (1, 3, 0), + (1, 4, 0), + (1, 5, 0), + (1, 1, 1), + (2, 3, 0), + (2, 4, 0), + (2, 5, 0), + (2, 1, 1), + (3, 3, 0), + (3, 4, 0), + (3, 5, 0), + (3, 1, 1), + (4, 3, 0), + (4, 4, 0), + (4, 5, 0), + (4, 1, 1), + (5, 3, 1), + (5, 4, 0), + (5, 5, 1), + (5, 1, 1), + (6, 3, 1), + (6, 4, 0), + (6, 5, 1), + (6, 1, 1), + (7, 3, 0), + (7, 4, 0), + (7, 5, 0), + (7, 1, 1), + (8, 3, 0), + (8, 4, 0), + (8, 5, 0), + (8, 1, 1), + (9, 7, 1), + (10, 14, 1); INSERT INTO `vn`.`zoneEvent`(`zoneFk`, `type`, `dated`) - VALUES - (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=2, 2, 9) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=3, 3, 10) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=4, 4, 11) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=5, 5, 12) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=6, 6, 13) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=2, 2, 9) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=3, 3, 10) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=4, 4, 11) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=5, 5, 12) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=6, 6, 13) - DAYOFWEEK(util.VN_CURDATE())) DAY)), - (3, 'day', util.VN_CURDATE()), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), - (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), - (4, 'day', util.VN_CURDATE()), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), - (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), - (5, 'day', util.VN_CURDATE()), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), - (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), - (6, 'day', util.VN_CURDATE()), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), - (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), - (7, 'day', util.VN_CURDATE()), - (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), - (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), - (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), - (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), - (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), - (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)); + VALUES + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=2, 2, 9) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=3, 3, 10) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=4, 4, 11) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=5, 5, 12) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=6, 6, 13) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=2, 2, 9) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=3, 3, 10) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=4, 4, 11) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=5, 5, 12) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=6, 6, 13) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (3, 'day', util.VN_CURDATE()), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (4, 'day', util.VN_CURDATE()), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (5, 'day', util.VN_CURDATE()), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (6, 'day', util.VN_CURDATE()), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (7, 'day', util.VN_CURDATE()), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)); INSERT INTO `vn`.`zoneEvent`(`zoneFk`, `type`, `weekDays`) - VALUES - (8, 'indefinitely', 'mon,tue,wed,thu,fri,sat,sun'), - (10, 'indefinitely', 'mon,tue,wed,thu,fri,sat,sun'); + VALUES + (8, 'indefinitely', 'mon,tue,wed,thu,fri,sat,sun'), + (10, 'indefinitely', 'mon,tue,wed,thu,fri,sat,sun'); INSERT INTO `vn`.`zoneEvent`(`zoneFk`, `type`, `started`, `ended`, `weekDays`) - VALUES - (9, 'range', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 YEAR), 'mon'), - (9, 'range', util.VN_CURDATE(), NULL, 'tue'), - (9, 'range', NULL, util.VN_CURDATE(), 'wed'); + VALUES + (9, 'range', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 YEAR), 'mon'), + (9, 'range', util.VN_CURDATE(), NULL, 'tue'), + (9, 'range', NULL, util.VN_CURDATE(), 'wed'); INSERT INTO `vn`.`workerTimeControl`(`userFk`, `timed`, `manual`, `direction`, `isSendMail`) - VALUES - (1106, CONCAT(util.VN_CURDATE(), ' 07:00'), TRUE, 'in', 0), - (1106, CONCAT(util.VN_CURDATE(), ' 10:00'), TRUE, 'middle', 0), - (1106, CONCAT(util.VN_CURDATE(), ' 10:20'), TRUE, 'middle', 0), - (1106, CONCAT(util.VN_CURDATE(), ' 14:50'), TRUE, 'out', 0), - (1107, CONCAT(util.VN_CURDATE(), ' 07:00'), TRUE, 'in', 1), - (1107, CONCAT(util.VN_CURDATE(), ' 10:00'), TRUE, 'middle', 1), - (1107, CONCAT(util.VN_CURDATE(), ' 10:20'), TRUE, 'middle', 1), - (1107, CONCAT(util.VN_CURDATE(), ' 14:50'), TRUE, 'out', 1); + VALUES + (1106, CONCAT(util.VN_CURDATE(), ' 07:00'), TRUE, 'in', 0), + (1106, CONCAT(util.VN_CURDATE(), ' 10:00'), TRUE, 'middle', 0), + (1106, CONCAT(util.VN_CURDATE(), ' 10:20'), TRUE, 'middle', 0), + (1106, CONCAT(util.VN_CURDATE(), ' 14:50'), TRUE, 'out', 0), + (1107, CONCAT(util.VN_CURDATE(), ' 07:00'), TRUE, 'in', 1), + (1107, CONCAT(util.VN_CURDATE(), ' 10:00'), TRUE, 'middle', 1), + (1107, CONCAT(util.VN_CURDATE(), ' 10:20'), TRUE, 'middle', 1), + (1107, CONCAT(util.VN_CURDATE(), ' 14:50'), TRUE, 'out', 1); INSERT INTO `vn`.`dmsType` (`id`, `name`, `readRoleFk`, `writeRoleFk`, `code`) - VALUES - (1, 'Facturas Recibidas', 1, 1, 'invoiceIn'), - (2, 'Doc oficial', NULL, NULL, 'officialDoc'), - (3, 'Laboral', 37, 37, 'hhrrData'), - (4, 'Albaranes recibidos', NULL, NULL, 'deliveryNote'), - (5, 'Otros', 1, 1, 'miscellaneous'), - (6, 'Pruebas', NULL, NULL, 'tests'), - (7, 'IAE Clientes', 1, 1, 'economicActivitiesTax'), - (8, 'Fiscal', NULL, NULL, 'fiscal'), - (9, 'Vehiculos', NULL, NULL, 'vehicles'), - (10, 'Plantillas', NULL, NULL, 'templates'), - (11, 'Contratos', NULL, NULL, 'contracts'), - (12, 'ley de pagos', 1, 1, 'paymentsLaw'), - (13, 'Basura', 1, 1, 'trash'), - (14, 'Ticket', 1, 1, 'ticket'), - (15, 'Presupuestos', NULL, NULL, 'budgets'), - (16, 'Logistica', NULL, NULL, 'logistics'), - (17, 'cmr', 1, 1, 'cmr'), - (18, 'dua', NULL, NULL, 'dua'), - (19, 'inmovilizado', NULL, NULL, 'fixedAssets'), - (20, 'Reclamación', 1, 1, 'claim'), - (21, 'Entrada', 1, 1, 'entry'), + VALUES + (1, 'Facturas Recibidas', 1, 1, 'invoiceIn'), + (2, 'Doc oficial', NULL, NULL, 'officialDoc'), + (3, 'Laboral', 37, 37, 'hhrrData'), + (4, 'Albaranes recibidos', NULL, NULL, 'deliveryNote'), + (5, 'Otros', 1, 1, 'miscellaneous'), + (6, 'Pruebas', NULL, NULL, 'tests'), + (7, 'IAE Clientes', 1, 1, 'economicActivitiesTax'), + (8, 'Fiscal', NULL, NULL, 'fiscal'), + (9, 'Vehiculos', NULL, NULL, 'vehicles'), + (10, 'Plantillas', NULL, NULL, 'templates'), + (11, 'Contratos', NULL, NULL, 'contracts'), + (12, 'ley de pagos', 1, 1, 'paymentsLaw'), + (13, 'Basura', 1, 1, 'trash'), + (14, 'Ticket', 1, 1, 'ticket'), + (15, 'Presupuestos', NULL, NULL, 'budgets'), + (16, 'Logistica', NULL, NULL, 'logistics'), + (17, 'cmr', 1, 1, 'cmr'), + (18, 'dua', NULL, NULL, 'dua'), + (19, 'inmovilizado', NULL, NULL, 'fixedAssets'), + (20, 'Reclamación', 1, 1, 'claim'), + (21, 'Entrada', 1, 1, 'entry'), (22, 'Proveedor', 1, 1, 'supplier'), (23, 'Termografos', 35, 35, 'thermograph'), (24, 'Sello de calidad', 1, 1, 'qualitySeal'); INSERT INTO `vn`.`dms`(`id`, `dmsTypeFk`, `file`, `contentType`, `workerFk`, `warehouseFk`, `companyFk`, `hardCopyNumber`, `hasFile`, `reference`, `description`, `created`) - VALUES - (1, 14, '1.txt', 'text/plain', 5, 1, 442, NULL, FALSE, 'Ticket:11', 'Ticket:11 dms for the ticket', util.VN_CURDATE()), - (2, 5, '2.txt', 'text/plain', 5, 1, 442, 1, TRUE, 'Client:104', 'Client:104 dms for the client', util.VN_CURDATE()), - (3, 5, '3.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Client: 104', 'Client:104 readme', util.VN_CURDATE()), - (4, 3, '4.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Worker: 106', 'Worker:106 readme', util.VN_CURDATE()), - (5, 23, '5.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'travel: 1', 'dmsForThermograph', util.VN_CURDATE()), - (6, 5, '6.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'NotExists', 'DoesNotExists', util.VN_CURDATE()), - (7, 20, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()), - (8, 20, '8.mp4', 'video/mp4', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()), - (9, 21, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'ENTRADA ID 1', util.VN_CURDATE()), + VALUES + (1, 14, '1.txt', 'text/plain', 5, 1, 442, NULL, FALSE, 'Ticket:11', 'Ticket:11 dms for the ticket', util.VN_CURDATE()), + (2, 5, '2.txt', 'text/plain', 5, 1, 442, 1, TRUE, 'Client:104', 'Client:104 dms for the client', util.VN_CURDATE()), + (3, 5, '3.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Client: 104', 'Client:104 readme', util.VN_CURDATE()), + (4, 3, '4.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Worker: 106', 'Worker:106 readme', util.VN_CURDATE()), + (5, 23, '5.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'travel: 1', 'dmsForThermograph', util.VN_CURDATE()), + (6, 5, '6.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'NotExists', 'DoesNotExists', util.VN_CURDATE()), + (7, 20, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()), + (8, 20, '8.mp4', 'video/mp4', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()), + (9, 21, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'ENTRADA ID 1', util.VN_CURDATE()), (10, 21, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'ENTRADA DE PRUEBA', util.VN_CURDATE()); INSERT INTO `vn`.`claimDms`(`claimFk`, `dmsFk`) - VALUES - (1, 7), - (1, 8); + VALUES + (1, 7), + (1, 8); INSERT INTO `vn`.`ticketDms`(`ticketFk`, `dmsFk`) - VALUES - (11, 1); + VALUES + (11, 1); INSERT INTO `vn`.`clientDms`(`clientFk`, `dmsFk`) - VALUES - (1104, 2), - (1104, 3); + VALUES + (1104, 2), + (1104, 3); INSERT INTO `vn`.`workerDms`(`id`, `workerFk`, `dmsFk`,`isReadableByWorker`) - VALUES - (1, 1106, 4, TRUE), - (2, 1107, 3, FALSE); + VALUES + (1, 1106, 4, TRUE), + (2, 1107, 3, FALSE); INSERT INTO `vn`.`device` (`sn`, `model`, `userFk`) - VALUES - ('aaa', 'android', '9'); + VALUES + ('aaa', 'android', '9'); INSERT INTO `vn`.`queuePriority`(`id`, `priority`, `code`) - VALUES - (1, 'Alta', 'high'), - (2, 'Normal', 'normal'), - (3, 'Baja', 'low'); + VALUES + (1, 'Alta', 'high'), + (2, 'Normal', 'normal'), + (3, 'Baja', 'low'); INSERT IGNORE INTO `vn`.`greugeConfig` (`id`, `freightPickUpPrice`) VALUES ('1', '11'); INSERT INTO `vn`.`thermograph`(`id`, `model`) - VALUES - ('TMM190901395', 'TEMPMATE'), - ('TL.BBA85422', 'TL30'), - ('TZ1905012010', 'DISPOSABLE'), - ('138350-0', 'DISPOSABLE'); + VALUES + ('TMM190901395', 'TEMPMATE'), + ('TL.BBA85422', 'TL30'), + ('TZ1905012010', 'DISPOSABLE'), + ('138350-0', 'DISPOSABLE'); INSERT INTO `vn`.`travelThermograph` (`thermographFk`, `created`, `warehouseFk`, `travelFk`, `temperatureFk`, `minTemperature`, `maxTemperature`, `result`, `dmsFk`) - VALUES - ('TMM190901395', util.VN_CURDATE(), 1, 1, 'WARM', NULL, NULL, 'Ok', NULL), - ('TL.BBA85422', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 2, 'COOL', NULL, NULL, 'Ok', NULL), - ('TL.BBA85422', util.VN_CURDATE(), 2, 1, 'COOL', NULL, NULL, 'can not read the temperature', NULL), - ('TZ1905012010', util.VN_CURDATE(), 1, 1, 'WARM', NULL, NULL, 'Temperature in range', 5), - ('138350-0', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 'WARM', 2, 12, NULL, 5), - ('138350-0', util.VN_CURDATE(), 1, NULL, 'COOL', NULL, NULL, NULL, NULL); + VALUES + ('TMM190901395', util.VN_CURDATE(), 1, 1, 'WARM', NULL, NULL, 'Ok', NULL), + ('TL.BBA85422', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 2, 'COOL', NULL, NULL, 'Ok', NULL), + ('TL.BBA85422', util.VN_CURDATE(), 2, 1, 'COOL', NULL, NULL, 'can not read the temperature', NULL), + ('TZ1905012010', util.VN_CURDATE(), 1, 1, 'WARM', NULL, NULL, 'Temperature in range', 5), + ('138350-0', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 'WARM', 2, 12, NULL, 5), + ('138350-0', util.VN_CURDATE(), 1, NULL, 'COOL', NULL, NULL, NULL, NULL); REPLACE INTO `vn`.`incoterms`(`code`, `name`) - VALUES - ('FAS', 'Free Alongside Ship'); + VALUES + ('FAS', 'Free Alongside Ship'); REPLACE INTO `vn`.`customsAgent`(`id`, `fiscalName`, `street`, `nif`, `phone`, `email`) - VALUES - (1, 'Agent one', '1007 Mountain Drive, Gotham', 'N1111111111', '111111111', 'agentone@gotham.com'), - (2, 'Agent two', '1007 Mountain Drive, Gotham', 'N2222222222', '222222222', 'agenttwo@gotham.com'); + VALUES + (1, 'Agent one', '1007 Mountain Drive, Gotham', 'N1111111111', '111111111', 'agentone@gotham.com'), + (2, 'Agent two', '1007 Mountain Drive, Gotham', 'N2222222222', '222222222', 'agenttwo@gotham.com'); INSERT INTO `vn`.`tablet`(`uuid`, `name`, `place`, `macwifi`) - VALUES - ('1', 'TEST', 'ON THE FIXTURES', '0'), - ('2', 'DEV', 'OTHER TABLET', '0'); + VALUES + ('1', 'TEST', 'ON THE FIXTURES', '0'), + ('2', 'DEV', 'OTHER TABLET', '0'); INSERT INTO `vn`.`tabletDepartment`(`tabletFk`, `departmentFk`) - VALUES - (1, 23), - (2, 1); + VALUES + (1, 23), + (2, 1); INSERT INTO `vn`.`campaign`(`code`, `dated`) - VALUES - ('valentinesDay', CONCAT(YEAR(util.VN_CURDATE()), '-02-14')), - ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-02-14')), - ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-02-14')), - ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-02-14')), - ('mothersDay', CONCAT(YEAR(util.VN_CURDATE()), '-05-05')), - ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-05-05')), - ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-05-05')), - ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-05-05')), - ('allSaints', CONCAT(YEAR(util.VN_CURDATE()), '-11-01')), - ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-11-01')), - ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-11-01')), - ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-11-01')); + VALUES + ('valentinesDay', CONCAT(YEAR(util.VN_CURDATE()), '-02-14')), + ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-02-14')), + ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-02-14')), + ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-02-14')), + ('mothersDay', CONCAT(YEAR(util.VN_CURDATE()), '-05-05')), + ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-05-05')), + ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-05-05')), + ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-05-05')), + ('allSaints', CONCAT(YEAR(util.VN_CURDATE()), '-11-01')), + ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-11-01')), + ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-11-01')), + ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-11-01')); INSERT INTO `hedera`.`imageCollectionSize`(`id`, `collectionFk`,`width`, `height`) - VALUES - (1, 4, 160, 160); + VALUES + (1, 4, 160, 160); INSERT INTO `vn`.`rateConfig`(`id`, `rate0`, `rate1`, `rate2`, `rate3`) - VALUES - (1, 36, 31, 25, 21); + VALUES + (1, 36, 31, 25, 21); INSERT INTO `vn`.`rate`(`dated`, `warehouseFk`, `rate0`, `rate1`, `rate2`, `rate3`) - VALUES - (DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR), 1, 10, 15, 20, 25), - (util.VN_CURDATE(), 1, 12, 17, 22, 27); + VALUES + (DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR), 1, 10, 15, 20, 25), + (util.VN_CURDATE(), 1, 12, 17, 22, 27); INSERT INTO `vn`.`dua` (id, code, issued, operated, booked, bookEntried, gestdocFk, customsValue, companyFk) - VALUES - (1, '19ES0028013A481523', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 11276.95, 442), - (2, '21ES00280136115760', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1376.20, 442), - (3, '19ES00280131956004', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 3, 14268.50, 442), - (4, '19ES00280131955995', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 8242.50, 442), - (5, '19ES00280132022070', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 10012.49, 442), - (6, '19ES00280132032308', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 19914.25, 442), - (7, '19ES00280132025489', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1934.06, 442), - (8, '19ES00280132025490', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 3618.52, 442), - (9, '19ES00280132025491', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 7126.23, 442), - (10, '19ES00280132025492', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 4631.45, 442); + VALUES + (1, '19ES0028013A481523', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 11276.95, 442), + (2, '21ES00280136115760', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1376.20, 442), + (3, '19ES00280131956004', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 3, 14268.50, 442), + (4, '19ES00280131955995', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 8242.50, 442), + (5, '19ES00280132022070', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 10012.49, 442), + (6, '19ES00280132032308', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 19914.25, 442), + (7, '19ES00280132025489', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1934.06, 442), + (8, '19ES00280132025490', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 3618.52, 442), + (9, '19ES00280132025491', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 7126.23, 442), + (10, '19ES00280132025492', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 4631.45, 442); INSERT INTO `vn`.`duaEntry` (`duaFk`, `entryFk`, `value`, `customsValue`, `euroValue`) - VALUES - (1, 1, 1.00, 1.00, 1.00), - (2, 2, 1.00, 1.00, 1.00), - (3, 3, 1.00, 1.00, 1.00), - (4, 4, 1.00, 1.00, 1.00), - (5, 5, 1.00, 1.00, 1.00), - (6, 6, 1.00, 1.00, 1.00), - (7, 7, 1.00, 1.00, 1.00), - (8, 8, 1.00, 1.00, 1.00); + VALUES + (1, 1, 1.00, 1.00, 1.00), + (2, 2, 1.00, 1.00, 1.00), + (3, 3, 1.00, 1.00, 1.00), + (4, 4, 1.00, 1.00, 1.00), + (5, 5, 1.00, 1.00, 1.00), + (6, 6, 1.00, 1.00, 1.00), + (7, 7, 1.00, 1.00, 1.00), + (8, 8, 1.00, 1.00, 1.00); REPLACE INTO `vn`.`invoiceIn`(`id`, `serialNumber`,`serial`, `supplierFk`, `issued`, `created`, `supplierRef`, `isBooked`, `companyFk`, `docFk`, `bookEntried`) - VALUES - (1, 1001, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1234, 0, 442, 1,util.VN_CURDATE()), - (2, 1002, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1235, 0, 442, 1,util.VN_CURDATE()), - (3, 1003, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1236, 0, 442, 1,util.VN_CURDATE()), - (4, 1004, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1237, 0, 442, 1,util.VN_CURDATE()), - (5, 1005, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1238, 0, 442, 1,util.VN_CURDATE()), - (6, 1006, 'R', 2, util.VN_CURDATE(), util.VN_CURDATE(), 1239, 0, 442, 1,util.VN_CURDATE()), - (7, 1007, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1240, 0, 442, 1,util.VN_CURDATE()), - (8, 1008, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1241, 0, 442, 1,util.VN_CURDATE()), - (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1,util.VN_CURDATE()), - (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1,util.VN_CURDATE()); + VALUES + (1, 1001, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1234, 0, 442, 1,util.VN_CURDATE()), + (2, 1002, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1235, 0, 442, 1,util.VN_CURDATE()), + (3, 1003, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1236, 0, 442, 1,util.VN_CURDATE()), + (4, 1004, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1237, 0, 442, 1,util.VN_CURDATE()), + (5, 1005, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1238, 0, 442, 1,util.VN_CURDATE()), + (6, 1006, 'R', 2, util.VN_CURDATE(), util.VN_CURDATE(), 1239, 0, 442, 1,util.VN_CURDATE()), + (7, 1007, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1240, 0, 442, 1,util.VN_CURDATE()), + (8, 1008, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1241, 0, 442, 1,util.VN_CURDATE()), + (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1,util.VN_CURDATE()), + (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1,util.VN_CURDATE()); INSERT INTO `vn`.`invoiceInConfig` (`id`, `retentionRate`, `retentionName`, `sageFarmerWithholdingFk`, `daysAgo`) - VALUES - (1, -2, '2% retention', 2, 45); + VALUES + (1, -2, '2% retention', 2, 45); INSERT INTO `vn`.`invoiceInDueDay`(`invoiceInFk`, `dueDated`, `bankFk`, `amount`) - VALUES - (1, util.VN_CURDATE(), 1, 336.99), - (1, util.VN_CURDATE(), 1, 15.25), - (2, util.VN_CURDATE(), 1, 168), - (2, util.VN_CURDATE(), 1, 55.17), - (3, util.VN_CURDATE(), 1, 87.95), - (3, util.VN_CURDATE(), 1, 7.65), - (4, util.VN_CURDATE(), 1, 373.27), - (4, util.VN_CURDATE(), 1, 73.36), - (5, util.VN_CURDATE(), 1, 64.23), - (6, util.VN_CURDATE(), 1, 32.95), - (7, util.VN_CURDATE(), 1, 58.64); + VALUES + (1, util.VN_CURDATE(), 1, 336.99), + (1, util.VN_CURDATE(), 1, 15.25), + (2, util.VN_CURDATE(), 1, 168), + (2, util.VN_CURDATE(), 1, 55.17), + (3, util.VN_CURDATE(), 1, 87.95), + (3, util.VN_CURDATE(), 1, 7.65), + (4, util.VN_CURDATE(), 1, 373.27), + (4, util.VN_CURDATE(), 1, 73.36), + (5, util.VN_CURDATE(), 1, 64.23), + (6, util.VN_CURDATE(), 1, 32.95), + (7, util.VN_CURDATE(), 1, 58.64); INSERT INTO `vn`.`duaInvoiceIn`(`id`, `duaFk`, `invoiceInFk`) - VALUES - (1, 1, 1), - (2, 2, 2), - (3, 3, 3), - (4, 4, 4), - (5, 5, 5), - (6, 6, 6), - (7, 7, 7), - (8, 8, 8), - (9, 9, 9), - (10, 10, 10); + VALUES + (1, 1, 1), + (2, 2, 2), + (3, 3, 3), + (4, 4, 4), + (5, 5, 5), + (6, 6, 6), + (7, 7, 7), + (8, 8, 8), + (9, 9, 9), + (10, 10, 10); INSERT INTO `vn`.`invoiceInTax` (`invoiceInFk`, `taxableBase`, `expenseFk`, `foreignValue`, `taxTypeSageFk`, `transactionTypeSageFk`) - VALUES - (1, 99.99, '2000000000', NULL, NULL, NULL), - (2, 999.99, '2000000000', NULL, NULL, NULL), - (3, 1000.50, '2000000000', NULL, NULL, NULL), - (4, 0.50, '2000000000', NULL, NULL, NULL), - (5, 150.50, '2000000000', NULL, NULL, NULL), - (1, 252.25, '4751000000', NULL, 7, 61), - (2, 223.17, '6210000567', NULL, 8, 20), - (3, 95.60, '7001000000', NULL, 8, 35), - (4, 446.63, '7001000000', NULL, 6, 61), - (5, 64.23, '6210000567', NULL, 8, 20), - (6, 29.95, '7001000000', NULL, 7, 20), - (7, 58.64, '6210000567', NULL, 8, 20); + VALUES + (1, 99.99, '2000000000', NULL, NULL, NULL), + (2, 999.99, '2000000000', NULL, NULL, NULL), + (3, 1000.50, '2000000000', NULL, NULL, NULL), + (4, 0.50, '2000000000', NULL, NULL, NULL), + (5, 150.50, '2000000000', NULL, NULL, NULL), + (1, 252.25, '4751000000', NULL, 7, 61), + (2, 223.17, '6210000567', NULL, 8, 20), + (3, 95.60, '7001000000', NULL, 8, 35), + (4, 446.63, '7001000000', NULL, 6, 61), + (5, 64.23, '6210000567', NULL, 8, 20), + (6, 29.95, '7001000000', NULL, 7, 20), + (7, 58.64, '6210000567', NULL, 8, 20); INSERT INTO `vn`.`invoiceInIntrastat` (`invoiceInFk`, `net`, `intrastatFk`, `amount`, `stems`, `countryFk`) - VALUES - (1, 30.50, 5080000, 10.00, 162, 5), - (1, 10, 6021010, 20.00, 205, 5), - (2, 13.20, 5080000, 15.00, 580, 5), - (2, 16.10, 6021010, 25.00, 80, 5); + VALUES + (1, 30.50, 5080000, 10.00, 162, 5), + (1, 10, 6021010, 20.00, 205, 5), + (2, 13.20, 5080000, 15.00, 580, 5), + (2, 16.10, 6021010, 25.00, 80, 5); UPDATE `vn`.`invoiceIn` - SET isBooked = TRUE - WHERE id IN (5, 7, 8, 9, 10); + SET isBooked = TRUE + WHERE id IN (5, 7, 8, 9, 10); DELIMITER $$ CREATE PROCEDURE `tmp`.`ticket_recalc`() @@ -2709,430 +2709,430 @@ CALL tmp.ticket_recalc; DROP PROCEDURE tmp.ticket_recalc; UPDATE `vn`.`ticket` - SET refFk = 'T1111111' - WHERE id IN (1,2); + SET refFk = 'T1111111' + WHERE id IN (1,2); UPDATE `vn`.`ticket` - SET refFk = 'T2222222' - WHERE id = 3; + SET refFk = 'T2222222' + WHERE id = 3; UPDATE `vn`.`ticket` - SET refFk = 'T3333333' - WHERE id = 4; + SET refFk = 'T3333333' + WHERE id = 4; UPDATE `vn`.`ticket` - SET refFk = 'T4444444' - WHERE id = 5; + SET refFk = 'T4444444' + WHERE id = 5; UPDATE `vn`.`ticket` - SET refFk = 'A1111111' - WHERE id = 6; + SET refFk = 'A1111111' + WHERE id = 6; INSERT INTO `vn`.`zoneAgencyMode`(`id`, `agencyModeFk`, `zoneFk`) - VALUES - (1, 1, 1), - (2, 1, 2), - (3, 6, 5), - (4, 7, 1); + VALUES + (1, 1, 1), + (2, 1, 2), + (3, 6, 5), + (4, 7, 1); INSERT INTO `vn`.`roadmapAddress` (`addressFk`) - VALUES - (1), - (2), - (3), - (4); + VALUES + (1), + (2), + (3), + (4); INSERT INTO `vn`.`roadmap` (`id`, `name`, `tractorPlate`, `trailerPlate`, `phone`, `supplierFk`, `etd`, `observations`, `userFk`, `price`, `driverName`) - VALUES - (1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), 'this is test observation', 1, 15, 'Batman'), - (2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), 'test observation', 1, 20, 'Robin'), - (3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 2 DAY), 'observations...', 2, 25, 'Driverman'); + VALUES + (1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), 'this is test observation', 1, 15, 'Batman'), + (2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), 'test observation', 1, 20, 'Robin'), + (3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 2 DAY), 'observations...', 2, 25, 'Driverman'); INSERT INTO `vn`.`roadmapStop` (`id`, `roadmapFk`, `addressFk`, `eta`, `description`, `userFk`) - VALUES - (1, 1, 1, DATE_ADD(util.VN_NOW(), INTERVAL 1 DAY), 'Best truck in fleet', 1), - (2, 1, 2, DATE_ADD(util.VN_NOW(), INTERVAL '1 2' DAY_HOUR), 'Second truck in fleet', 1), - (3, 1, 3, DATE_ADD(util.VN_NOW(), INTERVAL '1 4' DAY_HOUR), 'Third truck in fleet', 1), - (4, 2, 1, DATE_ADD(util.VN_NOW(), INTERVAL 3 DAY), 'Truck red', 1); + VALUES + (1, 1, 1, DATE_ADD(util.VN_NOW(), INTERVAL 1 DAY), 'Best truck in fleet', 1), + (2, 1, 2, DATE_ADD(util.VN_NOW(), INTERVAL '1 2' DAY_HOUR), 'Second truck in fleet', 1), + (3, 1, 3, DATE_ADD(util.VN_NOW(), INTERVAL '1 4' DAY_HOUR), 'Third truck in fleet', 1), + (4, 2, 1, DATE_ADD(util.VN_NOW(), INTERVAL 3 DAY), 'Truck red', 1); INSERT INTO `vn`.`expeditionPallet` (`id`, `truckFk`, `built`, `position`, `isPrint`) - VALUES - (1, 1, util.VN_CURDATE(), 1, 1); + VALUES + (1, 1, util.VN_CURDATE(), 1, 1); INSERT INTO `vn`.`expeditionScan` (`id`, `expeditionFk`, `scanned`, `palletFk`) - VALUES - (1, 1, util.VN_CURDATE(), 1), - (2, 2, util.VN_CURDATE(), 1), - (3, 3, util.VN_CURDATE(), 1), - (4, 4, util.VN_CURDATE(), 1), - (5, 5, util.VN_CURDATE(), 1), - (6, 6, util.VN_CURDATE(), 1), - (7, 7, util.VN_CURDATE(), 1), - (8, 8, util.VN_CURDATE(), 1), - (9, 9, util.VN_CURDATE(), 1), - (10, 10, util.VN_CURDATE(), 1); + VALUES + (1, 1, util.VN_CURDATE(), 1), + (2, 2, util.VN_CURDATE(), 1), + (3, 3, util.VN_CURDATE(), 1), + (4, 4, util.VN_CURDATE(), 1), + (5, 5, util.VN_CURDATE(), 1), + (6, 6, util.VN_CURDATE(), 1), + (7, 7, util.VN_CURDATE(), 1), + (8, 8, util.VN_CURDATE(), 1), + (9, 9, util.VN_CURDATE(), 1), + (10, 10, util.VN_CURDATE(), 1); CALL `cache`.`last_buy_refresh`(FALSE); UPDATE `vn`.`item` SET `genericFk` = 9 - WHERE `id` = 2; + WHERE `id` = 2; INSERT INTO `bs`.`defaulter` (`clientFk`, `amount`, `created`, `defaulterSinced`) - VALUES - (1101, 500, util.VN_CURDATE(), util.VN_CURDATE()), - (1102, 500, util.VN_CURDATE(), util.VN_CURDATE()), - (1103, 500, util.VN_CURDATE(), util.VN_CURDATE()), - (1107, 500, util.VN_CURDATE(), util.VN_CURDATE()), - (1109, 500, util.VN_CURDATE(), util.VN_CURDATE()); + VALUES + (1101, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1102, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1103, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1107, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1109, 500, util.VN_CURDATE(), util.VN_CURDATE()); UPDATE `vn`.`route` - SET `invoiceInFk`=1 - WHERE `id`=1; + SET `invoiceInFk`=1 + WHERE `id`=1; UPDATE `vn`.`route` - SET `invoiceInFk`=2 - WHERE `id`=2; + SET `invoiceInFk`=2 + WHERE `id`=2; INSERT INTO `bs`.`sale` (`saleFk`, `amount`, `dated`, `typeFk`, `clientFk`) - VALUES - (1, 501.95, util.VN_CURDATE(), 2, 1101), - (2, 70.7, util.VN_CURDATE(), 2, 1101), - (3, 200.78, util.VN_CURDATE(), 2, 1101), - (4, 33.8, util.VN_CURDATE(), 1, 1101), - (30, 34.4, util.VN_CURDATE(), 1, 1108); + VALUES + (1, 501.95, util.VN_CURDATE(), 2, 1101), + (2, 70.7, util.VN_CURDATE(), 2, 1101), + (3, 200.78, util.VN_CURDATE(), 2, 1101), + (4, 33.8, util.VN_CURDATE(), 1, 1101), + (30, 34.4, util.VN_CURDATE(), 1, 1108); INSERT INTO `vn`.`docuwareConfig` (`id`, `url`) - VALUES - (1, 'http://docuware.url/'); + VALUES + (1, 'http://docuware.url/'); INSERT INTO `vn`.`calendarHolidaysName` (`id`, `name`) - VALUES - (1, 'dayOfIT'); + VALUES + (1, 'dayOfIT'); INSERT INTO `vn`.`calendarHolidaysType` (`id`, `name`, `hexColour`) - VALUES - (1, 'National', '#4169E1'); + VALUES + (1, 'National', '#4169E1'); INSERT INTO `vn`.`calendarHolidays` (`id`, `calendarHolidaysTypeFk`, `dated`, `calendarHolidaysNameFk`, `workCenterFk`) - VALUES - (1, 1, CONCAT(YEAR(util.VN_CURDATE()), '-12-09'), 1, 1); + VALUES + (1, 1, CONCAT(YEAR(util.VN_CURDATE()), '-12-09'), 1, 1); INSERT INTO `vn`.`supplierAgencyTerm` (`agencyFk`, `supplierFk`, `minimumPackages`, `kmPrice`, `packagePrice`, `routePrice`, `minimumKm`, `minimumM3`, `m3Price`) - VALUES - (1, 1, 0, 0.00, 0.00, NULL, 0, 0.00, 23), - (2, 1, 60, 0.00, 0.00, NULL, 0, 5.00, 33), - (3, 2, 0, 15.00, 0.00, NULL, 0, 0.00, 0), - (4, 2, 0, 20.00, 0.00, NULL, 0, 0.00, 0), - (5, 442, 0, 0.00, 3.05, NULL, 0, 0.00, 0); + VALUES + (1, 1, 0, 0.00, 0.00, NULL, 0, 0.00, 23), + (2, 1, 60, 0.00, 0.00, NULL, 0, 5.00, 33), + (3, 2, 0, 15.00, 0.00, NULL, 0, 0.00, 0), + (4, 2, 0, 20.00, 0.00, NULL, 0, 0.00, 0), + (5, 442, 0, 0.00, 3.05, NULL, 0, 0.00, 0); INSERT INTO `vn`.`chat` (`senderFk`, `recipient`, `dated`, `checkUserStatus`, `message`, `status`, `attempts`) - VALUES - (1101, '@PetterParker', util.VN_CURDATE(), 1, 'First test message', 0, 'sent'), - (1101, '@PetterParker', util.VN_CURDATE(), 0, 'Second test message', 0, 'pending'); + VALUES + (1101, '@PetterParker', util.VN_CURDATE(), 1, 'First test message', 0, 'sent'), + (1101, '@PetterParker', util.VN_CURDATE(), 0, 'Second test message', 0, 'pending'); INSERT INTO `vn`.`mobileAppVersionControl` (`appName`, `version`, `isVersionCritical`,`versionBeta`) - VALUES - ('delivery', '9.2', 0,'9.7'), - ('warehouse', '8.1', 0,'8.3'); + VALUES + ('delivery', '9.2', 0,'9.7'), + ('warehouse', '8.1', 0,'8.3'); INSERT INTO `vn`.`machine` (`plate`, `maker`, `model`, `warehouseFk`, `departmentFk`, `type`, `use`, `productionYear`, `workerFk`, `companyFk`) - VALUES - ('RE-001', 'STILL', 'LTX-20', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442), - ('RE-002', 'STILL', 'LTX-20', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442); + VALUES + ('RE-001', 'STILL', 'LTX-20', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442), + ('RE-002', 'STILL', 'LTX-20', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442); INSERT INTO `vn`.`zoneExclusion` (`id`, `zoneFk`, `dated`, `created`, `userFk`) VALUES - (1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=7, 7, 14) - DAYOFWEEK(util.VN_CURDATE())) DAY), util.VN_CURDATE(), 100), - (2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=8, 8, 15) - DAYOFWEEK(util.VN_CURDATE())) DAY), util.VN_CURDATE(), 100); + (1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=7, 7, 14) - DAYOFWEEK(util.VN_CURDATE())) DAY), util.VN_CURDATE(), 100), + (2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=8, 8, 15) - DAYOFWEEK(util.VN_CURDATE())) DAY), util.VN_CURDATE(), 100); INSERT INTO `vn`.`zoneExclusionGeo` (`zoneExclusionFk`, `geoFk`) - VALUES - (2, 1); + VALUES + (2, 1); INSERT INTO `vn`.`mdbBranch` (`name`) - VALUES - ('test'), - ('master'); + VALUES + ('test'), + ('master'); INSERT INTO `vn`.`mdbVersion` (`app`, `branchFk`, `version`) - VALUES - ('tpv', 'test', '1'), - ('lab', 'master', '1'); + VALUES + ('tpv', 'test', '1'), + ('lab', 'master', '1'); INSERT INTO `vn`.`accountingConfig` (`id`, `minDate`, `maxDate`) - VALUES - (1, CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-01-01'), CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL +1 YEAR)), '-01-01')); + VALUES + (1, CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-01-01'), CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL +1 YEAR)), '-01-01')); INSERT INTO `vn`.`saleGroup` (`userFk`, `parkingFk`, `sectorFk`) - VALUES - (1, 1, 1); + VALUES + (1, 1, 1); INSERT INTO `vn`.`saleGroupDetail` (`saleFk`, `saleGroupFk`) - VALUES - (31, 1); + VALUES + (31, 1); INSERT INTO `vn`.`sectorCollection` (`userFk`, `sectorFk`) - VALUES - (1, 1); + VALUES + (1, 1); INSERT INTO `vn`.`sectorCollectionSaleGroup` (`sectorCollectionFk`, `saleGroupFk`) - VALUES - (1, 1); + VALUES + (1, 1); INSERT INTO `vn`.`workerTimeControlConfig` (`id`, `dayBreak`, `dayBreakDriver`, `shortWeekBreak`, `longWeekBreak`, `weekScope`, `mailPass`, `mailHost`, `mailSuccessFolder`, `mailErrorFolder`, `mailUser`, `minHoursToBreak`, `breakHours`, `hoursCompleteWeek`, `startNightlyHours`, `endNightlyHours`, `maxTimePerDay`, `breakTime`, `timeToBreakTime`, `dayMaxTime`, `shortWeekDays`, `longWeekDays`, `teleworkingStart`, `teleworkingStartBreakTime`, `maxTimeToBreak`, `maxWorkShortCycle`, `maxWorkLongCycle`) - VALUES - (1, 43200, 32400, 129600, 259200, 1080000, '', 'imap.verdnatura.es', 'Leidos.exito', 'Leidos.error', 'timeControl', 5.00, 0.33, 40, '22:00:00', '06:00:00', 72000, 1200, 18000, 72000, 6, 13, 28800, 32400, 3600, 561600, 950400); + VALUES + (1, 43200, 32400, 129600, 259200, 1080000, '', 'imap.verdnatura.es', 'Leidos.exito', 'Leidos.error', 'timeControl', 5.00, 0.33, 40, '22:00:00', '06:00:00', 72000, 1200, 18000, 72000, 6, 13, 28800, 32400, 3600, 561600, 950400); INSERT INTO `vn`.`host` (`id`, `code`, `description`, `warehouseFk`, `bankFk`) - VALUES - (1, 'pc1', 'pc host', 1, 1); + VALUES + (1, 'pc1', 'pc host', 1, 1); INSERT INTO `vn`.`packingSite` (`id`, `code`, `hostFk`, `monitorId`) - VALUES - (1, 'h1', 1, ''); + VALUES + (1, 'h1', 1, ''); INSERT INTO `vn`.`packingSiteConfig` (`id`, `shinobiUrl`, `shinobiToken`, `shinobiGroupKey`, `avgBoxingTime`) - VALUES - (1, '', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000); + VALUES + (1, '', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000); INSERT INTO `util`.`notificationConfig` SET `id` = 1, - `cleanDays` = 90; + `cleanDays` = 90; TRUNCATE `util`.`notification`; INSERT INTO `util`.`notification` (`id`, `name`, `description`) - VALUES - (1, 'print-email', 'notification fixture one'), - (2, 'invoice-electronic', 'A electronic invoice has been generated'), - (3, 'not-main-printer-configured', 'A printer distinct than main has been configured'), - (4, 'supplier-pay-method-update', 'A supplier pay method has been updated'), - (5, 'modified-entry', 'An entry has been modified'), - (6, 'book-entry-deleted', 'accounting entries deleted'), - (7, 'zone-included','An email to notify zoneCollisions'), - (8, 'backup-printer-selected','A backup printer has been selected'), - (9, 'mrw-deadline','The MRW deadline has passed'), - (10,'invoice-ticket-closure','Tickets not invoiced during the nightly closure ticket process'); + VALUES + (1, 'print-email', 'notification fixture one'), + (2, 'invoice-electronic', 'A electronic invoice has been generated'), + (3, 'not-main-printer-configured', 'A printer distinct than main has been configured'), + (4, 'supplier-pay-method-update', 'A supplier pay method has been updated'), + (5, 'modified-entry', 'An entry has been modified'), + (6, 'book-entry-deleted', 'accounting entries deleted'), + (7, 'zone-included','An email to notify zoneCollisions'), + (8, 'backup-printer-selected','A backup printer has been selected'), + (9, 'mrw-deadline','The MRW deadline has passed'), + (10,'invoice-ticket-closure','Tickets not invoiced during the nightly closure ticket process'); TRUNCATE `util`.`notificationAcl`; INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) - VALUES - (1, 9), - (1, 1), - (2, 1), - (3, 9), - (4, 1), - (5, 9), - (6, 9), - (7, 9), - (8, 66), - (9, 56); + VALUES + (1, 9), + (1, 1), + (2, 1), + (3, 9), + (4, 1), + (5, 9), + (6, 9), + (7, 9), + (8, 66), + (9, 56); TRUNCATE `util`.`notificationQueue`; INSERT INTO `util`.`notificationQueue` (`id`, `notificationFk`, `params`, `authorFk`, `status`, `created`) - VALUES - (1, 'print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()), - (2, 'print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()), - (3, 'print-email', null, null, 'pending', util.VN_CURDATE()); + VALUES + (1, 'print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()), + (2, 'print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()), + (3, 'print-email', null, null, 'pending', util.VN_CURDATE()); TRUNCATE `util`.`notificationSubscription`; INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`) - VALUES - (1, 1109), - (1, 1110), - (2, 1110), - (4, 1110), - (2, 1109), - (1, 9), - (1, 3), - (6, 9), - (7, 9), - (8, 66); + VALUES + (1, 1109), + (1, 1110), + (2, 1110), + (4, 1110), + (2, 1109), + (1, 9), + (1, 3), + (6, 9), + (7, 9), + (8, 66); INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`) - VALUES - (1, 9); + VALUES + (1, 9); INSERT INTO `vn`.`productionConfig` (`isPreviousPreparationRequired`, `ticketPrintedMax`, `ticketTrolleyMax`, `rookieDays`, `notBuyingMonths`, `id`, `isZoneClosedByExpeditionActivated`, `maxNotReadyCollections`, `minTicketsToCloseZone`, `movingTicketDelRoute`, `defaultZone`, `defautlAgencyMode`, `hasUniqueCollectionTime`, `maxCollectionWithoutUser`, `pendingCollectionsOrder`, `pendingCollectionsAge`, `backupPrinterNotificationDelay`, `clientSelfConsumptionFk`, `addressSelfConsumptionFk`) - VALUES - (0, 8, 80, 0, 0, 1, 0, 15, 25, -1, 697, 1328, 0, 1, 8, 6, 3600, 1112, 12); + VALUES + (0, 8, 80, 0, 0, 1, 0, 15, 25, -1, 697, 1328, 0, 1, 8, 6, 3600, 1112, 12); INSERT INTO `vn`.`collection` (`id`, `created`, `workerFk`, `stateFk`, `itemPackingTypeFk`, `saleTotalCount`, `salePickedCount`, `trainFk`, `sectorFk`, `wagons`) - VALUES - (3, util.VN_NOW(), 1107, 5, NULL, 0, 0, 1, NULL, NULL); + VALUES + (3, util.VN_NOW(), 1107, 5, NULL, 0, 0, 1, NULL, NULL); INSERT INTO `vn`.`itemConfig` (`id`, `isItemTagTriggerDisabled`, `monthToDeactivate`, `wasteRecipients`, `validPriorities`, `defaultPriority`, `defaultTag`, `warehouseFk`) - VALUES - (1, 0, 24, '', '[1,2,3]', 2, 56, 60); + VALUES + (1, 0, 24, '', '[1,2,3]', 2, 56, 60); INSERT INTO `vn`.`ticketCollection` (`ticketFk`, `collectionFk`, `created`, `level`, `wagon`, `smartTagFk`, `usedShelves`, `itemCount`, `liters`) - VALUES - (9, 3, util.VN_NOW(), NULL, 0, NULL, NULL, NULL, NULL); + VALUES + (9, 3, util.VN_NOW(), NULL, 0, NULL, NULL, NULL, NULL); INSERT INTO `vn`.`saleCloned` (`saleClonedFk`, `saleOriginalFk`) - VALUES - (29, 25); + VALUES + (29, 25); UPDATE `account`.`user` - SET `hasGrant` = 1 - WHERE `id` = 66; + SET `hasGrant` = 1 + WHERE `id` = 66; INSERT INTO `vn`.`ticketLog` (`originFk`, userFk, `action`, changedModel, oldInstance, newInstance, changedModelId, `description`) - VALUES - (7, 18, 'update', 'Sale', '{"quantity":1}', '{"quantity":10}', 22, NULL), - (7, 18, 'update', 'Ticket', '{"quantity":1,"concept":"Chest ammo box"}', '{"quantity":10,"concept":"Chest ammo box"}', 22, NULL), - (7, 18, 'update', 'Sale', '{"price":3}', '{"price":5}', 22, NULL), - (7, 18, 'update', NULL, NULL, NULL, NULL, "Cambio cantidad Melee weapon heavy shield 100cm de '5' a '10'"), - (16, 9, 'update', 'Sale', '{"quantity":10,"concept":"Shield", "price": 10.5, "itemFk": 1}', '{"quantity":8,"concept":"Shield", "price": 10.5, "itemFk": 1}' , 12, 'Shield'); + VALUES + (7, 18, 'update', 'Sale', '{"quantity":1}', '{"quantity":10}', 22, NULL), + (7, 18, 'update', 'Ticket', '{"quantity":1,"concept":"Chest ammo box"}', '{"quantity":10,"concept":"Chest ammo box"}', 22, NULL), + (7, 18, 'update', 'Sale', '{"price":3}', '{"price":5}', 22, NULL), + (7, 18, 'update', NULL, NULL, NULL, NULL, "Cambio cantidad Melee weapon heavy shield 100cm de '5' a '10'"), + (16, 9, 'update', 'Sale', '{"quantity":10,"concept":"Shield", "price": 10.5, "itemFk": 1}', '{"quantity":8,"concept":"Shield", "price": 10.5, "itemFk": 1}' , 12, 'Shield'); INSERT INTO `vn`.`ticketLog` (originFk, userFk, `action`, creationDate, changedModel, changedModelId, changedModelValue, oldInstance, newInstance, description) - VALUES - (1, NULL, 'delete', '2001-06-09 11:00:04', 'Ticket', 45, 'Spider Man' , NULL, NULL, NULL), - (1, 18, 'select', '2001-06-09 11:00:03', 'Ticket', 45, 'Spider Man' , NULL, NULL, NULL), - (1, NULL, 'update', '2001-05-09 10:00:02', 'Sale', 5, 'Armor' , '{"isPicked": false}','{"isPicked": true}', NULL), - (1, 18, 'update', '2001-01-01 10:05:01', 'Sale', 5, 'Armor' , NULL, NULL, 'Armor quantity changed from ''15'' to ''10'''), - (1, NULL, 'delete', '2001-01-01 10:00:10', 'Sale', 4, 'Shield' , '{"quantity":10,"concept":"Shield"}', NULL, NULL), - (1, 18, 'insert', '2000-12-31 15:00:05', 'Sale', 1, 'Armor' , NULL,'{"quantity":15,"concept":"Armor", "price": 345.99, "itemFk": 2}', NULL), - (1, 18, 'update', '2000-12-28 08:40:45', 'Ticket', 45, 'Spider Man' , '{"warehouseFk":60,"shipped":"2023-05-16T22:00:00.000Z","nickname":"Super Man","isSigned":true,"isLabeled":true,"isPrinted":true,"packages":0,"hour":0,"isBlocked":false,"hasPriority":false,"companyFk":442,"landed":"2023-05-17T22:00:00.000Z","isBoxed":true,"isDeleted":true,"zoneFk":713,"zonePrice":13,"zoneBonus":0}','{"warehouseFk":61,"shipped":"2023-05-17T22:00:00.000Z","nickname":"Spider Man","isSigned":false,"isLabeled":false,"isPrinted":false,"packages":1,"hour":0,"isBlocked":true,"hasPriority":true,"companyFk":443,"landed":"2023-05-18T22:00:00.000Z","isBoxed":false,"isDeleted":false,"zoneFk":713,"zonePrice":13,"zoneBonus":1}', NULL), - (1, 18, 'select', '2000-12-27 03:40:30', 'Ticket', 45, NULL , NULL, NULL, NULL), - (1, 18, 'insert', '2000-04-10 09:40:15', 'Sale', 4, 'Shield' , NULL, '{"quantity":10,"concept":"Shield", "price": 10.5, "itemFk": 1}', NULL), - (1, 18, 'insert', '1999-05-09 10:00:00', 'Ticket', 45, 'Super Man' , NULL, '{"id":45,"clientFk":8608,"warehouseFk":60,"shipped":"2023-05-16T22:00:00.000Z","nickname":"Super Man","addressFk":48637,"isSigned":true,"isLabeled":true,"isPrinted":true,"packages":0,"hour":0,"created":"2023-05-16T11:42:56.000Z","isBlocked":false,"hasPriority":false,"companyFk":442,"agencyModeFk":639,"landed":"2023-05-17T22:00:00.000Z","isBoxed":true,"isDeleted":true,"zoneFk":713,"zonePrice":13,"zoneBonus":0}', NULL); + VALUES + (1, NULL, 'delete', '2001-06-09 11:00:04', 'Ticket', 45, 'Spider Man' , NULL, NULL, NULL), + (1, 18, 'select', '2001-06-09 11:00:03', 'Ticket', 45, 'Spider Man' , NULL, NULL, NULL), + (1, NULL, 'update', '2001-05-09 10:00:02', 'Sale', 5, 'Armor' , '{"isPicked": false}','{"isPicked": true}', NULL), + (1, 18, 'update', '2001-01-01 10:05:01', 'Sale', 5, 'Armor' , NULL, NULL, 'Armor quantity changed from ''15'' to ''10'''), + (1, NULL, 'delete', '2001-01-01 10:00:10', 'Sale', 4, 'Shield' , '{"quantity":10,"concept":"Shield"}', NULL, NULL), + (1, 18, 'insert', '2000-12-31 15:00:05', 'Sale', 1, 'Armor' , NULL,'{"quantity":15,"concept":"Armor", "price": 345.99, "itemFk": 2}', NULL), + (1, 18, 'update', '2000-12-28 08:40:45', 'Ticket', 45, 'Spider Man' , '{"warehouseFk":60,"shipped":"2023-05-16T22:00:00.000Z","nickname":"Super Man","isSigned":true,"isLabeled":true,"isPrinted":true,"packages":0,"hour":0,"isBlocked":false,"hasPriority":false,"companyFk":442,"landed":"2023-05-17T22:00:00.000Z","isBoxed":true,"isDeleted":true,"zoneFk":713,"zonePrice":13,"zoneBonus":0}','{"warehouseFk":61,"shipped":"2023-05-17T22:00:00.000Z","nickname":"Spider Man","isSigned":false,"isLabeled":false,"isPrinted":false,"packages":1,"hour":0,"isBlocked":true,"hasPriority":true,"companyFk":443,"landed":"2023-05-18T22:00:00.000Z","isBoxed":false,"isDeleted":false,"zoneFk":713,"zonePrice":13,"zoneBonus":1}', NULL), + (1, 18, 'select', '2000-12-27 03:40:30', 'Ticket', 45, NULL , NULL, NULL, NULL), + (1, 18, 'insert', '2000-04-10 09:40:15', 'Sale', 4, 'Shield' , NULL, '{"quantity":10,"concept":"Shield", "price": 10.5, "itemFk": 1}', NULL), + (1, 18, 'insert', '1999-05-09 10:00:00', 'Ticket', 45, 'Super Man' , NULL, '{"id":45,"clientFk":8608,"warehouseFk":60,"shipped":"2023-05-16T22:00:00.000Z","nickname":"Super Man","addressFk":48637,"isSigned":true,"isLabeled":true,"isPrinted":true,"packages":0,"hour":0,"created":"2023-05-16T11:42:56.000Z","isBlocked":false,"hasPriority":false,"companyFk":442,"agencyModeFk":639,"landed":"2023-05-17T22:00:00.000Z","isBoxed":true,"isDeleted":true,"zoneFk":713,"zonePrice":13,"zoneBonus":0}', NULL); INSERT INTO `vn`.`osTicketConfig` (`id`, `host`, `user`, `password`, `oldStatus`, `newStatusId`, `day`, `comment`, `hostDb`, `userDb`, `passwordDb`, `portDb`, `responseType`, `fromEmailId`, `replyTo`) - VALUES - (1, 'http://localhost:56596/scp', 'ostadmin', 'Admin1', '1,6', 3, 60, 'Este CAU se ha cerrado automáticamente. Si el problema persiste responda a este mensaje.', 'localhost', 'osticket', 'osticket', 40003, 'reply', 1, 'all'); + VALUES + (1, 'http://localhost:56596/scp', 'ostadmin', 'Admin1', '1,6', 3, 60, 'Este CAU se ha cerrado automáticamente. Si el problema persiste responda a este mensaje.', 'localhost', 'osticket', 'osticket', 40003, 'reply', 1, 'all'); INSERT INTO `vn`.`mdbApp` (`app`, `baselineBranchFk`, `userFk`, `locked`) - VALUES - ('foo', 'master', NULL, NULL), - ('bar', 'test', 9, util.VN_NOW()); + VALUES + ('foo', 'master', NULL, NULL), + ('bar', 'test', 9, util.VN_NOW()); INSERT INTO `vn`.`profileType` (`id`, `name`) - VALUES - (1, 'working'); + VALUES + (1, 'working'); INSERT INTO `salix`.`url` (`appName`, `environment`, `url`) - VALUES - ('lilium', 'development', 'http://localhost:9000/#/'), - ('hedera', 'development', 'http://localhost:9090/'), - ('salix', 'development', 'http://localhost:5000/#!/'), - ('docuware', 'development', 'http://docuware'); + VALUES + ('lilium', 'development', 'http://localhost:9000/#/'), + ('hedera', 'development', 'http://localhost:9090/'), + ('salix', 'development', 'http://localhost:5000/#!/'), + ('docuware', 'development', 'http://docuware'); INSERT INTO `vn`.`report` (`id`, `name`, `paperSizeFk`, `method`) - VALUES - (3, 'invoice', NULL, 'InvoiceOuts/{refFk}/invoice-out-pdf'); + VALUES + (3, 'invoice', NULL, 'InvoiceOuts/{refFk}/invoice-out-pdf'); INSERT INTO `vn`.`payDemDetail` (`id`, `detail`) - VALUES - (1, 1), - (2, 20), - (7, 1); + VALUES + (1, 1), + (2, 20), + (7, 1); INSERT INTO `vn`.`workerConfig` (`id`, `businessUpdated`, `roleFk`, `payMethodFk`, `businessTypeFk`) - VALUES - (1, NULL, 1, 4, 'worker'); + VALUES + (1, NULL, 1, 4, 'worker'); INSERT INTO `vn`.`ticketRefund`(`refundTicketFk`, `originalTicketFk`) - VALUES - (24, 8); + VALUES + (24, 8); INSERT INTO `vn`.`deviceProductionModels` (`code`) - VALUES - ('BLACKVIEW'), - ('DODGEE'), - ('ZEBRA'); + VALUES + ('BLACKVIEW'), + ('DODGEE'), + ('ZEBRA'); INSERT INTO `vn`.`deviceProductionState` (`code`, `description`) - VALUES - ('active', 'activo'), - ('idle', 'inactivo'), - ('lost', 'perdida'), - ('repair', 'reparación'), - ('retired', 'retirada'); + VALUES + ('active', 'activo'), + ('idle', 'inactivo'), + ('lost', 'perdida'), + ('repair', 'reparación'), + ('retired', 'retirada'); INSERT INTO `vn`.`deviceProduction` (`imei`, `modelFk`, `macWifi`, `serialNumber`, `android_id`, `purchased`, `stateFk`, `isInScalefusion`, `description`) VALUES - ('ime1', 'BLACKVIEW', 'macWifi1', 'serialNumber1', 'androidid11234567890', util.VN_NOW(), 'active', 0, NULL), - ('ime2', 'DODGEE', 'macWifi2', 'serialNumber2', 'androidid21234567890', util.VN_NOW(), 'idle', 0, NULL), - ('ime3', 'ZEBRA', 'macWifi3', 'serialNumber3', 'androidid31234567890', util.VN_NOW(), 'active', 0, NULL), - ('ime4', 'BLACKVIEW', 'macWifi4', 'serialNumber4', 'androidid41234567890', util.VN_NOW(), 'idle', 0, NULL); + ('ime1', 'BLACKVIEW', 'macWifi1', 'serialNumber1', 'androidid11234567890', util.VN_NOW(), 'active', 0, NULL), + ('ime2', 'DODGEE', 'macWifi2', 'serialNumber2', 'androidid21234567890', util.VN_NOW(), 'idle', 0, NULL), + ('ime3', 'ZEBRA', 'macWifi3', 'serialNumber3', 'androidid31234567890', util.VN_NOW(), 'active', 0, NULL), + ('ime4', 'BLACKVIEW', 'macWifi4', 'serialNumber4', 'androidid41234567890', util.VN_NOW(), 'idle', 0, NULL); INSERT INTO `vn`.`deviceProductionUser` (`deviceProductionFk`, `userFk`, `created`) - VALUES - (1, 1, util.VN_NOW()), - (3, 3, util.VN_NOW()); + VALUES + (1, 1, util.VN_NOW()), + (3, 3, util.VN_NOW()); INSERT INTO `vn`.`workerTimeControlMail` (`id`, `workerFk`, `year`, `week`, `state`, `updated`, `sendedCounter`, `reason`) - VALUES - (1, 9, 2000, 49, 'REVISE', util.VN_NOW(), 1, 'test2'), - (2, 9, 2000, 50, 'SENDED', util.VN_NOW(), 1, NULL), - (3, 9, 2000, 51, 'CONFIRMED', util.VN_NOW(), 1, NULL), - (4, 9, 2001, 1, 'SENDED', util.VN_NOW(), 1, NULL); + VALUES + (1, 9, 2000, 49, 'REVISE', util.VN_NOW(), 1, 'test2'), + (2, 9, 2000, 50, 'SENDED', util.VN_NOW(), 1, NULL), + (3, 9, 2000, 51, 'CONFIRMED', util.VN_NOW(), 1, NULL), + (4, 9, 2001, 1, 'SENDED', util.VN_NOW(), 1, NULL); INSERT INTO `vn`.`wagonTypeColor` (`id`, `name`, `rgb`) - VALUES - (1, 'white', '#ffffff'), - (2, 'red', '#ff0000'), - (3, 'green', '#00ff00'), - (4, 'blue', '#0000ff'); + VALUES + (1, 'white', '#ffffff'), + (2, 'red', '#ff0000'), + (3, 'green', '#00ff00'), + (4, 'blue', '#0000ff'); INSERT INTO `vn`.`wagonConfig` (`id`, `width`, `height`, `maxWagonHeight`, `minHeightBetweenTrays`, `maxTrays`, `defaultTrayColorFk`) - VALUES - (1, 1350, 1900, 200, 50, 6, 1); + VALUES + (1, 1350, 1900, 200, 50, 6, 1); INSERT INTO `vn`.`wagonType` (`id`, `name`, `divisible`) - VALUES - (1, 'Wagon Type #1', 1); + VALUES + (1, 'Wagon Type #1', 1); INSERT INTO `vn`.`wagonTypeTray` (`id`, `wagonTypeFk`, `height`, `wagonTypeColorFk`) - VALUES - (1, 1, 0, 1), - (2, 1, 50, 2), - (3, 1, 100, 3); + VALUES + (1, 1, 0, 1), + (2, 1, 50, 2), + (3, 1, 100, 3); INSERT INTO `salix`.`accessTokenConfig` (`id`, `renewPeriod`, `courtesyTime`, `renewInterval`) - VALUES - (1, 21600, 60, 300); + VALUES + (1, 21600, 60, 300); INSERT INTO `vn`.`travelConfig` (`id`, `warehouseInFk`, `warehouseOutFk`, `agencyFk`, `companyFk`) - VALUES - (1, 1, 1, 1, 442); + VALUES + (1, 1, 1, 1, 442); INSERT INTO `vn`.`buyConfig` (`id`, `monthsAgo`) - VALUES - (1, 6); + VALUES + (1, 6); INSERT INTO `vn`.`invoiceInSerial` (`code`, `description`, `cplusTerIdNifFk`, `taxAreaFk`) - VALUES - ('C', 'Asgard', 1, 'WORLD'), - ('E', 'Midgard', 1, 'CEE'), - ('R', 'Jotunheim', 1, 'NATIONAL'), - ('W', 'Vanaheim', 1, 'WORLD'); + VALUES + ('C', 'Asgard', 1, 'WORLD'), + ('E', 'Midgard', 1, 'CEE'), + ('R', 'Jotunheim', 1, 'NATIONAL'), + ('W', 'Vanaheim', 1, 'WORLD'); INSERT INTO `hedera`.`imageConfig` (`id`, `maxSize`, `useXsendfile`, `url`) - VALUES - (1, 0, 0, 'marvel.com'); + VALUES + (1, 0, 0, 'marvel.com'); INSERT INTO vn.XDiario (id, ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, BASEEURO, SERIE, FACTURA, IVA, RECEQUIV, CLAVE, CAMBIO, DEBEME, HABERME, AUXILIAR, MONEDAUSO, TIPOOPE, NFACTICK, TERIDNIF, TERNIF, TERNOM, OPBIENES, L340, enlazado, FECHA_EX, LRECT349, empresa_id, LDIFADUAN, METAL, METALIMP, CLIENTE, METALEJE, FECHA_OP, FACTURAEX, TIPOCLAVE, TIPOEXENCI, TIPONOSUJE, TIPOFACT, TIPORECTIF, SERIE_RT, FACTU_RT, BASEIMP_RT, BASEIMP_RF, RECTIFICA, FECHA_RT, FECREGCON, enlazadoSage) - VALUES - (1, 1.0, util.VN_CURDATE(), '4300001104', NULL, 'n/fra T3333333', 8.88, NULL, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1), - (2, 1.0, util.VN_CURDATE(), '2000000000', '4300001104', 'n/fra T3333333 Tony Stark', NULL, 8.07, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1), - (3, 1.0, util.VN_CURDATE(), '4770000010', '4300001104', 'Inmovilizado pendiente : n/fra T3333333 Tony Stark', NULL, 0.81, 8.07, 'T', '3333333', 10.00, NULL, NULL, NULL, NULL, NULL, '', '2', '', 1, 1, '06089160W', 'IRON MAN', 1, 1, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1), - (4, 2.0, util.VN_CURDATE(), '4300001104', NULL, 'n/fra T4444444', 8.88, NULL, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0), - (5, 2.0, util.VN_CURDATE(), '2000000000', '4300001104', 'n/fra T4444444 Tony Stark', NULL, 8.07, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0), - (6, 2.0, util.VN_CURDATE(), '4770000010', '4300001104', 'Inmovilizado pendiente : n/fra T4444444 Tony Stark', NULL, 0.81, 8.07, 'T', '4444444', 10.00, NULL, NULL, NULL, NULL, NULL, '', '2', '', 1, 1, '06089160W', 'IRON MAN', 1, 1, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0); + VALUES + (1, 1.0, util.VN_CURDATE(), '4300001104', NULL, 'n/fra T3333333', 8.88, NULL, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1), + (2, 1.0, util.VN_CURDATE(), '2000000000', '4300001104', 'n/fra T3333333 Tony Stark', NULL, 8.07, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1), + (3, 1.0, util.VN_CURDATE(), '4770000010', '4300001104', 'Inmovilizado pendiente : n/fra T3333333 Tony Stark', NULL, 0.81, 8.07, 'T', '3333333', 10.00, NULL, NULL, NULL, NULL, NULL, '', '2', '', 1, 1, '06089160W', 'IRON MAN', 1, 1, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 1), + (4, 2.0, util.VN_CURDATE(), '4300001104', NULL, 'n/fra T4444444', 8.88, NULL, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0), + (5, 2.0, util.VN_CURDATE(), '2000000000', '4300001104', 'n/fra T4444444 Tony Stark', NULL, 8.07, NULL, NULL, '0', NULL, 0.00, NULL, NULL, NULL, NULL, NULL, '2', NULL, 1, 2, 'I.F.', 'Nombre Importador', 1, 0, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0), + (6, 2.0, util.VN_CURDATE(), '4770000010', '4300001104', 'Inmovilizado pendiente : n/fra T4444444 Tony Stark', NULL, 0.81, 8.07, 'T', '4444444', 10.00, NULL, NULL, NULL, NULL, NULL, '', '2', '', 1, 1, '06089160W', 'IRON MAN', 1, 1, 0, util.VN_CURDATE(), 0, 442, 0, 0, 0.00, NULL, NULL, util.VN_CURDATE(), NULL, 1, 1, 1, 1, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `vn`.`mistakeType` (`id`, `description`) - VALUES - (1, 'Incorrect quantity'); + VALUES + (1, 'Incorrect quantity'); INSERT INTO `vn`.`invoiceCorrectionType` (`id`, `description`) - VALUES - (1, 'Error in VAT calculation'), - (2, 'Error in sales details'), - (3, 'Error in customer data'); + VALUES + (1, 'Error in VAT calculation'), + (2, 'Error in sales details'), + (3, 'Error in customer data'); UPDATE `vn`.`client` SET fi='65004204V' @@ -3144,56 +3144,56 @@ UPDATE `vn`.`worker` INSERT INTO `account`.`mailAliasAcl` (`mailAliasFk`, `roleFk`) - VALUES - (1, 1), - (2, 9), - (3, 15); + VALUES + (1, 1), + (2, 9), + (3, 15); INSERT INTO `vn`.`docuwareTablet` (`tablet`,`description`) VALUES - ('Tablet1','Jarvis tablet'), - ('Tablet2','Avengers tablet'); + ('Tablet1','Jarvis tablet'), + ('Tablet2','Avengers tablet'); INSERT INTO `vn`.`sms` (`id`, `senderFk`, `sender`, `destination`, `message`, `statusCode`, `status`, `created`) - VALUES (1, 66, '111111111', '0001111111111', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'OK', util.VN_CURDATE()), - (2, 66, '222222222', '0002222222222', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'PENDING', util.VN_CURDATE()), - (3, 66, '333333333', '0003333333333', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'ERROR', util.VN_CURDATE()), - (4, 66, '444444444', '0004444444444', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'OK', util.VN_CURDATE()); + VALUES (1, 66, '111111111', '0001111111111', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'OK', util.VN_CURDATE()), + (2, 66, '222222222', '0002222222222', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'PENDING', util.VN_CURDATE()), + (3, 66, '333333333', '0003333333333', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'ERROR', util.VN_CURDATE()), + (4, 66, '444444444', '0004444444444', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 0, 'OK', util.VN_CURDATE()); INSERT INTO `vn`.`clientSms` (`id`, `clientFk`, `smsFk`, `ticketFk`) - VALUES(1, 1103, 1, NULL), - (2, 1103, 2, NULL), - (3, 1103, 3, 32), - (4, 1103, 4, 32), - (13, 1101, 1, NULL), - (14, 1101, 4, 27); + VALUES(1, 1103, 1, NULL), + (2, 1103, 2, NULL), + (3, 1103, 3, 32), + (4, 1103, 4, 32), + (13, 1101, 1, NULL), + (14, 1101, 4, 27); INSERT INTO `vn`.`entryDms`(`entryFk`, `dmsFk`, `editorFk`) - VALUES - (1, 9, 9); + VALUES + (1, 9, 9); INSERT INTO vn.entryType (code,description,isInformal) VALUES ('devaluation','Devaluation',0), - ('internal','Internal',1), - ('inventory','Inventory',1), - ('life','Life',1), - ('packaging','Packaging',0), - ('payment','Refund',0), - ('product','Product',0), - ('regularization','Regularization',1), - ('return','Return',0), - ('transport','Delivery',0); + ('internal','Internal',1), + ('inventory','Inventory',1), + ('life','Life',1), + ('packaging','Packaging',0), + ('payment','Refund',0), + ('product','Product',0), + ('regularization','Regularization',1), + ('return','Return',0), + ('transport','Delivery',0); INSERT INTO `vn`.`cmr` (id,truckPlate,observations,senderInstruccions,paymentInstruccions,specialAgreements,companyFk,addressToFk,addressFromFk,supplierFk,packagesList,merchandiseDetail,state) VALUES (1,'123456A','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet',442,1,2,1,'Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet'), - (2,'123456N','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet',69,3,4,2,'Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet'), - (3,'123456B','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet',567,5,6,69,'Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet'); + (2,'123456N','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet',69,3,4,2,'Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet'), + (3,'123456B','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet',567,5,6,69,'Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet','Lorem ipsum dolor sit amet'); UPDATE vn.department - SET workerFk = null; + SET workerFk = null; INSERT INTO vn.packaging - VALUES('--', 2745600.00, 100.00, 120.00, 220.00, 0.00, 1, '2001-01-01 00:00:00.000', NULL, NULL, NULL, 0.00, 16, 0.00, 0, NULL, 0.00, NULL, NULL, 0, NULL, 0, 0,0,1); + VALUES('--', 2745600.00, 100.00, 120.00, 220.00, 0.00, 1, '2001-01-01 00:00:00.000', NULL, NULL, NULL, 0.00, 16, 0.00, 0, NULL, 0.00, NULL, NULL, 0, NULL, 0, 0,0,1); INSERT IGNORE INTO vn.intrastat @@ -3243,30 +3243,30 @@ INSERT IGNORE INTO vn.sector INSERT INTO vn.parking (id,sectorFk, code, pickingOrder) - VALUES (4,9991, 'A-01-1', 1), - (5,9991, 'A-02-2', 2), - (6,9991, 'A-03-3', 3), - (7,9991, 'A-04-4', 4), - (8,9991, 'A-05-5', 5), - (9,9992, 'P-01-1', 6), - (10,9992, 'P-02-2', 7), - (11,9992, 'P-03-3', 8), - (12,9993, 'M-01-1', 9), - (13,9993, 'M-02-2', 10), - (14,9993, 'M-03-3', 11); + VALUES (4,9991, 'A-01-1', 1), + (5,9991, 'A-02-2', 2), + (6,9991, 'A-03-3', 3), + (7,9991, 'A-04-4', 4), + (8,9991, 'A-05-5', 5), + (9,9992, 'P-01-1', 6), + (10,9992, 'P-02-2', 7), + (11,9992, 'P-03-3', 8), + (12,9993, 'M-01-1', 9), + (13,9993, 'M-02-2', 10), + (14,9993, 'M-03-3', 11); INSERT INTO vn.shelving (code, parkingFk, priority) - VALUES ('NAA', 4, 1), - ('NBB', 5, 1), - ('NCC', 6, 1), - ('NDD', 7, 1), - ('NEE', 8, 1), - ('PAA', 9, 1), - ('PBB', 10, 1), - ('PCC', 11, 1), - ('MAA', 12, 1), - ('MBB', 13, 1), - ('MCC', 14, 1); + VALUES ('NAA', 4, 1), + ('NBB', 5, 1), + ('NCC', 6, 1), + ('NDD', 7, 1), + ('NEE', 8, 1), + ('PAA', 9, 1), + ('PBB', 10, 1), + ('PCC', 11, 1), + ('MAA', 12, 1), + ('MBB', 13, 1), + ('MCC', 14, 1); INSERT IGNORE INTO vn.itemType SET id = 999, @@ -3775,7 +3775,7 @@ VALUES (1000000, 18, 25, '2023-09-21', 25, 500, NULL, 103, NULL), (999996, 19, 5, '2023-09-27', 1, 5, NULL, 103, NULL), (999997, 21, 10, '2023-09-27', 5, 100, NULL, 103, NULL), - (1000000, 16, 25, '2023-08-21',25, 500, NULL, NULL, NULL); + (1000000, 16, 25, '2023-08-21',25, 500, NULL, NULL, NULL); -- Previous for Bolas de madera INSERT IGNORE INTO vn.sectorCollection @@ -3788,7 +3788,7 @@ INSERT IGNORE INTO vn.saleGroup userFk = 1, parkingFk = 9, sectorFk = 9992, - ticketFk = 36; + ticketFk = 36; INSERT IGNORE INTO vn.sectorCollectionSaleGroup SET id = 9999, @@ -3802,7 +3802,7 @@ INSERT vn.saleGroupDetail INSERT INTO vn.saleTracking SET id = 7, - saleFk = 99996, + saleFk = 99996, isChecked = TRUE, workerFk = 103, stateFk = 28; @@ -3829,8 +3829,8 @@ UPDATE vn.sale INSERT INTO vn.workerAppTester(workerFk) VALUES(66); INSERT INTO `vn`.`machine` (`plate`, `maker`, `model`, `warehouseFk`, `departmentFk`, `type`, `use`, `productionYear`, `workerFk`, `companyFk`) - VALUES - ('RE-003', 'IRON', 'JPH-24', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442); + VALUES + ('RE-003', 'IRON', 'JPH-24', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442); UPDATE vn.buy SET itemOriginalFk = 1 WHERE id = 1; @@ -3845,7 +3845,7 @@ INSERT INTO vn.ticketLog (originFk,userFk,`action`,creationDate,changedModel,new VALUES (18,9,'insert','2001-01-01 11:01:00.000','Ticket','{"isDeleted":true}',45,'Super Man'); INSERT INTO `vn`.`supplierDms`(`supplierFk`, `dmsFk`, `editorFk`) - VALUES (1, 10, 9); + VALUES (1, 10, 9); INSERT INTO `vn`.`accountReconciliation` (supplierAccountFk,operationDated,valueDated,amount,concept,debitCredit,calculatedCode,created) VALUES @@ -3863,11 +3863,11 @@ INSERT INTO `vn`.`accountReconciliationConfig`(currencyFk, warehouseFk) INSERT INTO vn.workerTeam(id, team, workerFk) - VALUES - (8, 1, 19); + VALUES + (8, 1, 19); INSERT INTO vn.workCenter (id, name, payrollCenterFk, counter, warehouseFk, street, geoFk, deliveryManAdjustment) - VALUES(100, 'workCenterOne', 1, NULL, 1, 'gotham', NULL, NULL); + VALUES(100, 'workCenterOne', 1, NULL, 1, 'gotham', NULL, NULL); INSERT INTO `vn`.`locker` (code, gender, workerFk) VALUES ('1M', 'M', 1), @@ -3880,11 +3880,11 @@ INSERT INTO `vn`.`locker` (code, gender, workerFk) VALUES ('4F', 'F', NULL); INSERT INTO `vn`.`ledgerCompany` SET - fiscalYear = YEAR(util.VN_CURDATE()), - bookEntry = 2; + fiscalYear = YEAR(util.VN_CURDATE()), + bookEntry = 2; INSERT INTO `vn`.`ledgerConfig` SET - maxTolerance = 0.01; + maxTolerance = 0.01; INSERT INTO vn.trainingCourse (workerFk,trainingCourseTypeFk,centerFk,started,ended,hasDiscount,hasDiploma) @@ -3904,8 +3904,8 @@ INSERT INTO vn.sectorCollectionSaleGroup saleGroupFk = 4; INSERT INTO vn.saleGroup (userFk, parkingFk, sectorFk, ticketFk) - VALUES - (1, 1, 1, 37); + VALUES + (1, 1, 1, 37); INSERT INTO vn.sectorCollection SET id = 3, @@ -3941,7 +3941,7 @@ INSERT INTO vn.medicalReview VALUES(3, 9, 2, '2000-01-01', '8:00', 1, 150.0, NULL, NULL); INSERT INTO vn.stockBought (workerFk, bought, reserve, dated) - VALUES(35, 1.00, 1.00, '2001-01-01'); + VALUES(35, 1.00, 1.00, '2001-01-01'); INSERT INTO vn.auctionConfig (id,conversionCoefficient,warehouseFk) VALUES (1,0.6,6); @@ -3984,8 +3984,8 @@ VALUES (6, 'ABA', 'aba'); INSERT IGNORE INTO ormConfig - SET id =1, - selectLimit = 1000; + SET id =1, + selectLimit = 1000; INSERT INTO pbx.queueMultiConfig SET id = 'ring', @@ -3997,12 +3997,12 @@ INSERT INTO pbx.queueMultiConfig ringInUse = 0; INSERT INTO pbx.queue (description, name, config) - VALUES ('X-men', '1000', 1), - ('Avengers', '2000', 1); + VALUES ('X-men', '1000', 1), + ('Avengers', '2000', 1); INSERT IGNORE INTO pbx.queueMember - SET queue = '1000', - extension = '1010'; + SET queue = '1000', + extension = '1010'; UPDATE vn.department SET pbxQueue = '1000' WHERE name = "CAMARA"; UPDATE vn.department SET pbxQueue = '2000' WHERE name = "VENTAS"; @@ -4015,22 +4015,22 @@ INSERT INTO vn.routeComplement (id, dated, workerFk, price, routeActionFk) VALUE INSERT INTO srt.buffer (id, x, y, `size`, `length`, stateFk, typeFk, isActive, code, stratus, hasWorkerWaiting, reserve, routeFk, dayMinute, lastUnloaded, hasStrapper, typeDefaultFk, motors, editorFk) - VALUES (0, 0, 0, 0, NULL, 3, 1, 0, 'ENT', 0, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (1, 0, 9900, 0, NULL, 1, 0, 0, 'NOK', 0, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (2, 0, 0, 450, 13000, 1, 0, 1, '01A', 1, 1, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (3, 1400, 0, 450, 13000, 1, 0, 1, '01B', 1, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (4, 0, 500, 500, 13000, 1, 4, 1, '02A', 2, 1, NULL, NULL, NULL, NULL, 1, 4, 13, NULL), - (5, 1400, 500, 500, 13000, 1, 4, 1, '02B', 2, 1, NULL, NULL, NULL, NULL, 1, 4, 13, NULL), - (6, 0, 1000, 500, 13000, 1, 1, 1, '03A', 3, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (7, 1400, 1000, 500, 13000, 1, 1, 1, '03B', 3, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (8, 0, 1500, 500, 13000, 1, 0, 1, '04A', 4, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (9, 1400, 1500, 500, 13000, 1, 1, 1, '04B', 4, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), - (10, 0, 2000, 500, 13000, 1, 1, 1, '05A', 5, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL); + VALUES (0, 0, 0, 0, NULL, 3, 1, 0, 'ENT', 0, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (1, 0, 9900, 0, NULL, 1, 0, 0, 'NOK', 0, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (2, 0, 0, 450, 13000, 1, 0, 1, '01A', 1, 1, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (3, 1400, 0, 450, 13000, 1, 0, 1, '01B', 1, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (4, 0, 500, 500, 13000, 1, 4, 1, '02A', 2, 1, NULL, NULL, NULL, NULL, 1, 4, 13, NULL), + (5, 1400, 500, 500, 13000, 1, 4, 1, '02B', 2, 1, NULL, NULL, NULL, NULL, 1, 4, 13, NULL), + (6, 0, 1000, 500, 13000, 1, 1, 1, '03A', 3, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (7, 1400, 1000, 500, 13000, 1, 1, 1, '03B', 3, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (8, 0, 1500, 500, 13000, 1, 0, 1, '04A', 4, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (9, 1400, 1500, 500, 13000, 1, 1, 1, '04B', 4, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL), + (10, 0, 2000, 500, 13000, 1, 1, 1, '05A', 5, 0, NULL, NULL, NULL, NULL, 0, 1, 1, NULL); INSERT IGNORE INTO vn.saySimpleCountry (countryFk, channel) VALUES (19, '1169'), (8, '1183'), - (1, '1320'); + (1, '1320'); INSERT IGNORE INTO vn.saySimpleConfig (url, defaultChannel) VALUES ('saysimle-url-mock', '1819'); @@ -4039,13 +4039,13 @@ INSERT INTO vn.workerIrpf (workerFk,spouseNif, geographicMobilityDate) VALUES (1106,'26493101E','2019-09-20'); INSERT INTO vn.referenceRate (currencyFk, dated, value) - VALUES (2, '2000-12-01', 1.0495), - (2, '2001-01-01', 1.0531), - (2, '2001-02-01', 7.6347); + VALUES (2, '2000-12-01', 1.0495), + (2, '2001-01-01', 1.0531), + (2, '2001-02-01', 7.6347); INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance) - VALUES (1,'https://router.project-osrm.org', 0.002); + VALUES (1,'https://router.project-osrm.org', 0.002); INSERT IGNORE INTO vn.inventoryConfig - SET id = 1, - supplierFk = 4; + SET id = 1, + supplierFk = 4; diff --git a/db/versions/11389-yellowChico/00-firstScript.sql b/db/versions/11389-yellowChico/00-firstScript.sql new file mode 100644 index 0000000000..e8fd57e287 --- /dev/null +++ b/db/versions/11389-yellowChico/00-firstScript.sql @@ -0,0 +1,25 @@ +CREATE TABLE vn.parkingCoordinates ( + parkingFk int(11) NOT NULL, + x varchar(5) NOT NULL, + y varchar(5) NOT NULL, + z varchar(5) NOT NULL, + CONSTRAINT parkingCoordinates_pk PRIMARY KEY (parkingFk), + CONSTRAINT parkingCoordinates_parking_FK FOREIGN KEY (parkingFk) REFERENCES vn.parking(id) ON DELETE CASCADE ON UPDATE CASCADE +) +ENGINE=InnoDB +DEFAULT CHARSET=utf8mb3 +COLLATE=utf8mb3_unicode_ci; + +UPDATE vn.parkingCoordinates pc + JOIN vn.parking p ON p.id = pc.parkingFk + SET pc.x = IFNULL(p.`column`, 0), + pc.y = IFNULL(p.`row`, 0), + pc.z = IFNULL(p.`floor`, 0) + WHERE p.`column` IS NOT NULL + OR p.`row` IS NOT NULL + OR p.`floor` IS NOT NULL; + +ALTER TABLE vn.parking + DROP COLUMN `column`, + DROP COLUMN `row`, + DROP COLUMN `floor`; From a8cf01ca198ca5f5f143601ab447860958ad187b Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 18 Dec 2024 14:36:59 +0100 Subject: [PATCH 067/217] refactor: refs #8172 Removed column and row columns --- modules/shelving/back/models/parking.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/modules/shelving/back/models/parking.json b/modules/shelving/back/models/parking.json index a9393fc6a7..251613a504 100644 --- a/modules/shelving/back/models/parking.json +++ b/modules/shelving/back/models/parking.json @@ -12,14 +12,6 @@ "id": true, "description": "Identifier" }, - "column": { - "type": "string", - "required": true - }, - "row": { - "type": "string", - "required": true - }, "code": { "type": "string" }, From 0652d1111292eb7081064e09ff745d36939f002d Mon Sep 17 00:00:00 2001 From: robert Date: Thu, 19 Dec 2024 10:29:50 +0100 Subject: [PATCH 068/217] feat: refs #6702 updatePrice message --- loopback/locale/es.json | 6 ++++-- .../ticket/back/methods/sale/updatePrice.js | 5 +++-- modules/ticket/back/models/sale.js | 20 +++++++++++++------ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 68514b9f36..9136d3d01d 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -123,7 +123,7 @@ "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) {{ticketClone}} ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) {{ticketWeekly}} ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", "State": "Estado", @@ -393,5 +393,7 @@ "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero", "Price cannot be blank": "Price cannot be blank", "An item type with the same code already exists": "Un tipo con el mismo código ya existe", - "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles" + "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles", + "Is cloned": "Is cloned", + "Is cloned from": "Is cloned from" } diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index b6276c99a0..f1568380b4 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -113,7 +113,8 @@ module.exports = Self => { const salesPerson = sale.ticket().client().salesPersonUser(); if (salesPerson) { const url = await Self.app.models.Url.getUrl(); - const ticketWeekly = await models.Sale.ticketClone(sale.id); + const ticketWeekly = await models.Sale.ticketWeekly(sale.id); + const message = $t('Changed sale price', { ticketId: sale.ticket().id, itemId: sale.itemFk, @@ -123,7 +124,7 @@ module.exports = Self => { newPrice: newPrice, ticketUrl: `${url}ticket/${sale.ticket().id}/sale`, itemUrl: `${url}item/${sale.itemFk}/summary`, - ticketCloned: ticketWeekly && $t('Is cloned', ticketWeekly) + ticketWeekly: ticketWeekly ? `Is cloned from ticket ${ticketWeekly} de ` : null }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message, myOptions); } diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 2550d76b46..d916794d4b 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -137,11 +137,19 @@ module.exports = Self => { throw new UserError('The price of the item changed'); }); - Self.isCloned = async function(saleId) { - // let userId = ctx.req.accessToken.userId; - // return await Self.findById(userId, { - // fields: ['id', 'name', 'nickname'] - // }); - // return ticketId + Self.ticketWeekly = async function(saleId) { + const SaleCloned = Self.app.models.SaleCloned; + + const saleCloned2 = await SaleCloned.findOne({ + where: { + saleClonedFk: saleId + }, + include: { + relation: 'saleOriginal' + } + }); + + return saleCloned2.saleOriginal()?.ticketFk; }; }; + From 9b2fb7a43061abdae76d57051468dc3b12d917e7 Mon Sep 17 00:00:00 2001 From: robert Date: Thu, 19 Dec 2024 11:32:15 +0100 Subject: [PATCH 069/217] feat: refs #6702 sale fix Self.ticketWeekly --- modules/ticket/back/models/sale.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index d916794d4b..3ed4ddb52b 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -148,8 +148,7 @@ module.exports = Self => { relation: 'saleOriginal' } }); - - return saleCloned2.saleOriginal()?.ticketFk; + return saleCloned2?.saleOriginal()?.ticketFk || null; }; }; From 086b7aed4b2e2fcf25db2f5b7ddfbdc7075ec09c Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 24 Dec 2024 10:40:17 +0100 Subject: [PATCH 070/217] feat: refs #7119 add VehicleState model with data source configuration --- modules/route/back/model-config.json | 3 ++ modules/route/back/models/vehicle-state.json | 29 ++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 modules/route/back/models/vehicle-state.json diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index fb1c5d7fdd..8b47c5347d 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -35,6 +35,9 @@ "Vehicle": { "dataSource": "vn" }, + "VehicleState": { + "dataSource": "vn" + }, "RoutesMonitor": { "dataSource": "vn" } diff --git a/modules/route/back/models/vehicle-state.json b/modules/route/back/models/vehicle-state.json new file mode 100644 index 0000000000..1f71333eb9 --- /dev/null +++ b/modules/route/back/models/vehicle-state.json @@ -0,0 +1,29 @@ +{ + "name": "VehicleState", + "base": "VnModel", + "options": { + "mysql": { + "table": "vehicleState" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "state": { + "type": "string" + }, + "hasToNotify": { + "type": "number" + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} \ No newline at end of file From 39fc19646471d0607bdcfa9170de1b2c34694ef3 Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 24 Dec 2024 13:01:23 +0100 Subject: [PATCH 071/217] feat: refs #7119 add VehicleEvent and VehicleState models with associated methods and SQL fixtures --- db/dump/fixtures.before.sql | 30 ++++++++--- .../11394-brownAsparagus/00-firstScript.sql | 2 + modules/route/back/methods/vehicle/filter.js | 52 +++++++++++++++++++ modules/route/back/model-config.json | 3 ++ modules/route/back/models/vehicle-event.json | 51 ++++++++++++++++++ modules/route/back/models/vehicle.js | 1 + modules/route/back/models/vehicle.json | 22 ++++++-- 7 files changed, 150 insertions(+), 11 deletions(-) create mode 100644 db/versions/11394-brownAsparagus/00-firstScript.sql create mode 100644 modules/route/back/methods/vehicle/filter.js create mode 100644 modules/route/back/models/vehicle-event.json diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 97ed0ae47e..cb9160b6d9 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -849,14 +849,14 @@ INSERT INTO `vn`.`deliveryPoint` (`id`, `name`, `ubication`) VALUES (1, 'Gotham','1007 Mountain Drive, Gotham'); -INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`) +INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`, `chassis`, `leasing`) VALUES - (1, '3333-BAT', 'WAYNE INDUSTRIES', 'BATMOBILE', 442, 1, 'The ultimate war machine', 50, 1, 1), - (2, '1111-IMK', 'STARK INDUSTRIES', 'MARK-III', 442, 1, 'Iron-Man Heavy Armor MARK-III', 18, 1, 1), - (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1, 1), - (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1, 1), - (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1, 1), - (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1); + (1, '3333-BAT', 'WAYNE INDUSTRIES', 'BATMOBILE', 442, 1, 'The ultimate war machine', 50, 1, 1, 'XCSC133C60', 'Wayne leasing'), + (2, '1111-IMK', 'STARK INDUSTRIES', 'MARK-III', 442, 1, 'Iron-Man Heavy Armor MARK-III', 18, 1, 1, '', ''), + (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1, 1, '', ''), + (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1, 1, '', ''), + (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1, 1, '', ''), + (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1, '', ''); INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`, `inventoried`) VALUES @@ -4049,3 +4049,19 @@ INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance) INSERT IGNORE INTO vn.inventoryConfig SET id = 1, supplierFk = 4; + +INSERT INTO vn.vehicleState (state, hasToNotify) +VALUES + ('Operativo', NULL), + ('Prestado', NULL), + ('Robado', NULL), + ('Taller', NULL), + ('Targeta SOLRED', NULL), + ('Via T SOLRED', NULL), + ('ITV', NULL); + +INSERT INTO vn.vehicleEvent (started, finished, vehicleStateFk, description, vehicleFk, userFk, notified) +VALUES + ('2000-12-01', '2000-12-02', 4, 'cambio de aceite', 5, 103, NULL), + ('2000-12-15', '2000-12-18', 2, 'viaje fin de curso', 5, 103, NULL), + ('2000-12-20', '2001-01-01', 3, 'llaves puestas', 203, 103, NULL); \ No newline at end of file diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql new file mode 100644 index 0000000000..c7137bc7b6 --- /dev/null +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -0,0 +1,2 @@ +INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) + VALUES('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'); \ No newline at end of file diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js new file mode 100644 index 0000000000..9f92ee5ac4 --- /dev/null +++ b/modules/route/back/methods/vehicle/filter.js @@ -0,0 +1,52 @@ +module.exports = Self => { + Self.remoteMethod('filter', { + description: 'Find all instances of the model matched by filter from the data source.', + accessType: 'READ', + accepts: [{ + arg: 'id', + type: 'number' + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/filter`, + verb: `GET` + } + }); + + Self.filter = async id => { + const filter = { + fields: ['id', 'numberPlate', 'tradeMark', 'model', 'm3', 'description', 'isActive', 'warehouseFk', 'companyFk', 'countryCodeFk', 'chassis', 'leasing'], + include: [ + { + relation: 'warehouse', + scope: { + fields: ['id', 'name'] + } + }, + { + relation: 'company', + scope: { + fields: ['id', 'code'] + } + }, + { + relation: 'event', + scope: { + fields: ['vehicleFk', 'vehicleStateFk'], + include: { + relation: 'state', + scope: { + fields: ['id', 'state'] + } + } + } + }, + ] + }; + + return Self.find(filter); + }; +}; diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index 8b47c5347d..b951d2560a 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -35,6 +35,9 @@ "Vehicle": { "dataSource": "vn" }, + "VehicleEvent": { + "dataSource": "vn" + }, "VehicleState": { "dataSource": "vn" }, diff --git a/modules/route/back/models/vehicle-event.json b/modules/route/back/models/vehicle-event.json new file mode 100644 index 0000000000..324076723c --- /dev/null +++ b/modules/route/back/models/vehicle-event.json @@ -0,0 +1,51 @@ +{ + "name": "VehicleEvent", + "base": "VnModel", + "options": { + "mysql": { + "table": "vehicleEvent" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "started": { + "type": "date" + }, + "finished": { + "type": "date" + }, + "vehicleStateFk": { + "type": "number" + }, + "description": { + "type": "string" + }, + "vehicleFk": { + "type": "number" + }, + "userFk": { + "type": "number" + }, + "notified": { + "type": "date" + } + }, + "relations": { + "state": { + "type": "belongsTo", + "model": "VehicleState", + "foreignKey": "vehicleStateFk" + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} \ No newline at end of file diff --git a/modules/route/back/models/vehicle.js b/modules/route/back/models/vehicle.js index 73e3214435..59aa7cb8b7 100644 --- a/modules/route/back/models/vehicle.js +++ b/modules/route/back/models/vehicle.js @@ -1,3 +1,4 @@ module.exports = Self => { require('../methods/vehicle/sorted')(Self); + require('../methods/vehicle/filter')(Self); }; diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index 34a376b897..7dd172017c 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -3,7 +3,7 @@ "base": "VnModel", "options": { "mysql": { - "table": "vehicle" + "table": "vehicle" } }, "properties": { @@ -29,6 +29,15 @@ }, "isActive": { "type": "number" + }, + "countryCodeFk": { + "type": "string" + }, + "chassis": { + "type": "string" + }, + "leasing": { + "type": "string" } }, "relations": { @@ -46,14 +55,19 @@ "type": "belongsTo", "model": "DeliveryPoint", "foreignKey": "deliveryPointFk" + }, + "event": { + "type": "belongsTo", + "model": "VehicleEvent", + "foreignKey": "id" } }, "scope": { "where": { "isActive": { - "neq": false - } + "neq": false } + } }, "acls": [ { @@ -63,4 +77,4 @@ "permission": "ALLOW" } ] -} +} \ No newline at end of file From 9aa790ecfd5c0fb67ec0b17d65a59bc8457957bf Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 24 Dec 2024 13:27:32 +0100 Subject: [PATCH 072/217] feat: refs #7119 add isKmTruckRate field to Vehicle model and filter --- modules/route/back/methods/vehicle/filter.js | 2 +- modules/route/back/models/vehicle.json | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index 9f92ee5ac4..608139a4c9 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -18,7 +18,7 @@ module.exports = Self => { Self.filter = async id => { const filter = { - fields: ['id', 'numberPlate', 'tradeMark', 'model', 'm3', 'description', 'isActive', 'warehouseFk', 'companyFk', 'countryCodeFk', 'chassis', 'leasing'], + fields: ['id', 'numberPlate', 'tradeMark', 'model', 'm3', 'description', 'isActive', 'warehouseFk', 'companyFk', 'countryCodeFk', 'chassis', 'leasing', 'isKmTruckRate'], include: [ { relation: 'warehouse', diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index 7dd172017c..a98c7cab74 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -38,6 +38,9 @@ }, "leasing": { "type": "string" + }, + "isKmTruckRate": { + "type": "number" } }, "relations": { From f8c1e2aacfd2071716d6030ce1224b3bad35b3de Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 26 Dec 2024 16:36:50 +0100 Subject: [PATCH 073/217] feat: refs #7119 add search and filter capabilities to Vehicle model and update related SQL fixtures --- db/dump/fixtures.before.sql | 2 +- modules/route/back/methods/vehicle/filter.js | 88 ++++++++++++++++++-- modules/route/back/models/vehicle.json | 5 +- 3 files changed, 87 insertions(+), 8 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 5516f13290..0189b1137c 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -4064,4 +4064,4 @@ INSERT INTO vn.vehicleEvent (started, finished, vehicleStateFk, description, veh VALUES ('2000-12-01', '2000-12-02', 4, 'cambio de aceite', 5, 103, NULL), ('2000-12-15', '2000-12-18', 2, 'viaje fin de curso', 5, 103, NULL), - ('2000-12-20', '2001-01-01', 3, 'llaves puestas', 203, 103, NULL); \ No newline at end of file + ('2000-12-20', '2001-01-01', 3, 'llaves puestas', 2, 103, NULL); \ No newline at end of file diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index 608139a4c9..b6ba306ac9 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -3,8 +3,48 @@ module.exports = Self => { description: 'Find all instances of the model matched by filter from the data source.', accessType: 'READ', accepts: [{ + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, skip and limit - must be a JSON-encoded string', + http: {source: 'query'} + }, { + arg: 'search', + type: 'string', + description: 'Searchs the vehicle by id or numberPlate', + http: {source: 'query'} + }, { arg: 'id', type: 'number' + }, { + arg: 'description', + type: 'string' + }, { + arg: 'companyFk', + type: 'number' + }, { + arg: 'tradeMark', + type: 'string' + }, { + arg: 'numberPlate', + type: 'string' + }, { + arg: 'warehouseFk', + type: 'number' + }, { + arg: 'chassis', + type: 'string' + }, { + arg: 'leasing', + type: 'string' + }, { + arg: 'countryCodeFk', + type: 'string' + }, { + arg: 'isKmTruckRate', + type: 'boolean' + }, { + arg: 'vehicleStateFk', + type: 'number' }], returns: { type: ['object'], @@ -16,8 +56,37 @@ module.exports = Self => { } }); - Self.filter = async id => { - const filter = { + Self.filter = async(filter, search, id, description, companyFk, tradeMark, numberPlate, warehouseFk, chassis, leasing, countryCodeFk, isKmTruckRate, vehicleStateFk, options) => { + const models = Self.app.models; + const myOptions = {}; + const myWhere = {}; + const ids = []; + const {limit, order, skip, where} = filter; + + if (typeof options == 'object') Object.assign(myOptions, options); + + if (search) myWhere.or = [{id: search}, {numberPlate: {like: `%${numberPlate}%`}}]; + if (id) ids.push(id); + if (description) myWhere.description = {like: `%${description}%`}; + if (companyFk) myWhere.companyFk = companyFk; + if (tradeMark) myWhere.tradeMark = {like: `%${tradeMark}%`}; + if (numberPlate) myWhere.numberPlate = {like: `%${numberPlate}%`}; + if (warehouseFk) myWhere.warehouseFk = warehouseFk; + if (chassis) myWhere.chassis = {like: `%${chassis}%`}; + if (leasing) myWhere.leasing = {like: `%${leasing}%`}; + if (countryCodeFk) myWhere.countryCodeFk = countryCodeFk; + if (isKmTruckRate) myWhere.isKmTruckRate = isKmTruckRate; + if (vehicleStateFk) { + ids.push(...await models.VehicleEvent.find({ + fields: ['vehicleFk', 'vehicleStateFk'], + where: {vehicleStateFk}}).map(v => v.vehicleFk)); + } + + const idsLeng = ids.length; + if (idsLeng) myWhere.id = idsLeng == 1 ? ids[0] : {inq: ids}; + Object.assign(where || {}, myWhere); + + const myFilter = { fields: ['id', 'numberPlate', 'tradeMark', 'model', 'm3', 'description', 'isActive', 'warehouseFk', 'companyFk', 'countryCodeFk', 'chassis', 'leasing', 'isKmTruckRate'], include: [ { @@ -41,12 +110,21 @@ module.exports = Self => { scope: { fields: ['id', 'state'] } - } + }, + order: ['started DESC'], + limit: 1 } }, - ] + ], + where: myWhere, + order, + limit, + skip, }; - return Self.find(filter); + return Self.find(myFilter, myOptions).map(v => { + v.__data.event = v.event()[0]; + return v; + }); }; }; diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index a98c7cab74..8419ee6840 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -60,9 +60,10 @@ "foreignKey": "deliveryPointFk" }, "event": { - "type": "belongsTo", + "type": "hasMany", "model": "VehicleEvent", - "foreignKey": "id" + "foreignKey": "vehicleFk", + "property": "id" } }, "scope": { From b01e4894c9c3a46e3385be2ebeaeb55589fd2aea Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 26 Dec 2024 17:02:37 +0100 Subject: [PATCH 074/217] feat: refs #7119 remove vehicleStateFk argument from filter method and simplify search logic --- modules/route/back/methods/vehicle/filter.js | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index b6ba306ac9..a6cec02940 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -42,9 +42,6 @@ module.exports = Self => { }, { arg: 'isKmTruckRate', type: 'boolean' - }, { - arg: 'vehicleStateFk', - type: 'number' }], returns: { type: ['object'], @@ -56,17 +53,15 @@ module.exports = Self => { } }); - Self.filter = async(filter, search, id, description, companyFk, tradeMark, numberPlate, warehouseFk, chassis, leasing, countryCodeFk, isKmTruckRate, vehicleStateFk, options) => { - const models = Self.app.models; + Self.filter = async(filter, search, id, description, companyFk, tradeMark, numberPlate, warehouseFk, chassis, leasing, countryCodeFk, isKmTruckRate, options) => { const myOptions = {}; const myWhere = {}; - const ids = []; const {limit, order, skip, where} = filter; if (typeof options == 'object') Object.assign(myOptions, options); - if (search) myWhere.or = [{id: search}, {numberPlate: {like: `%${numberPlate}%`}}]; - if (id) ids.push(id); + if (search) myWhere.or = [{id: search}, {numberPlate: {like: `%${search}%`}}]; + if (id) myWhere.id = id; if (description) myWhere.description = {like: `%${description}%`}; if (companyFk) myWhere.companyFk = companyFk; if (tradeMark) myWhere.tradeMark = {like: `%${tradeMark}%`}; @@ -76,14 +71,7 @@ module.exports = Self => { if (leasing) myWhere.leasing = {like: `%${leasing}%`}; if (countryCodeFk) myWhere.countryCodeFk = countryCodeFk; if (isKmTruckRate) myWhere.isKmTruckRate = isKmTruckRate; - if (vehicleStateFk) { - ids.push(...await models.VehicleEvent.find({ - fields: ['vehicleFk', 'vehicleStateFk'], - where: {vehicleStateFk}}).map(v => v.vehicleFk)); - } - const idsLeng = ids.length; - if (idsLeng) myWhere.id = idsLeng == 1 ? ids[0] : {inq: ids}; Object.assign(where || {}, myWhere); const myFilter = { From 4d7387af18954d4b599bca6d48d0b78421e0e790 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 26 Dec 2024 17:52:36 +0100 Subject: [PATCH 075/217] feat: refs #7119 add deleteById permission for deliveryBoss role in ACL for Vehicle model --- db/versions/11394-brownAsparagus/00-firstScript.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index c7137bc7b6..dfc07411ed 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -1,2 +1,3 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) - VALUES('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'); \ No newline at end of file + VALUES('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'); \ No newline at end of file From 9731d13a9ac401e1f031087f8d7ca1b7045f5340 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 27 Dec 2024 12:21:46 +0100 Subject: [PATCH 076/217] feat: refs #7119 add updateAttributes ACL --- db/versions/11394-brownAsparagus/00-firstScript.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index dfc07411ed..84d6001995 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -1,3 +1,4 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) VALUES('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'); \ No newline at end of file From 0de4ce9b3c6e005851899930f68f9eb6431fd916 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 27 Dec 2024 15:36:19 +0100 Subject: [PATCH 077/217] feat: refs #7119 add BankPolicy and FuelType models --- db/dump/fixtures.before.sql | 30 ++++++++++++++----- .../11394-brownAsparagus/00-firstScript.sql | 3 +- modules/route/back/model-config.json | 6 ++++ modules/route/back/models/bank-policy.json | 18 +++++++++++ modules/route/back/models/fuel-type.json | 30 +++++++++++++++++++ modules/route/back/models/vehicle.json | 29 ++++++++++++++++++ 6 files changed, 107 insertions(+), 9 deletions(-) create mode 100644 modules/route/back/models/bank-policy.json create mode 100644 modules/route/back/models/fuel-type.json diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 0189b1137c..b2d11999dd 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -849,14 +849,14 @@ INSERT INTO `vn`.`deliveryPoint` (`id`, `name`, `ubication`) VALUES (1, 'Gotham','1007 Mountain Drive, Gotham'); -INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`, `chassis`, `leasing`) +INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`, `chassis`, `leasing`, `supplierFk`, `fuelTypeFk`, `bankPolicyFk`) VALUES - (1, '3333-BAT', 'WAYNE INDUSTRIES', 'BATMOBILE', 442, 1, 'The ultimate war machine', 50, 1, 1, 'XCSC133C60', 'Wayne leasing'), - (2, '1111-IMK', 'STARK INDUSTRIES', 'MARK-III', 442, 1, 'Iron-Man Heavy Armor MARK-III', 18, 1, 1, '', ''), - (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1, 1, '', ''), - (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1, 1, '', ''), - (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1, 1, '', ''), - (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1, '', ''); + (1, '3333-BAT', 'WAYNE INDUSTRIES', 'BATMOBILE', 442, 1, 'The ultimate war machine', 50, 1, 1, 'XCSC133C60', 'Wayne leasing', 1, 1, 1), + (2, '1111-IMK', 'STARK INDUSTRIES', 'MARK-III', 442, 1, 'Iron-Man Heavy Armor MARK-III', 18, 1, 1, '', '', 2, 2, 2), + (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1, 1, '', '', 442, 2, null), + (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1, 1, '', '', 442, 3, null), + (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1, 1, '', '', 442, 4, null), + (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1, '', '', 442, 5, null); INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`, `inventoried`) VALUES @@ -4064,4 +4064,18 @@ INSERT INTO vn.vehicleEvent (started, finished, vehicleStateFk, description, veh VALUES ('2000-12-01', '2000-12-02', 4, 'cambio de aceite', 5, 103, NULL), ('2000-12-15', '2000-12-18', 2, 'viaje fin de curso', 5, 103, NULL), - ('2000-12-20', '2001-01-01', 3, 'llaves puestas', 2, 103, NULL); \ No newline at end of file + ('2000-12-20', '2001-01-01', 3, 'llaves puestas', 2, 103, NULL); + +INSERT INTO vn.fuelType (id, name, code) +VALUES + (1, 'gasoil', 'gasoil'), + (2, 'gas', 'gas'), + (3, 'adblue', 'adblue'), + (4, 'gasolina', 'gasolina'), + (5, 'gasoil-frigo', 'gasoil-frigo'), + (6, 'electrico', 'electric'); + +INSERT INTO vn.bankPolicy (id, `ref`, amount, committedFee, nonCommittedFee, annualFee, started, ended, accountingFk, companyFk, supplierFk, description, hasGuarantee, dmsFk, notaryFk, currencyFk, amortizationTypeFk, periodicityTypeFk, insuranceExpired) +VALUES + (1, '11112222', 500000.0, 0.028, 0.0, 0.001, '2001-01-01', '2001-02-01', 1, 442, NULL, NULL, 0, NULL, NULL, 1, NULL, NULL, NULL), + (2, '33334444', 100000.0, 0.017, 0.0, 0.0, '2001-01-01', '2001-02-01', 1, 2, NULL, NULL, 0, NULL, NULL, 2, NULL, NULL, NULL); \ No newline at end of file diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index 84d6001995..d02482efdd 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -1,4 +1,5 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) - VALUES('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), + VALUES ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), + ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'); \ No newline at end of file diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index b951d2560a..42b71f5f1e 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -5,12 +5,18 @@ "AgencyTermConfig": { "dataSource": "vn" }, + "BankPolicy": { + "dataSource": "vn" + }, "Cmr": { "dataSource": "vn" }, "DeliveryPoint": { "dataSource": "vn" }, + "FuelType": { + "dataSource": "vn" + }, "RoadmapAddress": { "dataSource": "vn" }, diff --git a/modules/route/back/models/bank-policy.json b/modules/route/back/models/bank-policy.json new file mode 100644 index 0000000000..edbc636ffa --- /dev/null +++ b/modules/route/back/models/bank-policy.json @@ -0,0 +1,18 @@ +{ + "name": "BankPolicy", + "base": "VnModel", + "options": { + "mysql": { + "table": "bankPolicy" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "ref": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/modules/route/back/models/fuel-type.json b/modules/route/back/models/fuel-type.json new file mode 100644 index 0000000000..c7f96b3253 --- /dev/null +++ b/modules/route/back/models/fuel-type.json @@ -0,0 +1,30 @@ +{ + "name": "FuelType", + "base": "VnModel", + "options": { + "mysql": { + "table": "fuelType" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "name": { + "type": "string" + }, + "code": { + "type": "string" + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "employee", + "permission": "ALLOW" + } + ] +} \ No newline at end of file diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index 8419ee6840..c5b6eab5ba 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -41,6 +41,15 @@ }, "isKmTruckRate": { "type": "number" + }, + "fuelTypeFk": { + "type": "number" + }, + "import": { + "type": "number" + }, + "vin": { + "type": "string" } }, "relations": { @@ -64,6 +73,26 @@ "model": "VehicleEvent", "foreignKey": "vehicleFk", "property": "id" + }, + "supplier": { + "type": "belongsTo", + "model": "Supplier", + "foreignKey": "supplierFk" + }, + "supplierCooler": { + "type": "belongsTo", + "model": "Supplier", + "foreignKey": "supplierCoolerFk" + }, + "bankPolicy": { + "type": "belongsTo", + "model": "BankPolicy", + "foreignKey": "bankPolicyFk" + }, + "fuelType": { + "type": "belongsTo", + "model": "FuelType", + "foreignKey": "fuelTypeFk" } }, "scope": { From 921edb238cdb1eb700e46429f6ec3db3846c0d85 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 27 Dec 2024 16:55:59 +0100 Subject: [PATCH 078/217] feat: refs #7119 add Ppe model and establish relationships in Vehicle model --- db/dump/fixtures.before.sql | 49 ++++++++++++++------------ modules/route/back/model-config.json | 3 ++ modules/route/back/models/ppe.json | 23 ++++++++++++ modules/route/back/models/vehicle.json | 6 ++++ 4 files changed, 59 insertions(+), 22 deletions(-) create mode 100644 modules/route/back/models/ppe.json diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index b2d11999dd..d5562d0009 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -4051,31 +4051,36 @@ INSERT IGNORE INTO vn.inventoryConfig supplierFk = 4; INSERT INTO vn.vehicleState (state, hasToNotify) -VALUES - ('Operativo', NULL), - ('Prestado', NULL), - ('Robado', NULL), - ('Taller', NULL), - ('Targeta SOLRED', NULL), - ('Via T SOLRED', NULL), - ('ITV', NULL); + VALUES + ('Operativo', NULL), + ('Prestado', NULL), + ('Robado', NULL), + ('Taller', NULL), + ('Targeta SOLRED', NULL), + ('Via T SOLRED', NULL), + ('ITV', NULL); INSERT INTO vn.vehicleEvent (started, finished, vehicleStateFk, description, vehicleFk, userFk, notified) -VALUES - ('2000-12-01', '2000-12-02', 4, 'cambio de aceite', 5, 103, NULL), - ('2000-12-15', '2000-12-18', 2, 'viaje fin de curso', 5, 103, NULL), - ('2000-12-20', '2001-01-01', 3, 'llaves puestas', 2, 103, NULL); + VALUES + ('2000-12-01', '2000-12-02', 4, 'cambio de aceite', 5, 103, NULL), + ('2000-12-15', '2000-12-18', 2, 'viaje fin de curso', 5, 103, NULL), + ('2000-12-20', '2001-01-01', 3, 'llaves puestas', 2, 103, NULL); INSERT INTO vn.fuelType (id, name, code) -VALUES - (1, 'gasoil', 'gasoil'), - (2, 'gas', 'gas'), - (3, 'adblue', 'adblue'), - (4, 'gasolina', 'gasolina'), - (5, 'gasoil-frigo', 'gasoil-frigo'), - (6, 'electrico', 'electric'); + VALUES + (1, 'gasoil', 'gasoil'), + (2, 'gas', 'gas'), + (3, 'adblue', 'adblue'), + (4, 'gasolina', 'gasolina'), + (5, 'gasoil-frigo', 'gasoil-frigo'), + (6, 'electrico', 'electric'); INSERT INTO vn.bankPolicy (id, `ref`, amount, committedFee, nonCommittedFee, annualFee, started, ended, accountingFk, companyFk, supplierFk, description, hasGuarantee, dmsFk, notaryFk, currencyFk, amortizationTypeFk, periodicityTypeFk, insuranceExpired) -VALUES - (1, '11112222', 500000.0, 0.028, 0.0, 0.001, '2001-01-01', '2001-02-01', 1, 442, NULL, NULL, 0, NULL, NULL, 1, NULL, NULL, NULL), - (2, '33334444', 100000.0, 0.017, 0.0, 0.0, '2001-01-01', '2001-02-01', 1, 2, NULL, NULL, 0, NULL, NULL, 2, NULL, NULL, NULL); \ No newline at end of file + VALUES + (1, '11112222', 500000.0, 0.028, 0.0, 0.001, '2001-01-01', '2001-02-01', 1, 442, NULL, NULL, 0, NULL, NULL, 1, NULL, NULL, NULL), + (2, '33334444', 100000.0, 0.017, 0.0, 0.0, '2001-01-01', '2001-02-01', 1, 2, NULL, NULL, 0, NULL, NULL, 2, NULL, NULL, NULL); + +INSERT INTO vn.ppe (id, amortization, firstAmortizated, lastAmortizated, finished, value, planFk, groupFk, account, endowment, elementAccount, nature, location, discharged, cause, isInvestmentAsset, workerFk, companyFk, description, isDone) + VALUES + (1, 0.00, '2001-01-01', NULL, NULL, 700.95, 16, 4, '3456000000', '4320000000', '12345', 'INMOVILIZADO', 'V02', NULL, NULL, 0, NULL, 442, 'UTILLAJE LASER ROTATIVO AUTONIVELANTE 500M', NULL), + (2, 0.00, '2001-01-01', NULL, NULL, 400.00, 16, 4, '5678000000', '1230000000', '67891', 'INMOVILIZADO', 'V02', NULL, NULL, 0, NULL, 442, 'UTILLAJE BALANZA Z100 150KILOS', NULL); \ No newline at end of file diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index 42b71f5f1e..c8c67a361e 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -17,6 +17,9 @@ "FuelType": { "dataSource": "vn" }, + "Ppe": { + "dataSource": "vn" + }, "RoadmapAddress": { "dataSource": "vn" }, diff --git a/modules/route/back/models/ppe.json b/modules/route/back/models/ppe.json new file mode 100644 index 0000000000..7af5cb6844 --- /dev/null +++ b/modules/route/back/models/ppe.json @@ -0,0 +1,23 @@ +{ + "name": "Ppe", + "base": "VnModel", + "options": { + "mysql": { + "table": "ppe" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "delivery", + "permission": "ALLOW" + } + ] +} \ No newline at end of file diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index c5b6eab5ba..dbf78f7d12 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -93,6 +93,12 @@ "type": "belongsTo", "model": "FuelType", "foreignKey": "fuelTypeFk" + }, + "ppe": { + "type": "hasOne", + "model": "Ppe", + "foreignKey": "id", + "property": "ppeFk" } }, "scope": { From 68e42206c8f2054084112505871e2596f5a1f345 Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 30 Dec 2024 17:31:56 +0100 Subject: [PATCH 079/217] feat: refs #7119 enhance vehicle filter method with additional parameters and improve SQL query structure --- modules/route/back/methods/vehicle/filter.js | 133 +++++++++++-------- modules/route/back/models/vehicle.json | 3 + 2 files changed, 79 insertions(+), 57 deletions(-) diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index a6cec02940..bc2186e3a6 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -1,5 +1,8 @@ +const {ParameterizedSQL} = require('loopback-connector'); +const {buildFilter, mergeFilters} = require('vn-loopback/util/filter'); + module.exports = Self => { - Self.remoteMethod('filter', { + Self.remoteMethodCtx('filter', { description: 'Find all instances of the model matched by filter from the data source.', accessType: 'READ', accepts: [{ @@ -42,6 +45,9 @@ module.exports = Self => { }, { arg: 'isKmTruckRate', type: 'boolean' + }, { + arg: 'vehicleStateFk', + type: 'number' }], returns: { type: ['object'], @@ -53,66 +59,79 @@ module.exports = Self => { } }); - Self.filter = async(filter, search, id, description, companyFk, tradeMark, numberPlate, warehouseFk, chassis, leasing, countryCodeFk, isKmTruckRate, options) => { + Self.filter = async(ctx, filter, options) => { + const conn = Self.dataSource.connector; const myOptions = {}; - const myWhere = {}; - const {limit, order, skip, where} = filter; if (typeof options == 'object') Object.assign(myOptions, options); - if (search) myWhere.or = [{id: search}, {numberPlate: {like: `%${search}%`}}]; - if (id) myWhere.id = id; - if (description) myWhere.description = {like: `%${description}%`}; - if (companyFk) myWhere.companyFk = companyFk; - if (tradeMark) myWhere.tradeMark = {like: `%${tradeMark}%`}; - if (numberPlate) myWhere.numberPlate = {like: `%${numberPlate}%`}; - if (warehouseFk) myWhere.warehouseFk = warehouseFk; - if (chassis) myWhere.chassis = {like: `%${chassis}%`}; - if (leasing) myWhere.leasing = {like: `%${leasing}%`}; - if (countryCodeFk) myWhere.countryCodeFk = countryCodeFk; - if (isKmTruckRate) myWhere.isKmTruckRate = isKmTruckRate; - - Object.assign(where || {}, myWhere); - - const myFilter = { - fields: ['id', 'numberPlate', 'tradeMark', 'model', 'm3', 'description', 'isActive', 'warehouseFk', 'companyFk', 'countryCodeFk', 'chassis', 'leasing', 'isKmTruckRate'], - include: [ - { - relation: 'warehouse', - scope: { - fields: ['id', 'name'] - } - }, - { - relation: 'company', - scope: { - fields: ['id', 'code'] - } - }, - { - relation: 'event', - scope: { - fields: ['vehicleFk', 'vehicleStateFk'], - include: { - relation: 'state', - scope: { - fields: ['id', 'state'] - } - }, - order: ['started DESC'], - limit: 1 - } - }, - ], - where: myWhere, - order, - limit, - skip, - }; - - return Self.find(myFilter, myOptions).map(v => { - v.__data.event = v.event()[0]; - return v; + const where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'search': + return {or: [{'v.id': value}, {numberPlate: {like: `%${value}%`}}]}; + case 'id': + return {id: value}; + case 'description': + return {description: {like: `%${value}%`}}; + case 'companyFk': + return {companyFk: value}; + case 'tradeMark': + return {tradeMark: {like: `%${value}%`}}; + case 'numberPlate': + return {numberPlate: {like: `%${value}%`}}; + case 'warehouseFk': + return {warehouseFk: value}; + case 'chassis': + return {chassis: {like: `%${value}%`}}; + case 'leasing': + return {leasing: {like: `%${value}%`}}; + case 'countryCodeFk': + return {countryCodeFk: value}; + case 'isKmTruckRate': + return {isKmTruckRate: value}; + case 'vehicleStateFk': + return {vehicleStateFk: value}; + } }); + + const myFilter = mergeFilters(filter, {where}); + + const stmt = new ParameterizedSQL(` + SELECT v.id, + v.numberPlate, + v.tradeMark, + v.model, + v.m3, + v.description, + v.isActive, + v.countryCodeFk, + v.chassis, + v.leasing, + v.isKmTruckRate, + w.name as warehouse, + c.code as company, + sub.state + FROM vehicle v + LEFT JOIN warehouse w ON w.id = v.warehouseFk + LEFT JOIN company c ON c.id = v.companyFk + LEFT JOIN ( + SELECT e.vehicleFk, + e.vehicleStateFk, + s.state, + ROW_NUMBER() OVER (PARTITION BY e.vehicleFk ORDER BY e.started DESC) as rn + FROM vehicleEvent e + LEFT JOIN vehicleState s ON e.vehicleStateFk = s.id + ) sub ON sub.vehicleFk = v.id AND sub.rn = 1 + ` + ); + + const sqlWhere = conn.makeWhere(myFilter.where); + stmt.merge(sqlWhere); + stmt.merge(conn.makePagination(myFilter)); + + const sql = ParameterizedSQL.join([stmt], ';'); + const result = await conn.executeStmt(sql, myOptions); + + return result; }; }; diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index dbf78f7d12..9269cdebbc 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -50,6 +50,9 @@ }, "vin": { "type": "string" + }, + "ppeFk": { + "type": "number" } }, "relations": { From bc495ed51e947e45072610e37ca2a6f18aedcca4 Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 30 Dec 2024 17:55:27 +0100 Subject: [PATCH 080/217] feat: refs #7119 add VehicleNotes model and update vehicle filter SQL query --- modules/route/back/methods/vehicle/filter.js | 2 +- modules/route/back/model-config.json | 3 ++ modules/route/back/models/vehicle-notes.json | 35 ++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 modules/route/back/models/vehicle-notes.json diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index bc2186e3a6..17c132c2c8 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -118,7 +118,7 @@ module.exports = Self => { SELECT e.vehicleFk, e.vehicleStateFk, s.state, - ROW_NUMBER() OVER (PARTITION BY e.vehicleFk ORDER BY e.started DESC) as rn + ROW_NUMBER() OVER (PARTITION BY e.vehicleFk ORDER BY e.started DESC) rn FROM vehicleEvent e LEFT JOIN vehicleState s ON e.vehicleStateFk = s.id ) sub ON sub.vehicleFk = v.id AND sub.rn = 1 diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index c8c67a361e..07054061fd 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -47,6 +47,9 @@ "VehicleEvent": { "dataSource": "vn" }, + "VehicleNotes": { + "dataSource": "vn" + }, "VehicleState": { "dataSource": "vn" }, diff --git a/modules/route/back/models/vehicle-notes.json b/modules/route/back/models/vehicle-notes.json new file mode 100644 index 0000000000..922f9b14b9 --- /dev/null +++ b/modules/route/back/models/vehicle-notes.json @@ -0,0 +1,35 @@ +{ + "name": "VehicleNotes", + "base": "VnModel", + "options": { + "mysql": { + "table": "vehicleNotes" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "vehicleFk": { + "type": "number" + }, + "created": { + "type": "date" + }, + "note": { + "type": "string" + }, + "userFk": { + "type": "number" + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "delivery", + "permission": "ALLOW" + } + ] +} \ No newline at end of file From eca2ff84ef4f4f8f2b6d5129c32f84f97247f2f3 Mon Sep 17 00:00:00 2001 From: robert Date: Thu, 2 Jan 2025 07:49:49 +0100 Subject: [PATCH 081/217] feat: refs #6702 changes --- loopback/locale/es.json | 6 +++--- modules/ticket/back/methods/sale/updatePrice.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 9136d3d01d..eb5b9a90ad 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -123,7 +123,7 @@ "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) {{ticketWeekly}} ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}}) {{ticketWeekly}} ", "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", "State": "Estado", @@ -394,6 +394,6 @@ "Price cannot be blank": "Price cannot be blank", "An item type with the same code already exists": "Un tipo con el mismo código ya existe", "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles", - "Is cloned": "Is cloned", - "Is cloned from": "Is cloned from" + "Is cloned from": "Is cloned from", + "Is cloned from ticket {{ticketWeekly}} de": "Is cloned from ticket {{ticketWeekly}} de" } diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index f1568380b4..0112432314 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -124,7 +124,7 @@ module.exports = Self => { newPrice: newPrice, ticketUrl: `${url}ticket/${sale.ticket().id}/sale`, itemUrl: `${url}item/${sale.itemFk}/summary`, - ticketWeekly: ticketWeekly ? `Is cloned from ticket ${ticketWeekly} de ` : null + ticketWeekly: ticketWeekly ? $t('Is cloned from ticket {{ticketWeekly}}', {ticketWeekly}) : null }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message, myOptions); } From 8f99b145100964de144469be2f820e8d723ebc5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 9 Jan 2025 08:43:14 +0100 Subject: [PATCH 082/217] fix: refs #7965 UnifyProblems --- .../vn/procedures/sale_getProblems.sql | 43 +++++++++-------- .../vn/procedures/ticket_getProblems.sql | 48 +++++++++---------- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql index ce6117ec5f..483cacb1ff 100644 --- a/db/routines/vn/procedures/sale_getProblems.sql +++ b/db/routines/vn/procedures/sale_getProblems.sql @@ -6,6 +6,7 @@ BEGIN /** * Calcula los problemas para un conjunto de sale * + * @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy * @table tmp.sale(saleFk) Identificadores de los sale a calcular * @return tmp.saleProblems */ @@ -45,7 +46,7 @@ BEGIN JOIN parking p ON p.id = sh.parkingFk JOIN sector s ON s.id = p.sectorFk GROUP BY ish.itemFk, s.warehouseFk; - + -- Disponible, faltas, inventario y retrasos OPEN vCursor; l: LOOP @@ -55,11 +56,11 @@ BEGIN IF vDone THEN LEAVE l; END IF; - + -- Disponible: no va a haber suficiente producto para preparar todos los pedidos CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, vDate); - - -- Faltas: visible, disponible y ubicado son menores que la cantidad vendida + + -- Faltas: visible, disponible y ubicado son menores que la cantidad vendida CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); INSERT INTO tmp.saleProblems(saleFk, hasItemShortage) @@ -69,16 +70,16 @@ BEGIN JOIN ticket t ON t.id = s.ticketFk JOIN item i ON i.id = s.itemFk JOIN itemType it ON it.id = i.typeFk - JOIN itemCategory ic ON ic.id = it.categoryFk + JOIN itemCategory ic ON ic.id = it.categoryFk LEFT JOIN cache.visible v ON v.item_id = i.id AND v.calc_id = vVisibleCache LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache LEFT JOIN tItemShelving tis ON tis.itemFk = i.id - AND tis.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) < s.quantity - AND IFNULL(av.available, 0) < s.quantity - AND IFNULL(tis.visible, 0) < s.quantity + AND tis.warehouseFk = t.warehouseFk + WHERE (v.visible < s.quantity AND v.visible IS NOT NULL) + AND (av.available < s.quantity AND av.available IS NOT NULL) + AND (tis.visible < s.quantity AND tis.visible IS NOT NULL) AND NOT s.isPicked AND NOT s.reserved AND ic.merchandise @@ -87,7 +88,7 @@ BEGIN AND util.VN_CURDATE() = vDate AND t.warehouseFk = vWarehouseFk GROUP BY s.id; - + -- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida INSERT INTO tmp.saleProblems(saleFk, hasItemLost) SELECT s.id, TRUE @@ -100,9 +101,9 @@ BEGIN LEFT JOIN cache.visible v ON v.item_id = s.itemFk AND v.calc_id = vVisibleCache LEFT JOIN tItemShelving tis ON tis.itemFk = i.id - AND tis.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) >= s.quantity - AND IFNULL(tis.visible, 0) < s.quantity + AND tis.warehouseFk = t.warehouseFk + WHERE (v.visible >= s.quantity AND v.visible IS NOT NULL) + AND (tis.visible < s.quantity AND tis.visible IS NOT NULL) AND s.quantity > 0 AND NOT s.isPicked AND NOT s.reserved @@ -116,7 +117,7 @@ BEGIN -- Retraso: Disponible suficiente, pero no visible ni ubicado INSERT INTO tmp.saleProblems(saleFk, hasItemDelay) - SELECT s.id, TRUE + SELECT s.id, TRUE FROM tmp.sale ts JOIN sale s ON s.id = ts.saleFk JOIN ticket t ON t.id = s.ticketFk @@ -128,10 +129,10 @@ BEGIN LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache LEFT JOIN tItemShelving tis ON tis.itemFk = i.id - AND tis.warehouseFk = t.warehouseFk - WHERE IFNULL(v.visible, 0) < s.quantity - AND IFNULL(av.available, 0) >= s.quantity - AND IFNULL(tis.visible, 0) < s.quantity + AND tis.warehouseFk = t.warehouseFk + WHERE (v.visible < s.quantity AND v.visible IS NOT NULL) + AND (av.available < s.quantity AND av.available IS NOT NULL) + AND (tis.visible < s.quantity AND tis.visible IS NOT NULL) AND s.quantity > 0 AND NOT s.isPicked AND NOT s.reserved @@ -141,9 +142,9 @@ BEGIN AND util.VN_CURDATE() = vDate AND t.warehouseFk = vWarehouseFk GROUP BY s.id - ON DUPLICATE KEY UPDATE hasItemDelay = TRUE; + ON DUPLICATE KEY UPDATE hasItemDelay = TRUE; - -- Redondeo: cantidad incorrecta con respecto al grouping + -- Redondeo: cantidad incorrecta con respecto al grouping CALL buy_getUltimate(NULL, vWarehouseFk, vDate); INSERT INTO tmp.saleProblems(saleFk, hasRounding) @@ -155,7 +156,7 @@ BEGIN JOIN item i ON i.id = s.itemFk JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk JOIN buy b ON b.id = bu.buyFk - WHERE MOD(s.quantity, b.`grouping`) + WHERE MOD(s.quantity, b.`grouping`) GROUP BY s.id ON DUPLICATE KEY UPDATE hasRounding = TRUE; diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index fe77ed57bd..1094a9d491 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -6,6 +6,7 @@ BEGIN /** * Calcula los problemas para un conjunto de tickets. * + * @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular * @return tmp.ticketProblems, tmp.saleProblems */ @@ -13,14 +14,14 @@ BEGIN saleFk INT(11), PRIMARY KEY (saleFk) ) ENGINE = MEMORY - SELECT DISTINCT s.id saleFk + SELECT DISTINCT s.id saleFk FROM tmp.ticket tt - JOIN ticket t ON t.id = tt.ticketFk + JOIN ticket t ON t.id = tt.ticketFk JOIN sale s ON s.ticketFk = t.id WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY) GROUP BY s.id; - + CALL sale_getProblems(vIsTodayRelative); CREATE OR REPLACE TEMPORARY TABLE tmp.ticketProblems ( @@ -57,7 +58,7 @@ BEGIN FROM tmp.saleProblems sp JOIN vn.sale s ON s.id = sp.saleFk WHERE sp.hasRounding - GROUP BY s.ticketFk + GROUP BY s.ticketFk ), hasItemDelay AS( SELECT s.ticketFk FROM tmp.saleProblems sp @@ -71,23 +72,22 @@ BEGIN WHERE FIND_IN_SET('hasComponentLack', s.problem) GROUP BY s.ticketFk )SELECT tt.ticketFk, - IF(FIND_IN_SET('isFreezed', t.problem), TRUE, FALSE) isFreezed, + FIND_IN_SET('isFreezed', t.problem) isFreezed, t.risk, - IF(FIND_IN_SET('hasRisk', t.problem), TRUE, FALSE) hasRisk, - IF(FIND_IN_SET('hasHighRisk', t.problem), TRUE, FALSE) hasHighRisk, - IF(FIND_IN_SET('hasTicketRequest', t.problem), TRUE, FALSE) hasTicketRequest, - IF(FIND_IN_SET('isTaxDataChecked', t.problem), TRUE, FALSE) isTaxDataChecked, - IF(FIND_IN_SET('isTooLittle', t.problem) - AND util.VN_NOW() < (util.VN_CURDATE() + - INTERVAL HOUR(zc.`hour`) HOUR) + - INTERVAL MINUTE(zc.`hour`) MINUTE, - TRUE, FALSE) isTooLittle, - IF(c.businessTypeFk = 'VIP', TRUE, FALSE) isVip, - IF(his.ticketFk IS NULL, FALSE, TRUE) hasItemShortage, - IF(hid.ticketFk IS NULL, FALSE, TRUE) hasItemDelay, - IF(hil.ticketFk IS NULL, FALSE, TRUE) hasItemLost, - IF(hcl.ticketFk IS NULL, FALSE, TRUE) hasComponentLack, - IF(hr.ticketFk IS NULL, FALSE, TRUE) hasRounding, + FIND_IN_SET('hasRisk', t.problem) hasRisk, + FIND_IN_SET('hasHighRisk', t.problem) hasHighRisk, + FIND_IN_SET('hasTicketRequest', t.problem) hasTicketRequest, + FIND_IN_SET('isTaxDataChecked', t.problem) isTaxDataChecked, + FIND_IN_SET('isTooLittle', t.problem) + AND util.VN_NOW() < (util.VN_CURDATE() + + INTERVAL HOUR(zc.`hour`) HOUR) + + INTERVAL MINUTE(zc.`hour`) MINUTE isTooLittle, + c.businessTypeFk = 'VIP' isVip, + NOT (his.ticketFk IS NULL) hasItemShortage, + NOT (hid.ticketFk IS NULL) hasItemDelay, + NOT (hil.ticketFk IS NULL) hasItemLost, + NOT (hcl.ticketFk IS NULL) hasComponentLack, + NOT (hr.ticketFk IS NULL) hasRounding, 0 totalProblems FROM tmp.ticket tt JOIN vn.ticket t ON t.id = tt.ticketFk @@ -100,12 +100,12 @@ BEGIN LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = util.VN_CURDATE() GROUP BY t.id; - + UPDATE tmp.ticketProblems - SET totalProblems = isFreezed + hasHighRisk + hasTicketRequest + - isTaxDataChecked + hasComponentLack + hasItemDelay + + SET totalProblems = isFreezed + hasHighRisk + hasTicketRequest + + isTaxDataChecked + hasComponentLack + hasItemDelay + isTooLittle + hasItemLost + hasRounding + hasItemShortage + isVip; - + DROP TEMPORARY TABLE tmp.sale; END$$ DELIMITER ; From 638a8e344dbd8843be3db6ea842b2b70d552c506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 9 Jan 2025 10:34:49 +0100 Subject: [PATCH 083/217] fix: refs #7965 UnifyProblems --- db/routines/vn/procedures/sale_getProblems.sql | 10 ++++++++++ db/routines/vn/procedures/ticket_getProblems.sql | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql index 483cacb1ff..7f7050897e 100644 --- a/db/routines/vn/procedures/sale_getProblems.sql +++ b/db/routines/vn/procedures/sale_getProblems.sql @@ -30,6 +30,7 @@ BEGIN saleFk INT(11), hasItemShortage BOOL DEFAULT FALSE, hasItemLost BOOL DEFAULT FALSE, + hasComponentLack BOOL DEFAULT FALSE, hasItemDelay BOOL DEFAULT FALSE, hasRounding BOOL DEFAULT FALSE, PRIMARY KEY (saleFk) @@ -115,6 +116,15 @@ BEGIN GROUP BY s.id ON DUPLICATE KEY UPDATE hasItemLost = TRUE; + -- Componentes: Algún componente obligatorio no se ha calcualdo + INSERT INTO tmp.saleProblems(saleFk, hasComponentLack) + SELECT s.id, TRUE + FROM tmp.sale ts + JOIN sale s ON s.id = ts.saleFk + WHERE FIND_IN_SET('hasComponentLack', s.problem) + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasComponentLack = TRUE; + -- Retraso: Disponible suficiente, pero no visible ni ubicado INSERT INTO tmp.saleProblems(saleFk, hasItemDelay) SELECT s.id, TRUE diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index 1094a9d491..744db46410 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -69,7 +69,7 @@ BEGIN SELECT s.ticketFk FROM tmp.saleProblems sp JOIN vn.sale s ON s.id = sp.saleFk - WHERE FIND_IN_SET('hasComponentLack', s.problem) + WHERE sp.hasComponentLack GROUP BY s.ticketFk )SELECT tt.ticketFk, FIND_IN_SET('isFreezed', t.problem) isFreezed, From 09b4b2cf1b29d3b31390608cba4aea7ccabe1fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 9 Jan 2025 11:52:30 +0100 Subject: [PATCH 084/217] fix: refs #7965 UnifyProblems --- db/routines/vn/procedures/ticket_getProblems.sql | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index 744db46410..4144570f74 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -72,13 +72,13 @@ BEGIN WHERE sp.hasComponentLack GROUP BY s.ticketFk )SELECT tt.ticketFk, - FIND_IN_SET('isFreezed', t.problem) isFreezed, + FIND_IN_SET('isFreezed', t.problem) > 0 isFreezed, t.risk, - FIND_IN_SET('hasRisk', t.problem) hasRisk, - FIND_IN_SET('hasHighRisk', t.problem) hasHighRisk, - FIND_IN_SET('hasTicketRequest', t.problem) hasTicketRequest, - FIND_IN_SET('isTaxDataChecked', t.problem) isTaxDataChecked, - FIND_IN_SET('isTooLittle', t.problem) + FIND_IN_SET('hasRisk', t.problem) > 0 hasRisk, + FIND_IN_SET('hasHighRisk', t.problem) > 0 hasHighRisk, + FIND_IN_SET('hasTicketRequest', t.problem) > 0 hasTicketRequest, + FIND_IN_SET('isTaxDataChecked', t.problem) > 0 isTaxDataChecked, + FIND_IN_SET('isTooLittle', t.problem) > 0 AND util.VN_NOW() < (util.VN_CURDATE() + INTERVAL HOUR(zc.`hour`) HOUR) + INTERVAL MINUTE(zc.`hour`) MINUTE isTooLittle, From 2d8bda2b56af541102a30453eed9ead691b4af12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 9 Jan 2025 15:46:04 +0100 Subject: [PATCH 085/217] fix: refs #7965 UnifyProblems --- .../vn/procedures/sale_getProblems.sql | 36 +++++++++---------- .../vn/procedures/ticket_getProblems.sql | 2 -- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql index 7f7050897e..ca81660b8d 100644 --- a/db/routines/vn/procedures/sale_getProblems.sql +++ b/db/routines/vn/procedures/sale_getProblems.sql @@ -48,6 +48,14 @@ BEGIN JOIN sector s ON s.id = p.sectorFk GROUP BY ish.itemFk, s.warehouseFk; + -- Componentes: Algún componente obligatorio no se ha calcualdo + INSERT INTO tmp.saleProblems(saleFk, hasComponentLack) + SELECT s.id, TRUE + FROM tmp.sale ts + JOIN sale s ON s.id = ts.saleFk + WHERE FIND_IN_SET('hasComponentLack', s.problem) + GROUP BY s.id; + -- Disponible, faltas, inventario y retrasos OPEN vCursor; l: LOOP @@ -78,9 +86,9 @@ BEGIN AND av.calc_id = vAvailableCache LEFT JOIN tItemShelving tis ON tis.itemFk = i.id AND tis.warehouseFk = t.warehouseFk - WHERE (v.visible < s.quantity AND v.visible IS NOT NULL) - AND (av.available < s.quantity AND av.available IS NOT NULL) - AND (tis.visible < s.quantity AND tis.visible IS NOT NULL) + WHERE (s.quantity > v.visible OR (s.quantity > 0 AND v.visible IS NULL)) + AND (av.available < 0 OR av.available IS NULL) + AND (s.quantity > tis.visible OR tis.visible IS NULL) AND NOT s.isPicked AND NOT s.reserved AND ic.merchandise @@ -88,7 +96,8 @@ BEGIN AND NOT i.generic AND util.VN_CURDATE() = vDate AND t.warehouseFk = vWarehouseFk - GROUP BY s.id; + GROUP BY s.id + ON DUPLICATE KEY UPDATE hasItemShortage = TRUE; -- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida INSERT INTO tmp.saleProblems(saleFk, hasItemLost) @@ -103,8 +112,8 @@ BEGIN AND v.calc_id = vVisibleCache LEFT JOIN tItemShelving tis ON tis.itemFk = i.id AND tis.warehouseFk = t.warehouseFk - WHERE (v.visible >= s.quantity AND v.visible IS NOT NULL) - AND (tis.visible < s.quantity AND tis.visible IS NOT NULL) + WHERE (v.visible >= s.quantity OR v.visible IS NULL) + AND (s.quantity > tis.visible AND tis.visible IS NOT NULL) AND s.quantity > 0 AND NOT s.isPicked AND NOT s.reserved @@ -116,15 +125,6 @@ BEGIN GROUP BY s.id ON DUPLICATE KEY UPDATE hasItemLost = TRUE; - -- Componentes: Algún componente obligatorio no se ha calcualdo - INSERT INTO tmp.saleProblems(saleFk, hasComponentLack) - SELECT s.id, TRUE - FROM tmp.sale ts - JOIN sale s ON s.id = ts.saleFk - WHERE FIND_IN_SET('hasComponentLack', s.problem) - GROUP BY s.id - ON DUPLICATE KEY UPDATE hasComponentLack = TRUE; - -- Retraso: Disponible suficiente, pero no visible ni ubicado INSERT INTO tmp.saleProblems(saleFk, hasItemDelay) SELECT s.id, TRUE @@ -140,9 +140,9 @@ BEGIN AND av.calc_id = vAvailableCache LEFT JOIN tItemShelving tis ON tis.itemFk = i.id AND tis.warehouseFk = t.warehouseFk - WHERE (v.visible < s.quantity AND v.visible IS NOT NULL) - AND (av.available < s.quantity AND av.available IS NOT NULL) - AND (tis.visible < s.quantity AND tis.visible IS NOT NULL) + WHERE (s.quantity > v.visible AND v.visible IS NULL) + AND (av.available >= 0 OR av.available IS NULL) + AND (s.quantity > tis.visible AND tis.visible IS NOT NULL) AND s.quantity > 0 AND NOT s.isPicked AND NOT s.reserved diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql index 4144570f74..a65413f5f8 100644 --- a/db/routines/vn/procedures/ticket_getProblems.sql +++ b/db/routines/vn/procedures/ticket_getProblems.sql @@ -18,8 +18,6 @@ BEGIN FROM tmp.ticket tt JOIN ticket t ON t.id = tt.ticketFk JOIN sale s ON s.ticketFk = t.id - WHERE t.shipped BETWEEN util.VN_CURDATE() - AND util.dayEnd(util.VN_CURDATE() + INTERVAL IF(vIsTodayRelative, 9.9, 1.9) DAY) GROUP BY s.id; CALL sale_getProblems(vIsTodayRelative); From a167e7fada35749dbdf28bcd2b6f7076b9c9e079 Mon Sep 17 00:00:00 2001 From: jtubau Date: Fri, 10 Jan 2025 13:42:29 +0100 Subject: [PATCH 086/217] feat: refs #8304 add ACL entry for WorkerDms with high privileges --- db/versions/11404-azureAnthurium/00-firstScript.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 db/versions/11404-azureAnthurium/00-firstScript.sql diff --git a/db/versions/11404-azureAnthurium/00-firstScript.sql b/db/versions/11404-azureAnthurium/00-firstScript.sql new file mode 100644 index 0000000000..7a4dfe9bcb --- /dev/null +++ b/db/versions/11404-azureAnthurium/00-firstScript.sql @@ -0,0 +1,2 @@ +INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) +VALUES('WorkerDms', 'hasHighPrivs', 'READ', 'ALLOW', 'ROLE', 'hr'); \ No newline at end of file From 0e8d9137edfdcffebf73f84672c1d58ccd3a10a5 Mon Sep 17 00:00:00 2001 From: jtubau Date: Fri, 10 Jan 2025 13:48:03 +0100 Subject: [PATCH 087/217] feat: refs #8304 add privilege check for WorkerDms filter method --- modules/worker/back/methods/worker-dms/filter.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/worker/back/methods/worker-dms/filter.js b/modules/worker/back/methods/worker-dms/filter.js index 240a905d28..a6e5d67e76 100644 --- a/modules/worker/back/methods/worker-dms/filter.js +++ b/modules/worker/back/methods/worker-dms/filter.js @@ -1,5 +1,6 @@ const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; const {mergeFilters, mergeWhere} = require('vn-loopback/util/filter'); +const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('filter', { @@ -33,7 +34,10 @@ module.exports = Self => { const conn = Self.dataSource.connector; const userId = ctx.req.accessToken.userId; const models = Self.app.models; + const hasPrivs = await models.ACL.checkAccessAcl(ctx, 'WorkerDms', 'hasHighPrivs', '*'); + if (!hasPrivs && userId !== id) + throw new UserError('You don\'t have enough privileges'); // Get ids alloweds const account = await models.VnUser.findById(userId); From f8a156b7ab501d7ffa90035995f7d082a6f249ee Mon Sep 17 00:00:00 2001 From: pablone Date: Fri, 17 Jan 2025 08:11:18 +0100 Subject: [PATCH 088/217] feat: refs #6897 add EntryConfig model and enhance entry filtering with new parameters --- db/dump/fixtures.before.sql | 129 +++++---- .../11399-bronzeOak/00-firstScript.sql | 10 + .../back/methods/entry-buys/getBuyList.js | 271 ++++++++++++++++++ .../back/methods/entry-buys/getBuyUltimate.js | 37 +++ modules/entry/back/methods/entry/filter.js | 116 ++++++-- modules/entry/back/model-config.json | 3 + modules/entry/back/models/entry-config.json | 30 ++ modules/entry/back/models/entry.js | 4 +- modules/item/back/models/ink.json | 3 + 9 files changed, 531 insertions(+), 72 deletions(-) create mode 100644 db/versions/11399-bronzeOak/00-firstScript.sql create mode 100644 modules/entry/back/methods/entry-buys/getBuyList.js create mode 100644 modules/entry/back/methods/entry-buys/getBuyUltimate.js create mode 100644 modules/entry/back/models/entry-config.json diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index ff896b84d2..37afbf8cdc 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -917,17 +917,18 @@ INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `life`, `workerF (5, 'CON', 'Container', 3, NULL, 35, 1, 'warm', 0), (6, 'ALS', 'Alstroemeria', 1, 31, 16, 0, 'warm', 1); -INSERT INTO `vn`.`ink`(`id`, `name`, `picture`, `showOrder`, `hex`) +INSERT INTO `vn`.`ink`(`id`, `name`, `picture`, `showOrder`, `hex`, `hexJson`) VALUES - ('YEL', 'Yellow', 1, 1, 'F4D03F'), - ('BLU', 'Blue', 1, 2, '5DADE2'), - ('RED', 'Red', 1, 3, 'EC7063'), - ('SLV', 'Silver', 1, 4, 'CACFD2'), - ('BRW', 'Brown', 1, 5, 'DC7633'), - ('BLK', 'Black', 1, 6, '000000'), - ('BAS', 'Blue/Silver', 1, 7, '5DADE2'), - ('GRN', 'Green', 1, 8, '28A745'), - ('WHT', 'White', 1, 9, 'FFFFFF'); + ('YEL', 'Yellow', 1, 1, 'F4D03F', '{"value": ["F4D03F"]}'), + ('BLU', 'Blue', 1, 2, '5DADE2', '{"value": ["5DADE2"]}'), + ('RED', 'Red', 1, 3, 'EC7063', '{"value": ["EC7063"]}'), + ('SLV', 'Silver', 1, 4, 'CACFD2', '{"value": ["CACFD2"]}'), + ('BRW', 'Brown', 1, 5, 'DC7633', '{"value": ["DC7633"]}'), + ('BLK', 'Black', 1, 6, '000000', '{"value": ["000000"]}'), + ('BAS', 'Blue/Silver', 1, 7, '5DADE2', '{"value": ["5DADE2"]}'), + ('GRN', 'Green', 1, 8, '28A745', '{"value": ["28A745"]}'), + ('WHT', 'White', 1, 9, 'FFFFFF', '{"value": ["FFFFFF"]}'), + ('RGB', 'Red/Green/Blue', 1, 9, 'FFFFFF', '{"value": ["EC7063","5DADE2","28A745"]}'); INSERT INTO `vn`.`origin`(`id`,`code`, `name`) VALUES @@ -977,27 +978,30 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`) INSERT INTO `vn`.`item`( `id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, - `itemPackingTypeFk`, `hasMinPrice`, `weightByPiece`, `isCustomInspectionRequired` + `itemPackingTypeFk`, `hasMinPrice`, `packingOut`, `weightByPiece`, `isCustomInspectionRequired` ) -VALUES - (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3, 1), - (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2, 1), - (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5, 0), - (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 0), - (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL, 0), - (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 0), - (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), - (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), - (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0); +VALUES + (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, NULL, 3, 1), + (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, NULL, 2, 1), + (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 5, 0), + (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, NULL, 0), + (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL, NULL, 0), + (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, NULL, 0), + (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, NULL, 0), + (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, NULL, 0), + (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (72, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', 'marvel', 1, 'VT', 0, NULL, NULL, 1, 1, NULL, 0); + +-- -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 @@ -1451,7 +1455,14 @@ INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`) (98, 14, 23, '1', 7), (99, 15, 92, 'Trolley', 2), (100, 16, 92, 'Pallet', 2), - (101, 71, 92, 'Shipping cost', 2); + (101, 71, 92, 'Shipping cost', 2), + (102, 72, 56, 'Mistic weapon', 1), + (103, 72, 58, 'Stormbreaker', 2), + (104, 72, 27, '200cm', 3), + (105, 72, 36, 'Stark Industries', 4), + (106, 72, 1, 'Red/Green/Blue', 5), + (107, 72, 67, '-1 precission', 6), + (108, 72, 23, '1', 7); INSERT INTO `vn`.`itemTypeTag`(`id`, `itemTypeFk`, `tagFk`, `priority`) VALUES @@ -1521,7 +1532,8 @@ INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseO (10, DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY), 5, 1, 1, 50.00, 500, 'nineth travel', 1, 2, 10, TRUE, 2), (11, util.VN_CURDATE() - INTERVAL 1 DAY , util.VN_CURDATE(), 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL), (12, util.VN_CURDATE() , util.VN_CURDATE() + INTERVAL 1 DAY, 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL), - (13, util.VN_CURDATE() - INTERVAL 1 MONTH - INTERVAL 1 DAY, util.VN_CURDATE() - INTERVAL 1 MONTH, 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL); + (13, util.VN_CURDATE() - INTERVAL 1 MONTH - INTERVAL 1 DAY, util.VN_CURDATE() - INTERVAL 1 MONTH, 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL), + (14, util.VN_CURDATE() - INTERVAL 1 DAY , util.VN_CURDATE() + INTERVAL 1 DAY, 6, 3, 0, 50.00, 500, 'eleventh travel', 1, 2, 4, FALSE, NULL); INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed`, `companyFk`, `invoiceNumber`, `reference`, `isExcludedFromAvailable`, `evaNotes`, `typeFk`) VALUES @@ -1537,7 +1549,8 @@ INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed (10, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2010', 'Movement 10',1, '', 'product'), (11, 4, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 1, 1, 442, 'IN2011', 'Movement 11',0, '', 'product'), (12, 4, util.VN_CURDATE() - INTERVAL 1 MONTH, 13, 1, 442, 'IN2012', 'Movement 12',0, '', 'product'), - (99, 69, util.VN_CURDATE() - INTERVAL 1 MONTH, 11, 0, 442, 'IN2009', 'Movement 99',0, '', 'product'); + (99, 69, util.VN_CURDATE() - INTERVAL 1 MONTH, 11, 0, 442, 'IN2009', 'Movement 99',0, '', 'product'), + (100, 1, util.VN_CURDATE() , 14, 0, 442, 'IN2009','Movement 100',0, '', 'product'); INSERT INTO `vn`.`entryConfig` (`defaultEntry`, `inventorySupplierFk`, `defaultSupplierFk`) VALUES (2, 4, 1); @@ -1560,26 +1573,34 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 6, 1, '186', '0', '51', '53.12', '56.20', '56.20', '56.20'), ('103', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 7, 1, '277', '0', '53.12', '56.20', '56.20', '56.20', '56.20'); - INSERT INTO vn.buy(id,entryFk,itemFk,buyingValue,quantity,packagingFk,stickers,freightValue,packageValue,comissionValue,packing,grouping,groupingMode,location,price1,price2,price3,printedStickers,isChecked,isIgnored,weight,created) - VALUES - (1, 1, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), - (2, 2, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 1 MONTH), - (3, 3, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, NULL, NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE()), - (4, 2, 2, 5, 450, 3, 1, 1.000, 1.000, 0.000, 10, 10, NULL, NULL, 0.00, 7.30, 7.00, 0, 1, 0, 2.5, util.VN_CURDATE()), - (5, 3, 3, 55, 500, 5, 1, 1.000, 1.000, 0.000, 1, 1, NULL, NULL, 0.00, 78.3, 75.6, 0, 1, 0, 2.5, util.VN_CURDATE()), - (6, 4, 8, 50, 1000, 4, 1, 1.000, 1.000, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 2.5, util.VN_CURDATE()), - (7, 4, 9, 20, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'packing', NULL, 0.00, 30.50, 29.00, 0, 1, 0, 2.5, util.VN_CURDATE()), - (8, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 2.5, util.VN_CURDATE()), - (9, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (10, 5, 1, 50, 10, 4, 1, 2.500, 2.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 4, util.VN_CURDATE()), - (11, 5, 4, 1.25, 10, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (12, 6, 4, 1.25, 0, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 4, util.VN_CURDATE()), - (14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 7.30, 7.00, 0, 1, 0, 4, util.VN_CURDATE()), - (15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), - (16, 99,1,50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, '2024-07-30 08:13:51.000'), - (17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), - (18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH); + INSERT INTO edi.supplier (supplier_id,company_name,entry_date,expiry_date,change_date_time,isAllowedDirectSales,isBanned) + VALUES (1,'MV', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 0); + INSERT INTO edi.ekt (id,`ref`,qty,pro,pri,ok,scanned) + VALUES (1, 1234, 1, 1, 1.1, 1, 1); + + INSERT INTO vn.buy(id,entryFk,itemFk,buyingValue,quantity,packagingFk,stickers,freightValue,packageValue,comissionValue,packing,grouping,groupingMode,location,price1,price2,price3,printedStickers,isChecked,isIgnored,ektFk,weight,created) + VALUES + ( 1, 1, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), + ( 2, 2, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 1 MONTH), + ( 3, 3, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, NULL, NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE()), + ( 4, 2, 2, 5, 450, 3, 1, 1.000, 1.000, 0.000, 10, 10, NULL, NULL, 0.00, 7.30, 7.00, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), + ( 5, 3, 3, 55, 500, 5, 1, 1.000, 1.000, 0.000, 1, 1, NULL, NULL, 0.00, 78.3, 75.6, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), + ( 6, 4, 8, 50, 1000, 4, 1, 1.000, 1.000, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), + ( 7, 4, 9, 20, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'packing', NULL, 0.00, 30.50, 29.00, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), + ( 8, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), + ( 9, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, NULL, 4, util.VN_CURDATE()), + (10, 5, 1, 50, 10, 4, 1, 2.500, 2.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 4, util.VN_CURDATE()), + (11, 5, 4, 1.25, 10, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, NULL, 4, util.VN_CURDATE()), + (12, 6, 4, 1.25, 0, 3, 1, 2.500, 2.500, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, NULL, 4, util.VN_CURDATE()), + (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 4, util.VN_CURDATE()), + (14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 7.30, 7.00, 0, 1, 0, NULL, 4, util.VN_CURDATE()), + (15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, NULL, 4, util.VN_CURDATE()), + (16, 99, 1, 50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, NULL, 1.00, '2024-07-30 08:13:51.000'), + (17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), + (18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), + (19, 100, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE()), + (20, 100, 2, 5, 450, 3, 2, 1.000, 1.000, 0.000, 10, 10, NULL, NULL, 0.00, 7.30, 7.00, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), + (21, 100,72, 55, 500, 5, 3, 1.000, 1.000, 0.000, 1, 1, 'packing', NULL, 0.00, 78.3, 75.6, 0, 1, 0, 1, 3, util.VN_CURDATE()); INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`,`total`, `date_make`, `first_row_stamp`, `confirm_date`) VALUES @@ -4056,3 +4077,7 @@ INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance) INSERT IGNORE INTO vn.inventoryConfig SET id = 1, supplierFk = 4; + + + + diff --git a/db/versions/11399-bronzeOak/00-firstScript.sql b/db/versions/11399-bronzeOak/00-firstScript.sql new file mode 100644 index 0000000000..786d131bf1 --- /dev/null +++ b/db/versions/11399-bronzeOak/00-firstScript.sql @@ -0,0 +1,10 @@ +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('Entry','getBuyList','READ','ALLOW','ROLE','buyer'), + ('Entry','create','WRITE','ALLOW','ROLE','buyer'), + ('EntryType','find','READ','ALLOW','ROLE','buyer'), + ('EntryConfig','findOne','READ','ALLOW','ROLE','buyer'); + +ALTER TABLE vn.ink ADD IF NOT EXISTS hexJson TEXT NOT NULL; + +UPDATE vn.ink + SET hexJson = CONCAT('{"value": ["',hex,'"]}') diff --git a/modules/entry/back/methods/entry-buys/getBuyList.js b/modules/entry/back/methods/entry-buys/getBuyList.js new file mode 100644 index 0000000000..41e4e793df --- /dev/null +++ b/modules/entry/back/methods/entry-buys/getBuyList.js @@ -0,0 +1,271 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const buildFilter = require('vn-loopback/util/filter').buildFilter; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethodCtx('getBuyList', { + description: 'Returns buys for editing of one entry', + accessType: 'READ', + accepts: [{ + arg: 'entryFk', + type: 'number', + required: true, + description: 'The entry id', + http: {source: 'path'} + }, + { + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string' + }, + { + arg: 'isIgnored', + type: 'boolean', + description: 'check if the buy is ignored', + http: {source: 'query'} + }, + { + arg: 'itemFk', + type: 'number', + description: 'item id', + http: {source: 'query'} + }, + { + arg: 'name', + type: 'string', + description: 'item name', + http: {source: 'query'} + }, + { + arg: 'size', + type: 'number', + description: 'item size', + http: {source: 'query'} + }, + { + arg: 'stickers', + type: 'number', + description: 'sticker quantity', + http: {source: 'query'} + }, + { + arg: 'packagingFk', + type: 'number', + description: 'packaging id', + http: {source: 'query'} + }, + { + arg: 'weight', + type: 'number', + description: 'weight', + http: {source: 'query'} + }, + { + arg: 'packing', + type: 'number', + description: 'packing quantity', + http: {source: 'query'} + }, + { + arg: 'grouping', + type: 'number', + description: 'grouping quantity', + http: {source: 'query'} + }, + { + arg: 'quantity', + type: 'number', + http: {source: 'query'} + }, + { + arg: 'buyingValue', + type: 'number', + http: {source: 'query'} + }, + { + arg: 'amount', + type: 'number', + description: 'buying value * quantity', + http: {source: 'query'} + }, + { + arg: 'price2', + type: 'number', + description: 'price for the package', + http: {source: 'query'} + }, + { + arg: 'price3', + type: 'number', + description: 'price for the box', + http: {source: 'query'} + }, + { + arg: 'minPrice', + type: 'number', + description: 'item minimum price', + http: {source: 'query'} + }, + { + arg: 'packingOut', + type: 'number', + description: 'quantity of package on a vn box', + http: {source: 'query'} + }, + { + arg: 'comment', + type: 'string', + description: 'item comment', + http: {source: 'query'} + }, + { + arg: 'subName', + type: 'string', + description: 'supplier name', + http: {source: 'query'} + }, + { + arg: 'subName', + type: 'string', + description: 'supplier name', + http: {source: 'query'} + }, + { + arg: 'company_name', + type: 'string', + description: 'company name', + http: {source: 'query'} + }, + { + arg: 'groupBy', + type: 'string', + description: 'group by', + http: {source: 'query'} + }, + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/:entryFk/getBuyList`, + verb: 'GET' + } + }); + + Self.getBuyList = async(ctx, entryFk, filter, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + let conn = Self.dataSource.connector; + let where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'name': + case 'subName': + case 'company_name': + case 'comment': + return {[param]: {like: `%${value}%`}}; + case 'size': + case 'isIgnored': + case 'itemFk': + case 'stickers': + case 'packagingFk': + case 'weight': + case 'packing': + case 'grouping': + case 'quantity': + case 'buyingValue': + case 'amount': + case 'price2': + case 'price3': + case 'packingOut': + case 'minPrice': + return {[param]: value}; + } + }); + + filter = mergeFilters(filter, {where}); + + let stmts = []; + let stmt; + + const selectFields = `b.id, + b.isIgnored, + b.itemFk, + b.printedStickers, + b.stickers, + b.packagingFk, + b.weight, + b.packing, + b.groupingMode, + b.grouping, + b.quantity, + b.buyingValue, + ROUND(b.buyingValue * b.quantity, 2) amount, + b.isChecked, + b.price2, + b.price3, + i.name, + i.size, + i.minPrice, + i.hasMinPrice, + i.packingOut, + i.comment, + i.subName, + i.tag5, + i.value5, + i.tag6, + i.value6, + i.tag7, + i.value7, + i.tag8, + i.value8, + i.tag9, + i.value9, + i.tag10, + i.value10, + s.company_name, + ik.hexJson`; + + const groupByFields = `SUM(b.printedStickers) printedStickers, + SUM(b.stickers) stickers, + SUM(b.weight) weight, + SUM(b.quantity) quantity, + SUM(ROUND(b.buyingValue * b.quantity, 2)) amount + `; + + const groupBy = ctx.args.groupBy; + + stmt = new ParameterizedSQL( + `SELECT * + FROM( + SELECT + ${ groupBy ? groupByFields : selectFields} + FROM item i + LEFT JOIN ink ik ON ik.id = i.inkFk + LEFT JOIN buy b ON b.itemFk = i.id + LEFT JOIN edi.ekt e ON e.id = b.ektFk + LEFT JOIN edi.supplier s ON e.pro = s.supplier_id + WHERE b.entryFk = ? + ${groupBy ?? ''} + ) sub`, + [entryFk] + ); + + stmt.merge(conn.makeSuffix(filter)); + let itemsIndex = stmts.push(stmt) - 1; + + let sql = ParameterizedSQL.join(stmts, ';'); + let result = await conn.executeStmt(sql, myOptions); + + if (groupBy) { + const buys = await Self.app.models.Buy.find({where: {entryFk}}, myOptions); + const buysChecked = buys.filter(buy => buy?.isChecked); + result[0].isAllChecked = buysChecked.length === buys.length; + } + + return itemsIndex === 0 ? result : result[itemsIndex]; + }; +}; diff --git a/modules/entry/back/methods/entry-buys/getBuyUltimate.js b/modules/entry/back/methods/entry-buys/getBuyUltimate.js new file mode 100644 index 0000000000..bddefac3f5 --- /dev/null +++ b/modules/entry/back/methods/entry-buys/getBuyUltimate.js @@ -0,0 +1,37 @@ +module.exports = Self => { + Self.remoteMethodCtx('getBuyUltimate', { + description: 'Returns the last buy of the item', + accessType: 'READ', + accepts: [ + { + arg: 'itemFk', + type: 'number', + required: true + }, { + arg: 'warehouseFk', + type: 'number', + required: true + }, { + arg: 'date', + type: 'date', + required: true + } + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/getBuyUltimate`, + verb: 'GET' + } + }); + Self.getBuyUltimate = async(ctx, itemFk, warehouseFk, date, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + return Self.rawSql('CALL vn.buy_getUltimate(?, ?, ?)', [itemFk, warehouseFk, date], myOptions); + }; +}; diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index d7740dd4ee..4104eb6b34 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -119,7 +119,68 @@ module.exports = Self => { arg: 'invoiceAmount', type: 'number', description: `The invoice amount` - } + }, + { + arg: 'isExcludedFromAvailable', + type: 'boolean', + description: `landing date` + }, + { + arg: 'isReceived', + type: 'boolean', + description: `travel received` + }, + { + arg: 'isRaid', + type: 'boolean', + description: `travel isRaid` + }, + { + arg: 'landed', + type: 'date', + description: `landing date` + }, + { + arg: 'invoiceNumber', + type: 'string', + description: `entry invoice` + }, + { + arg: 'reference', + type: 'string', + description: `entry reference` + }, + { + arg: 'awbCode', + type: 'string', + description: `awb code` + }, + { + arg: 'agencyModeId', + type: 'number', + description: `agency mode id` + }, + { + arg: 'evaNotes', + type: 'string', + description: `observation` + }, + { + arg: 'warehouseInFk', + type: 'number', + description: `warehouse in id` + }, + { + arg: 'warehouseOutFk', + type: 'number', + description: `warehouse out id` + }, + { + arg: 'entryTypeCode', + type: 'string', + description: 'entry type code' + }, + ], returns: { type: ['object'], @@ -146,19 +207,12 @@ module.exports = Self => { {'s.name': {like: `%${value}%`}}, {'s.nickname': {like: `%${value}%`}} ]}; + case 'invoiceNumber': + case 'reference': case 'ref': + case 'evaNotes': param = `e.${param}`; return {[param]: {like: `%${value}%`}}; - case 'created': - return {'e.created': {gte: value}}; - case 'from': - return {'t.landed': {gte: value}}; - case 'fromShipped': - return {'t.shipped': {gte: value}}; - case 'to': - return {'t.landed': {lte: value}}; - case 'toShipped': - return {'t.shipped': {lte: value}}; case 'id': case 'isBooked': case 'isConfirmed': @@ -168,10 +222,23 @@ module.exports = Self => { case 'currencyFk': case 'supplierFk': case 'invoiceInFk': - param = `e.${param}`; - return {[param]: value}; + case 'isExcludedFromAvailable': + return {[`e.${param}`]: value}; + case 'isReceived': + case 'landed': + case 'isRaid': + case 'warehouseInFk': + case 'warehouseOutFk': + return {[`t.${param}`]: value}; + case 'awbCode': + return {'a.code': {like: `%${value}%`}}; + case 'agencyModeId': + return {[`am.id`]: value}; + case 'entryTypeCode': + return {[`et.code`]: value}; } }); + console.log('where: ', where); filter = mergeFilters(ctx.args.filter, {where}); const userId = ctx.req.accessToken.userId; const client = await Self.app.models.Client.findById(userId, myOptions); @@ -183,15 +250,14 @@ module.exports = Self => { const stmts = []; let stmt; stmt = new ParameterizedSQL( - `SELECT - e.id, + `SELECT e.id, e.supplierFk, e.dated, e.reference, e.invoiceNumber, e.isBooked, e.isExcludedFromAvailable, - e.evaNotes observation, + e.evaNotes, e.isConfirmed, e.isOrdered, t.isRaid, @@ -211,15 +277,27 @@ module.exports = Self => { cu.code currencyCode, t.shipped, t.landed, - t.ref AS travelRef, + t.ref travelRef, t.warehouseInFk, - w.name warehouseInName + w.name warehouseInName, + t.warehouseOutFk, + w2.name warehouseOutName, + a.code awbCode, + am.id agencyModeId, + am.name agencyModeName, + et.code entryTypeCode, + et.description entryTypeDescription, + t.isReceived FROM vn.entry e JOIN vn.supplier s ON s.id = e.supplierFk JOIN vn.travel t ON t.id = e.travelFk JOIN vn.warehouse w ON w.id = t.warehouseInFk + JOIN vn.warehouse w2 ON w2.id = t.warehouseOutFk JOIN vn.company co ON co.id = e.companyFk - JOIN vn.currency cu ON cu.id = e.currencyFk` + JOIN vn.currency cu ON cu.id = e.currencyFk + LEFT JOIN vn.awb a ON a.id = t.awbFk + LEFT JOIN vn.agencyMode am ON am.id = t.agencyModeFk + LEFT JOIN vn.entryType et ON et.code = e.typeFk` ); stmt.merge(conn.makeWhere(filter.where)); diff --git a/modules/entry/back/model-config.json b/modules/entry/back/model-config.json index 49c2df2db8..fed2999124 100644 --- a/modules/entry/back/model-config.json +++ b/modules/entry/back/model-config.json @@ -31,5 +31,8 @@ }, "InventoryConfig": { "dataSource": "vn" + }, + "EntryConfig": { + "dataSource": "vn" } } diff --git a/modules/entry/back/models/entry-config.json b/modules/entry/back/models/entry-config.json new file mode 100644 index 0000000000..39d651ab6b --- /dev/null +++ b/modules/entry/back/models/entry-config.json @@ -0,0 +1,30 @@ +{ + "name": "EntryConfig", + "base": "VnModel", + "mixins": { + "Loggable": true + }, + "options": { + "mysql": { + "table": "entryConfig" + } + }, + "properties": { + "defaultEntry": { + "type": "number", + "id": true + }, + "mailToNotify": { + "type": "string" + }, + "inventorySupplierFk": { + "type": "number" + }, + "maxLockTime": { + "type": "number" + }, + "defaultSupplierFk": { + "type": "number" + } + } +} \ No newline at end of file diff --git a/modules/entry/back/models/entry.js b/modules/entry/back/models/entry.js index 55a23bb0a2..5189749864 100644 --- a/modules/entry/back/models/entry.js +++ b/modules/entry/back/models/entry.js @@ -14,8 +14,10 @@ module.exports = Self => { require('../methods/entry/buyLabel')(Self); require('../methods/entry/labelSupplier')(Self); require('../methods/entry/buyLabelSupplier')(Self); + require('../methods/entry-buys/getBuyList')(Self); + require('../methods/entry-buys/getBuyUltimate')(Self); - Self.observe('before save', async function(ctx, options) { + Self.observe('before save', async(ctx, options) => { if (ctx.isNewInstance) return; const changes = ctx.data || ctx.instance; diff --git a/modules/item/back/models/ink.json b/modules/item/back/models/ink.json index 6a39daafe3..4bed79e76c 100644 --- a/modules/item/back/models/ink.json +++ b/modules/item/back/models/ink.json @@ -17,6 +17,9 @@ }, "showOrder": { "type": "number" + }, + "hexJson": { + "type": "string" } }, "acls": [ From 1560c48af239100204c96601c1ffb574cf0ad307 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 20 Jan 2025 14:32:26 +0100 Subject: [PATCH 089/217] feat: refs #6321 improve query --- db/dump/fixtures.before.sql | 9 +- .../ticket/back/methods/sale/replaceItem.js | 21 ++- .../back/methods/ticket/itemLackDetail.js | 141 ++++++++++++------ 3 files changed, 122 insertions(+), 49 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 87c3bd3e54..d74d85d7cd 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -996,7 +996,8 @@ VALUES (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 0), (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), - (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0); + (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), + (88, 1, NULL, 1, 'Lack negative origin', 1, 06021010, 4751000000, NULL, 0, '1', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0); -- Update the taxClass after insert of the items @@ -4056,9 +4057,9 @@ INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance) INSERT IGNORE INTO vn.inventoryConfig SET id = 1, supplierFk = 4; -INSERT INTO `vn`.`item` (id,name,`size`,stems,minPrice,isToPrint,family,box,originFk,doPhoto,image,inkFk,intrastatFk,hasMinPrice,created,typeFk,generic,density,relevancy,expenseFk,isActive,longName,subName,tag5,value5,tag6,value6,tag7,value7,minimum,upToDown,hasKgPrice,isFloramondo,isFragile,stemMultiplier,isLaid,lastUsed,editorFk,isBoxPickingMode) - VALUES - (88,'Lack negative',200,1,10.0,0,'VT',0,2,0,'','WHT',6021010,1,'2024-07-19 11:27:32.000',1,0,167,0,'4751000000',1,'Lack negative origin','Stark Industries','Color','White','Categoria','supply','Tallos','1',3,0,0,0,0,1.0,0,'2024-07-19 11:27:32.000',100,0); +-- INSERT INTO `vn`.`item` (id,name,`size`,stems,minPrice,isToPrint,family,box,originFk,doPhoto,image,inkFk,intrastatFk,hasMinPrice,created,typeFk,generic,density,relevancy,expenseFk,isActive,longName,subName,tag5,value5,tag6,value6,tag7,value7,minimum,upToDown,hasKgPrice,isFloramondo,isFragile,stemMultiplier,isLaid,lastUsed,editorFk,isBoxPickingMode) +-- VALUES +-- (88,'Lack negative',200,1,10.0,0,'VT',0,2,0,'','WHT',6021010,1,'2024-07-19 11:27:32.000',1,0,167,0,'4751000000',1,'Lack negative origin','Stark Industries','Color','White','Categoria','supply','Tallos','1',3,0,0,0,0,1.0,0,'2024-07-19 11:27:32.000',100,0); INSERT INTO `vn`.`ticket` (id, clientFk,warehouseFk,shipped,nickname,refFk,addressFk,workerFk,observations,isSigned,isLabeled,isPrinted,packages,location,`hour`,created,isBlocked,solution,routeFk,priority,hasPriority,companyFk,agencyModeFk,landed,isBoxed,isDeleted,zoneFk,zonePrice,zoneBonus,totalWithVat,totalWithoutVat,weight,clonedFrom,cmrFk,editorFk,problem,risk) VALUES (1000000, 1,1,'2001-01-01 00:00:00.000','employee',NULL,131,NULL,NULL,0,0,0,0,NULL,0,'2024-07-19 23:32:48.000',1,NULL,NULL,NULL,1,442,1,'2001-01-01',0,0,1,1.00,0.00,0.00,NULL,NULL,NULL,NULL,9,'',NULL); diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index 83f97f326e..5096d42952 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -32,7 +32,11 @@ module.exports = Self => { Self.replaceItem = async(ctx, saleFk, substitutionFk, quantity, options) => { const myOptions = {userId: ctx.req.accessToken.userId}; let tx; - const {_saleFk, _substitutionFk, _quantity} = ctx.args; + const $t = ctx.req.__; + + const models = Self.app.models; + + // const {_saleFk, _substitutionFk, _quantity} = ctx.args; if (typeof options == 'object') Object.assign(myOptions, options); @@ -43,7 +47,20 @@ module.exports = Self => { } try { - const result = await Self.rawSql('CALL sale_replaceItem(?,?,?)', [saleFk, substitutionFk, quantity], myOptions); + const _replaceItem = {sql: 'CALL sale_replaceItem(?,?,?)', query: [saleFk, substitutionFk, quantity]}; + const result = await Self.rawSql(_replaceItem.sql, _replaceItem.query, myOptions); + const _salesPerson = {sql: 'SELECT vn.client_getSalesPersonByTicket(?)', query: [saleFk.ticket.id]}; + const salesPerson = await Self.rawSql(_salesPerson.query, _salesPerson.sql, myOptions); + const message = $t('negativeReplaced', { + old: itemFk, + oldUrl: `${url}item/${itemFk}/summary`, + new: itemFk, + newUrl: `${url}item/${itemFk}/summary`, + ticket: ticketFk, + ticketUrl: `${url}ticket/${ticketFk}/sale`, + }); + await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message); + return result; } catch (e) { if (tx) await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 55ea167fc0..d3faad8221 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -10,6 +10,11 @@ module.exports = Self => { type: 'number', description: 'The item id', }, + { + arg: 'warehouseFk', + type: 'number', + description: 'The warehouse id', + }, { arg: 'filter', type: 'object', @@ -30,7 +35,7 @@ module.exports = Self => { }, }); - Self.itemLackDetail = async(itemFk, filter, options) => { + Self.itemLackDetail = async(itemFk, warehouseFk, filter, options) => { const conn = Self.dataSource.connector; const myOptions = {}; @@ -39,56 +44,106 @@ module.exports = Self => { const stmt = new ParameterizedSQL( ` SELECT - s.id saleFk, + s.id, st.code, - t.id ticketFk, + t.id, 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, + ag.name, + IF(ISNULL(tls.alertLevel),0,tls.alertLevel) alertLevel, + IF(ISNULL(st.name),'Libre',st.name) stateName, + s.id stateId, + s.itemFk, + al.code AS alertLevelCode, + z.name, + Format(z.hour, "hh:mm") 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 + IF(ISNULL(sc.saleClonedFk),0,1) turno, + IF(ISNULL(tr.saleFk),0,1) peticionCompra, + DATE_FORMAT(IF(HOUR(t.shipped), t.shipped, IF(zc.hour, zc.hour, z.hour)),'%H:%i') minTimed, + FALSE AS isBasket, + substitution.hasSubstitution, + IF(d.code = 'spainTeamVip', 1, 0) hasToIgnore + FROM sale s + LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = s.id + INNER JOIN ticket t ON t.id =s.ticketFk + LEFT JOIN zone z ON z.id = t.zoneFk + LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk + AND zc.dated = DATE(t.shipped) + INNER JOIN 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]); + INNER JOIN agencyMode ag ON ag.id=t.agencyModeFk + INNER JOIN ticketState tls ON tls.ticketFk=t.id + LEFT JOIN state st ON st.id=tls.state + LEFT JOIN alertLevel al ON al.id = st.alertLevel + LEFT JOIN saleCloned sc ON sc.saleClonedFk = s.id + LEFT JOIN ticketRequest tr ON tr.saleFk = s.id + LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk + LEFT JOIN department d ON d.id = wd.departmentFk + LEFT JOIN ( + SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) AS hasSubstitution + FROM clientObservation co + INNER JOIN observationType ot ON ot.id = co.observationTypeFk + WHERE ot.code = 'substitution' + GROUP BY co.clientFk + ) AS substitution ON substitution.clientFk = c.id + WHERE warehouseFk = ? + AND s.itemFk = ? + AND s.quantity <> 0 + AND t.shipped >= CURDATE() + AND t.shipped < DATE_ADD(CURDATE(), INTERVAL ? DAY) + AND sgd.saleFk IS NULL + AND (al.code IN ('FREE', 'ON_PREVIOUS') OR al.code IS NULL) + UNION ALL + SELECT r.id, + NULL, + r.orderFk, + c.name, + r.shipment, + r.amount, + ag.name, + NULL, + NULL, + NULL, + r.itemFk, + NULL, + NULL, + NULL, + cn.isRookie, + NULL, + NULL, + NULL, + TRUE, + substitution.hasSubstitution, + IF(d.code = 'spainTeamVip', 1, 0) + FROM hedera.orderRow r + INNER JOIN hedera.order o ON o.id = r.orderFk + INNER JOIN client c ON c.id = o.customer_id + INNER JOIN agencyMode ag ON ag.id=o.agency_id + LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id + LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk + LEFT JOIN department d ON d.id = wd.departmentFk + LEFT JOIN ( + SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasSubstitution + FROM clientObservation co + INNER JOIN observationType ot ON ot.id = co.observationTypeFk + WHERE ot.code = 'substitution' + GROUP BY co.clientFk + ) AS substitution ON substitution.clientFk = c.id + WHERE r.shipment >= CURDATE() + AND r.shipment < DATE_ADD(CURDATE(), INTERVAL ? DAY) + AND r.warehouseFk = ? + AND r.created >= STR_TO_DATE(CURDATE(), '%Y-%m-%d %H:%i:%s') + AND NOT o.confirmed + AND r.itemFk = ? + AND r.amount <> 0 + ORDER BY hasToIgnore, isBasket;`, + [itemFk, warehouseFk, 2, 2, warehouseFk, itemFk]); // if (filter.where.alertLevel) { - stmt.merge({ - sql: `AND ${filter.where.alertLevel ? '' : 'NOT'} ts.alertLevel=?`, params: [0]}); + // stmt.merge({ + // sql: `AND ${filter.where.alertLevel ? '' : 'NOT'} ts.alertLevel=?`, params: [0]}); // } // stmt.merge(conn.makeWhere(filter.where)); const sql = ParameterizedSQL.join([stmt], ';'); From 946d08e5432a34e0259ac0fa01e90c5da76780c7 Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 20 Jan 2025 17:29:18 +0100 Subject: [PATCH 090/217] feat: refs #7119 update ACLs and remove unused models for vehicle management --- .../11394-brownAsparagus/00-firstScript.sql | 2 + modules/route/back/methods/vehicle/filter.js | 10 ++-- modules/route/back/model-config.json | 6 --- modules/route/back/models/fuel-type.json | 2 +- modules/route/back/models/ppe.json | 10 +--- modules/route/back/models/vehicle-event.json | 51 ------------------- modules/route/back/models/vehicle-notes.json | 35 ------------- modules/route/back/models/vehicle-state.json | 10 +--- 8 files changed, 9 insertions(+), 117 deletions(-) delete mode 100644 modules/route/back/models/vehicle-event.json delete mode 100644 modules/route/back/models/vehicle-notes.json diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index d02482efdd..4d6cedb69b 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -2,4 +2,6 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, p VALUES ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery' ), + ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery' ), ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'); \ No newline at end of file diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index 17c132c2c8..ea2a94281a 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -92,9 +92,9 @@ module.exports = Self => { case 'vehicleStateFk': return {vehicleStateFk: value}; } - }); + }) || {}; - const myFilter = mergeFilters(filter, {where}); + const myFilter = mergeFilters(filter, {where: {...where, isActive: true}}); const stmt = new ParameterizedSQL(` SELECT v.id, @@ -122,16 +122,14 @@ module.exports = Self => { FROM vehicleEvent e LEFT JOIN vehicleState s ON e.vehicleStateFk = s.id ) sub ON sub.vehicleFk = v.id AND sub.rn = 1 - ` - ); + `); const sqlWhere = conn.makeWhere(myFilter.where); stmt.merge(sqlWhere); stmt.merge(conn.makePagination(myFilter)); const sql = ParameterizedSQL.join([stmt], ';'); - const result = await conn.executeStmt(sql, myOptions); - return result; + return conn.executeStmt(sql, myOptions); }; }; diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index 07054061fd..16e6d69677 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -44,12 +44,6 @@ "Vehicle": { "dataSource": "vn" }, - "VehicleEvent": { - "dataSource": "vn" - }, - "VehicleNotes": { - "dataSource": "vn" - }, "VehicleState": { "dataSource": "vn" }, diff --git a/modules/route/back/models/fuel-type.json b/modules/route/back/models/fuel-type.json index c7f96b3253..d426148371 100644 --- a/modules/route/back/models/fuel-type.json +++ b/modules/route/back/models/fuel-type.json @@ -23,7 +23,7 @@ { "accessType": "READ", "principalType": "ROLE", - "principalId": "employee", + "principalId": "$everyone", "permission": "ALLOW" } ] diff --git a/modules/route/back/models/ppe.json b/modules/route/back/models/ppe.json index 7af5cb6844..0825d348ca 100644 --- a/modules/route/back/models/ppe.json +++ b/modules/route/back/models/ppe.json @@ -11,13 +11,5 @@ "type": "number", "id": true } - }, - "acls": [ - { - "accessType": "READ", - "principalType": "ROLE", - "principalId": "delivery", - "permission": "ALLOW" - } - ] + } } \ No newline at end of file diff --git a/modules/route/back/models/vehicle-event.json b/modules/route/back/models/vehicle-event.json deleted file mode 100644 index 324076723c..0000000000 --- a/modules/route/back/models/vehicle-event.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "VehicleEvent", - "base": "VnModel", - "options": { - "mysql": { - "table": "vehicleEvent" - } - }, - "properties": { - "id": { - "type": "number", - "id": true - }, - "started": { - "type": "date" - }, - "finished": { - "type": "date" - }, - "vehicleStateFk": { - "type": "number" - }, - "description": { - "type": "string" - }, - "vehicleFk": { - "type": "number" - }, - "userFk": { - "type": "number" - }, - "notified": { - "type": "date" - } - }, - "relations": { - "state": { - "type": "belongsTo", - "model": "VehicleState", - "foreignKey": "vehicleStateFk" - } - }, - "acls": [ - { - "accessType": "READ", - "principalType": "ROLE", - "principalId": "$everyone", - "permission": "ALLOW" - } - ] -} \ No newline at end of file diff --git a/modules/route/back/models/vehicle-notes.json b/modules/route/back/models/vehicle-notes.json deleted file mode 100644 index 922f9b14b9..0000000000 --- a/modules/route/back/models/vehicle-notes.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "VehicleNotes", - "base": "VnModel", - "options": { - "mysql": { - "table": "vehicleNotes" - } - }, - "properties": { - "id": { - "type": "number", - "id": true - }, - "vehicleFk": { - "type": "number" - }, - "created": { - "type": "date" - }, - "note": { - "type": "string" - }, - "userFk": { - "type": "number" - } - }, - "acls": [ - { - "accessType": "READ", - "principalType": "ROLE", - "principalId": "delivery", - "permission": "ALLOW" - } - ] -} \ No newline at end of file diff --git a/modules/route/back/models/vehicle-state.json b/modules/route/back/models/vehicle-state.json index 1f71333eb9..b53719f631 100644 --- a/modules/route/back/models/vehicle-state.json +++ b/modules/route/back/models/vehicle-state.json @@ -17,13 +17,5 @@ "hasToNotify": { "type": "number" } - }, - "acls": [ - { - "accessType": "READ", - "principalType": "ROLE", - "principalId": "$everyone", - "permission": "ALLOW" - } - ] + } } \ No newline at end of file From 3d2a7cfb6695e3243a7a926ac164f9f2392d104a Mon Sep 17 00:00:00 2001 From: jorgep Date: Mon, 20 Jan 2025 18:05:33 +0100 Subject: [PATCH 091/217] feat: refs #7119 update ACLs for vehicle management and refine vehicle filter logic --- .../11394-brownAsparagus/00-firstScript.sql | 15 +++++++----- modules/route/back/methods/vehicle/filter.js | 2 +- modules/route/back/models/vehicle.json | 24 +++++++++---------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index 4d6cedb69b..72fb6b13d1 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -1,7 +1,10 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) - VALUES ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), - ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), - ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), - ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery' ), - ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery' ), - ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'); \ No newline at end of file + VALUES ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'findById', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), + ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative' ), + ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative' ), + ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', '__get__active', 'READ', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index ea2a94281a..11cc4d82af 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -94,7 +94,7 @@ module.exports = Self => { } }) || {}; - const myFilter = mergeFilters(filter, {where: {...where, isActive: true}}); + const myFilter = mergeFilters(filter, {where}); const stmt = new ParameterizedSQL(` SELECT v.id, diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index 9269cdebbc..e6d58de99e 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -104,19 +104,17 @@ "property": "ppeFk" } }, - "scope": { - "where": { - "isActive": { - "neq": false + "scopes": { + "active": { + "fields": [ + "id", + "numberPlate" + ], + "where": { + "isActive": { + "neq": false + } } } - }, - "acls": [ - { - "accessType": "READ", - "principalType": "ROLE", - "principalId": "$everyone", - "permission": "ALLOW" - } - ] + } } \ No newline at end of file From 55a0a5bc9a317f46b22ec3d5ae19eecc8f4f8d5c Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 21 Jan 2025 11:52:09 +0100 Subject: [PATCH 092/217] feat: refs #7119 add delivery role permissions --- db/versions/11394-brownAsparagus/00-firstScript.sql | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index 72fb6b13d1..77dfab7d34 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -1,10 +1,17 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) VALUES ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), ('Vehicle', 'findById', 'READ', 'ALLOW', 'ROLE', 'administrative'), ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), - ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative' ), + ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative' ), + ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery' ), ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), ('Vehicle', '__get__active', 'READ', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file From b20dee8382b896965cfd8bdbf0fb35d3305e3437 Mon Sep 17 00:00:00 2001 From: jtubau Date: Tue, 21 Jan 2025 12:28:34 +0100 Subject: [PATCH 093/217] feat: refs #8304 add notes field to business model --- modules/client/back/models/business.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/client/back/models/business.json b/modules/client/back/models/business.json index 58e989ae08..4168458425 100644 --- a/modules/client/back/models/business.json +++ b/modules/client/back/models/business.json @@ -13,7 +13,10 @@ }, "workcenterFk" : { "type": "number" - } + }, + "notes" : { + "type": "string" + } }, "relations": { "worker": { From 7f5224ebcabe7c504ac67123aed95e5b079877fd Mon Sep 17 00:00:00 2001 From: jtubau Date: Tue, 21 Jan 2025 14:45:13 +0100 Subject: [PATCH 094/217] feat: refs #8304 add ACL entries for Business and Worker models and update worker model relationships --- db/versions/11404-azureAnthurium/00-firstScript.sql | 6 +++++- modules/worker/back/models/worker.json | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/db/versions/11404-azureAnthurium/00-firstScript.sql b/db/versions/11404-azureAnthurium/00-firstScript.sql index 7a4dfe9bcb..58e74cbfb6 100644 --- a/db/versions/11404-azureAnthurium/00-firstScript.sql +++ b/db/versions/11404-azureAnthurium/00-firstScript.sql @@ -1,2 +1,6 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) -VALUES('WorkerDms', 'hasHighPrivs', 'READ', 'ALLOW', 'ROLE', 'hr'); \ No newline at end of file +VALUES + ('WorkerDms', 'hasHighPrivs', 'READ', 'ALLOW', 'ROLE', 'hr'), + ('Business', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'hr'), + ('Worker', '__get__business', 'READ', 'ALLOW', 'ROLE', 'hr') + ; \ No newline at end of file diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json index 705851963a..fbba4c2279 100644 --- a/modules/worker/back/models/worker.json +++ b/modules/worker/back/models/worker.json @@ -142,6 +142,11 @@ "type": "hasMany", "model": "WorkerRelative", "foreignKey": "workerFK" + }, + "business": { + "type": "hasMany", + "model": "Business", + "foreignKey": "workerFk" } }, "acls": [ From 2ae0097fa821b1335f382d63fe503fa5d28f139a Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 21 Jan 2025 15:48:20 +0100 Subject: [PATCH 095/217] feat: refs #7119 add vehicle type management and delivery role permissions --- db/dump/fixtures.before.sql | 11 +++++++++- .../11394-brownAsparagus/00-firstScript.sql | 21 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 2899446366..17f7cdf2ff 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -4090,4 +4090,13 @@ INSERT INTO vn.bankPolicy (id, `ref`, amount, committedFee, nonCommittedFee, ann INSERT INTO vn.ppe (id, amortization, firstAmortizated, lastAmortizated, finished, value, planFk, groupFk, account, endowment, elementAccount, nature, location, discharged, cause, isInvestmentAsset, workerFk, companyFk, description, isDone) VALUES (1, 0.00, '2001-01-01', NULL, NULL, 700.95, 16, 4, '3456000000', '4320000000', '12345', 'INMOVILIZADO', 'V02', NULL, NULL, 0, NULL, 442, 'UTILLAJE LASER ROTATIVO AUTONIVELANTE 500M', NULL), - (2, 0.00, '2001-01-01', NULL, NULL, 400.00, 16, 4, '5678000000', '1230000000', '67891', 'INMOVILIZADO', 'V02', NULL, NULL, 0, NULL, 442, 'UTILLAJE BALANZA Z100 150KILOS', NULL); \ No newline at end of file + (2, 0.00, '2001-01-01', NULL, NULL, 400.00, 16, 4, '5678000000', '1230000000', '67891', 'INMOVILIZADO', 'V02', NULL, NULL, 0, NULL, 442, 'UTILLAJE BALANZA Z100 150KILOS', NULL); + +INSERT IGNORE INTO vn.vehicleType (id, name) + VALUES (1,'vehículo empresa'), + (2, 'furgoneta'), + (3, 'cabeza tractora'), + (4, 'remolque'); + + + \ No newline at end of file diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index 77dfab7d34..51034c86b2 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -1,3 +1,4 @@ +USE vn; INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) VALUES ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'administrative'), ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), @@ -14,4 +15,22 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, p ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery' ), ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), - ('Vehicle', '__get__active', 'READ', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file + ('Vehicle', '__get__active', 'READ', 'ALLOW', 'ROLE', 'employee'); + +ALTER TABLE vehicle ADD COLUMN importCooler decimal(10,2) DEFAULT NULL; + + +CREATE TABLE IF NOT EXISTS vehicleType ( + id INT(11) PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(45) NOT NULL +); + +INSERT IGNORE INTO vehicleType (id, name) + VALUES (1,'vehículo empresa'), + (2, 'furgoneta'), + (3, 'cabeza tractora'), + (4, 'remolque'); +ALTER TABLE vehicle ADD COLUMN vehicleTypeFk INT(11) DEFAULT 1; + +ALTER TABLE vehicle ADD CONSTRAINT fk_vehicle_vehicleType FOREIGN KEY (vehicleTypeFk) REFERENCES vehicleType(id); + From 3ea67675dad4bb7b9def51ce4acb56367524a352 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 23 Jan 2025 10:53:53 +0100 Subject: [PATCH 096/217] feat: refs #7119 add VehicleType model and update vehicle permissions for delivery roles --- .../11394-brownAsparagus/00-firstScript.sql | 22 ++++++------- modules/route/back/methods/vehicle/filter.js | 32 +++++++------------ modules/route/back/model-config.json | 3 ++ modules/route/back/models/vehicle-type.json | 19 +++++++++++ modules/route/back/models/vehicle.json | 9 ++++++ 5 files changed, 54 insertions(+), 31 deletions(-) create mode 100644 modules/route/back/models/vehicle-type.json diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index 51034c86b2..6862627273 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -1,25 +1,24 @@ USE vn; + INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) VALUES ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'administrative'), - ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('Vehicle', 'filter', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), - ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('Vehicle', 'findById', 'READ', 'ALLOW', 'ROLE', 'administrative'), ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), - ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), + ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), - ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), - ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery'), + ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative' ), - ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'delivery' ), + ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant' ), ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), - ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'delivery'), + ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryAssistant'), + ('VehicleType', 'find', 'READ', 'ALLOW', 'ROLE', 'employee'), ('Vehicle', '__get__active', 'READ', 'ALLOW', 'ROLE', 'employee'); -ALTER TABLE vehicle ADD COLUMN importCooler decimal(10,2) DEFAULT NULL; - - CREATE TABLE IF NOT EXISTS vehicleType ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(45) NOT NULL @@ -30,7 +29,8 @@ INSERT IGNORE INTO vehicleType (id, name) (2, 'furgoneta'), (3, 'cabeza tractora'), (4, 'remolque'); -ALTER TABLE vehicle ADD COLUMN vehicleTypeFk INT(11) DEFAULT 1; +ALTER TABLE vehicle ADD COLUMN importCooler decimal(10,2) DEFAULT NULL; +ALTER TABLE vehicle ADD COLUMN vehicleTypeFk INT(11) DEFAULT 1; ALTER TABLE vehicle ADD CONSTRAINT fk_vehicle_vehicleType FOREIGN KEY (vehicleTypeFk) REFERENCES vehicleType(id); diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index 11cc4d82af..7e8fb36415 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -43,8 +43,8 @@ module.exports = Self => { arg: 'countryCodeFk', type: 'string' }, { - arg: 'isKmTruckRate', - type: 'boolean' + arg: 'vehicleTypeFk', + type: 'number' }, { arg: 'vehicleStateFk', type: 'number' @@ -69,28 +69,19 @@ module.exports = Self => { switch (param) { case 'search': return {or: [{'v.id': value}, {numberPlate: {like: `%${value}%`}}]}; - case 'id': - return {id: value}; case 'description': - return {description: {like: `%${value}%`}}; - case 'companyFk': - return {companyFk: value}; case 'tradeMark': - return {tradeMark: {like: `%${value}%`}}; case 'numberPlate': - return {numberPlate: {like: `%${value}%`}}; - case 'warehouseFk': - return {warehouseFk: value}; case 'chassis': - return {chassis: {like: `%${value}%`}}; case 'leasing': - return {leasing: {like: `%${value}%`}}; + return {[param]: {like: `%${value}%`}}; + case 'id': + case 'companyFk': + case 'warehouseFk': case 'countryCodeFk': - return {countryCodeFk: value}; - case 'isKmTruckRate': - return {isKmTruckRate: value}; case 'vehicleStateFk': - return {vehicleStateFk: value}; + case 'vehicleTypeFk': + return {[param]: value}; } }) || {}; @@ -107,11 +98,12 @@ module.exports = Self => { v.countryCodeFk, v.chassis, v.leasing, - v.isKmTruckRate, - w.name as warehouse, - c.code as company, + vt.name type, + w.name warehouse, + c.code company, sub.state FROM vehicle v + JOIN vehicleType vt ON vt.id = v.vehicleTypeFk LEFT JOIN warehouse w ON w.id = v.warehouseFk LEFT JOIN company c ON c.id = v.companyFk LEFT JOIN ( diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index 16e6d69677..3a7c9e06b5 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -47,6 +47,9 @@ "VehicleState": { "dataSource": "vn" }, + "VehicleType": { + "dataSource": "vn" + }, "RoutesMonitor": { "dataSource": "vn" } diff --git a/modules/route/back/models/vehicle-type.json b/modules/route/back/models/vehicle-type.json new file mode 100644 index 0000000000..34beb6dfba --- /dev/null +++ b/modules/route/back/models/vehicle-type.json @@ -0,0 +1,19 @@ +{ + "name": "VehicleType", + "base": "VnModel", + "options": { + "mysql": { + "table": "vehicleType" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "name": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index e6d58de99e..95eac7251c 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -53,6 +53,9 @@ }, "ppeFk": { "type": "number" + }, + "vehicleTypeFk": { + "type": "number" } }, "relations": { @@ -102,6 +105,12 @@ "model": "Ppe", "foreignKey": "id", "property": "ppeFk" + }, + "type": { + "type": "hasOne", + "model": "VehicleType", + "foreignKey": "id", + "property": "vehicleTypeFk" } }, "scopes": { From 3a449896cdbe15900c8021100d301405cb1481b7 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 23 Jan 2025 18:02:53 +0100 Subject: [PATCH 097/217] feat: refs #7119 update vehicle permissions and enhance vehicle model with new fields --- db/versions/11394-brownAsparagus/00-firstScript.sql | 13 +++++++++---- modules/route/back/models/vehicle.json | 6 ++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/db/versions/11394-brownAsparagus/00-firstScript.sql b/db/versions/11394-brownAsparagus/00-firstScript.sql index 6862627273..13b6cfa0dd 100644 --- a/db/versions/11394-brownAsparagus/00-firstScript.sql +++ b/db/versions/11394-brownAsparagus/00-firstScript.sql @@ -6,19 +6,24 @@ INSERT INTO salix.ACL (model, property, accessType, permission, principalType, p ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), ('Vehicle', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('Vehicle', 'findById', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'findById', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), + ('Vehicle', '__get__active', 'READ', 'ALLOW', 'ROLE', 'employee'), ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), ('Vehicle', 'updateAttributes', 'WRITE', 'ALLOW', 'ROLE', 'deliveryAssistant'), + ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryAssistant'), + ('Vehicle', 'create', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), + ('Vehicle', 'create', 'WRITE', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), ('BankPolicy', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'), ('VehicleState', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative' ), ('Ppe', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant' ), - ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'administrative'), - ('Vehicle', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'deliveryAssistant'), ('VehicleType', 'find', 'READ', 'ALLOW', 'ROLE', 'employee'), - ('Vehicle', '__get__active', 'READ', 'ALLOW', 'ROLE', 'employee'); - + ('DeliveryPoint', 'find', 'READ', 'ALLOW', 'ROLE', 'deliveryAssistant'), + ('DeliveryPoint', 'find', 'READ', 'ALLOW', 'ROLE', 'administrative'); + CREATE TABLE IF NOT EXISTS vehicleType ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(45) NOT NULL diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index 95eac7251c..d64f3df794 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -48,6 +48,9 @@ "import": { "type": "number" }, + "importCooler": { + "type": "number" + }, "vin": { "type": "string" }, @@ -56,6 +59,9 @@ }, "vehicleTypeFk": { "type": "number" + }, + "deliveryPointFk": { + "type": "number" } }, "relations": { From 3fba81b41e8bc7ae1162dabcd41944fa525e76d3 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 24 Jan 2025 10:46:35 +0100 Subject: [PATCH 098/217] feat: refs #7119 add 'id' filter option and enhance bank policy model with dmsFk field --- modules/route/back/methods/vehicle/filter.js | 11 ++++++----- modules/route/back/models/bank-policy.json | 3 +++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index 7e8fb36415..cb55f5f3ca 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -69,13 +69,14 @@ module.exports = Self => { switch (param) { case 'search': return {or: [{'v.id': value}, {numberPlate: {like: `%${value}%`}}]}; + case 'id': + return {'v.id': value}; case 'description': case 'tradeMark': case 'numberPlate': case 'chassis': case 'leasing': return {[param]: {like: `%${value}%`}}; - case 'id': case 'companyFk': case 'warehouseFk': case 'countryCodeFk': @@ -83,9 +84,9 @@ module.exports = Self => { case 'vehicleTypeFk': return {[param]: value}; } - }) || {}; + }); - const myFilter = mergeFilters(filter, {where}); + filter = mergeFilters(filter, {where}); const stmt = new ParameterizedSQL(` SELECT v.id, @@ -116,9 +117,9 @@ module.exports = Self => { ) sub ON sub.vehicleFk = v.id AND sub.rn = 1 `); - const sqlWhere = conn.makeWhere(myFilter.where); + const sqlWhere = conn.makeWhere(filter.where); stmt.merge(sqlWhere); - stmt.merge(conn.makePagination(myFilter)); + stmt.merge(conn.makePagination(filter)); const sql = ParameterizedSQL.join([stmt], ';'); diff --git a/modules/route/back/models/bank-policy.json b/modules/route/back/models/bank-policy.json index edbc636ffa..55a409a671 100644 --- a/modules/route/back/models/bank-policy.json +++ b/modules/route/back/models/bank-policy.json @@ -13,6 +13,9 @@ }, "ref": { "type": "string" + }, + "dmsFk": { + "type": "number" } } } \ No newline at end of file From ec7bbd13b131330caad46ebfaa2b81bd5aaa4b2e Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 24 Jan 2025 16:37:35 +0100 Subject: [PATCH 099/217] refactor: refs #7119 update vehicle filter logic and improve test cases --- modules/route/back/methods/vehicle/filter.js | 2 - .../back/methods/vehicle/specs/filter.spec.js | 93 ++++++++++--------- 2 files changed, 49 insertions(+), 46 deletions(-) diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index ef87c1448e..fa0b847580 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -71,8 +71,6 @@ module.exports = Self => { return /^\d+$/.test(value) ? {'v.id': value} : {numberPlate: {like: `%${value}%`}}; - case 'id': - return {'v.id': value}; case 'description': case 'tradeMark': case 'numberPlate': diff --git a/modules/route/back/methods/vehicle/specs/filter.spec.js b/modules/route/back/methods/vehicle/specs/filter.spec.js index ab718f06e4..52e0b8a397 100644 --- a/modules/route/back/methods/vehicle/specs/filter.spec.js +++ b/modules/route/back/methods/vehicle/specs/filter.spec.js @@ -1,6 +1,6 @@ const {models} = require('vn-loopback/server/server'); -fdescribe('Vehicle filter()', () => { +describe('Vehicle filter()', () => { const deliveryAssiId = 123; const ctx = beforeAll.getCtx(deliveryAssiId); let options; @@ -30,7 +30,7 @@ fdescribe('Vehicle filter()', () => { expect(searchResult2.numberPlate).toEqual(numberPlate); }); - it('should return the vehicles matching "company"', async() => { + it('should return the vehicles matching "companyFk"', async() => { const company = await models.Company.findOne({where: {code: 'VNL'}}, options); ctx.args = {companyFk: company.id}; const searchResult = await models.Vehicle.filter(ctx, null, options); @@ -64,59 +64,64 @@ fdescribe('Vehicle filter()', () => { ctx.args = {warehouseFk: warehouse.id}; const searchResult = await models.Vehicle.filter(ctx); searchResult.forEach(record => { - expect(record.warehouseFk).toEqual(warehouse.id); + expect(record.warehouse).toEqual(warehouse.name); }); }); - // it('should return the vehicles matching "chassis"', async() => { - // const ctx = { - // args: { - // chassis: 'CH12345', - // } - // }; + it('should return the vehicles matching "chassis"', async() => { + const {chassis} = await models.Vehicle.findById(1, null, options); + ctx.args = {chassis}; + const [searchResult] = await models.Vehicle.filter(ctx); - // const result = await models.Vehicle.filter(ctx); + expect(searchResult.chassis).toEqual(chassis); + }); - // expect(result.length).toBeGreaterThan(0); - // expect(result[0].chassis).toEqual('CH12345'); - // }); + it('should return the vehicles matching "leasing"', async() => { + const leasing = 'Wayne leasing'; + ctx.args = {leasing}; + const searchResult = await models.Vehicle.filter(ctx); + searchResult.forEach(record => { + expect(record.leasing).toEqual(leasing); + }); + }); - // it('should return the vehicles matching "leasing"', async() => { - // const ctx = { - // args: { - // leasing: 'LeasingCompany', - // } - // }; + it('should return the vehicles matching "countryCodeFk"', async() => { + const countryCodeFk = 'ES'; + ctx.args = {countryCodeFk}; - // const result = await models.Vehicle.filter(ctx); + const searchResult = await models.Vehicle.filter(ctx); + searchResult.forEach(record => { + expect(record.countryCodeFk).toEqual(countryCodeFk); + }); + }); - // expect(result.length).toBeGreaterThan(0); - // expect(result[0].leasing).toEqual('LeasingCompany'); - // }); + it('should return the vehicles matching "vehicleTypeFk"', async() => { + const {name, id} = await models.VehicleType.findById(1, null, options); + ctx.args = {vehicleTypeFk: id}; - // it('should return the vehicles matching "countryCodeFk"', async() => { - // const ctx = { - // args: { - // countryCodeFk: 'US', - // } - // }; + const searchResult = await models.Vehicle.filter(ctx); + searchResult.forEach(record => { + expect(record.type).toEqual(name); + }); + }); - // const result = await models.Vehicle.filter(ctx); + it('should return the vehicles matching "vehicleStateFk"', async() => { + const {state, id} = await models.VehicleState.findById(3); + ctx.args = {vehicleStateFk: id}; - // expect(result.length).toBeGreaterThan(0); - // expect(result[0].countryCodeFk).toEqual('US'); - // }); + const searchResult = await models.Vehicle.filter(ctx); + searchResult.forEach(record => { + expect(record.state).toEqual(state); + }); + }); - // it('should return the vehicles matching "vehicleTypeFk"', async() => { - // const ctx = { - // args: { - // vehicleTypeFk: 3, - // } - // }; + it('should return the vehicles matching "description"', async() => { + const {description} = await models.Vehicle.findById(2); + ctx.args = {description}; - // const result = await models.Vehicle.filter(ctx); - - // expect(result.length).toBeGreaterThan(0); - // expect(result[0].vehicleTypeFk).toEqual(3); - // }); + const searchResult = await models.Vehicle.filter(ctx); + searchResult.forEach(record => { + expect(record.description).toEqual(description); + }); + }); }); From fb653c1eca52d3563e5d31d04283d4b28ec7363a Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 24 Jan 2025 16:42:10 +0100 Subject: [PATCH 100/217] fix: refs #7119 rollback --- modules/route/back/methods/vehicle/filter.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index fa0b847580..ef87c1448e 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -71,6 +71,8 @@ module.exports = Self => { return /^\d+$/.test(value) ? {'v.id': value} : {numberPlate: {like: `%${value}%`}}; + case 'id': + return {'v.id': value}; case 'description': case 'tradeMark': case 'numberPlate': From bd54eacda187e55bf575687715d8d53af676a634 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sun, 26 Jan 2025 02:36:39 +0100 Subject: [PATCH 101/217] feat: refs #6321 alternative alertLevel --- modules/ticket/back/methods/ticket/itemLackDetail.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index d3faad8221..f7af046238 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -141,9 +141,10 @@ module.exports = Self => { ORDER BY hasToIgnore, isBasket;`, [itemFk, warehouseFk, 2, 2, warehouseFk, itemFk]); - // if (filter.where.alertLevel) { - // stmt.merge({ - // sql: `AND ${filter.where.alertLevel ? '' : 'NOT'} ts.alertLevel=?`, params: [0]}); + 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], ';'); From ef5c2ab3a212dc440b77f51fcc42cebd984e694c Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 27 Jan 2025 08:11:41 +0100 Subject: [PATCH 102/217] feat: refs #6897 add cloneEntry and deleteEntry methods with corresponding ACL permissions --- .../11399-bronzeOak/00-firstScript.sql | 2 + .../back/methods/entry-buys/getBuyList.js | 7 +-- .../entry/back/methods/entry/cloneEntry.js | 47 ++++++++++++++++++ .../entry/back/methods/entry/deleteEntry.js | 49 +++++++++++++++++++ modules/entry/back/methods/entry/filter.js | 11 ++--- modules/entry/back/models/entry.js | 2 + modules/entry/back/models/entry.json | 8 ++- 7 files changed, 115 insertions(+), 11 deletions(-) create mode 100644 modules/entry/back/methods/entry/cloneEntry.js create mode 100644 modules/entry/back/methods/entry/deleteEntry.js diff --git a/db/versions/11399-bronzeOak/00-firstScript.sql b/db/versions/11399-bronzeOak/00-firstScript.sql index 786d131bf1..14836847b9 100644 --- a/db/versions/11399-bronzeOak/00-firstScript.sql +++ b/db/versions/11399-bronzeOak/00-firstScript.sql @@ -1,6 +1,8 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Entry','getBuyList','READ','ALLOW','ROLE','buyer'), ('Entry','create','WRITE','ALLOW','ROLE','buyer'), + ('Entry','cloneEntry','WRITE','ALLOW','ROLE','buyer'), + ('Entry','deleteEntry','WRITE','ALLOW','ROLE','buyer'), ('EntryType','find','READ','ALLOW','ROLE','buyer'), ('EntryConfig','findOne','READ','ALLOW','ROLE','buyer'); diff --git a/modules/entry/back/methods/entry-buys/getBuyList.js b/modules/entry/back/methods/entry-buys/getBuyList.js index 41e4e793df..bf168ffaf6 100644 --- a/modules/entry/back/methods/entry-buys/getBuyList.js +++ b/modules/entry/back/methods/entry-buys/getBuyList.js @@ -230,6 +230,7 @@ module.exports = Self => { ik.hexJson`; const groupByFields = `SUM(b.printedStickers) printedStickers, + SUM(b.packing) packing, SUM(b.stickers) stickers, SUM(b.weight) weight, SUM(b.quantity) quantity, @@ -260,12 +261,12 @@ module.exports = Self => { let sql = ParameterizedSQL.join(stmts, ';'); let result = await conn.executeStmt(sql, myOptions); - if (groupBy) { + if (groupBy && result.length) { const buys = await Self.app.models.Buy.find({where: {entryFk}}, myOptions); const buysChecked = buys.filter(buy => buy?.isChecked); - result[0].isAllChecked = buysChecked.length === buys.length; + result[0].isChecked = buysChecked.length === buys.length; } - + console.log('id:', entryFk); return itemsIndex === 0 ? result : result[itemsIndex]; }; }; diff --git a/modules/entry/back/methods/entry/cloneEntry.js b/modules/entry/back/methods/entry/cloneEntry.js new file mode 100644 index 0000000000..159f485aba --- /dev/null +++ b/modules/entry/back/methods/entry/cloneEntry.js @@ -0,0 +1,47 @@ + +module.exports = Self => { + Self.remoteMethodCtx('cloneEntry', { + description: 'Clones an entry', + accessType: 'WRITE', + accepts: [{ + arg: 'id', + type: 'number', + required: true, + description: 'The entry id', + http: {source: 'path'} + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/:id/cloneEntry`, + verb: 'POST' + } + }); + + Self.cloneEntry = async(ctx, id, options) => { + const userId = ctx.req.accessToken.userId; + const myOptions = {userId}; + let tx; + let result; + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + result = await Self.rawSql('CALL entry_clone(?)', [id], myOptions); + console.log('result: ', result); + + if (tx) await tx.commit(); + return result[0]; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/entry/back/methods/entry/deleteEntry.js b/modules/entry/back/methods/entry/deleteEntry.js new file mode 100644 index 0000000000..7b257b5701 --- /dev/null +++ b/modules/entry/back/methods/entry/deleteEntry.js @@ -0,0 +1,49 @@ + +module.exports = Self => { + Self.remoteMethodCtx('deleteEntry', { + description: 'Clones an entry', + accessType: 'WRITE', + accepts: [{ + arg: 'id', + type: 'number', + required: true, + description: 'The entry id', + http: {source: 'path'} + }], + http: { + path: `/:id/deleteEntry`, + verb: 'POST' + } + }); + + Self.deleteEntry = async(ctx, id, options) => { + const userId = ctx.req.accessToken.userId; + const myOptions = {userId}; + let tx; + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const entry = await Self.findById(id, null, myOptions); + console.log('entry: ', entry); + await entry.updateAttribute('travelFk', null, myOptions); + await Self.rawSql('DELETE FROM vn.duaEntry WHERE entryFk = ?;', [id], myOptions); + await Self.rawSql(` + DELETE i.* + FROM vn.invoiceIn i + JOIN vn.entry e ON e.invoiceInFk = i.id + WHERE e.id = ?`, [id], myOptions + ); + + if (tx) await tx.commit(); + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index 4104eb6b34..44f324294a 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -238,7 +238,6 @@ module.exports = Self => { return {[`et.code`]: value}; } }); - console.log('where: ', where); filter = mergeFilters(ctx.args.filter, {where}); const userId = ctx.req.accessToken.userId; const client = await Self.app.models.Client.findById(userId, myOptions); @@ -290,11 +289,11 @@ module.exports = Self => { t.isReceived FROM vn.entry e JOIN vn.supplier s ON s.id = e.supplierFk - JOIN vn.travel t ON t.id = e.travelFk - JOIN vn.warehouse w ON w.id = t.warehouseInFk - JOIN vn.warehouse w2 ON w2.id = t.warehouseOutFk - JOIN vn.company co ON co.id = e.companyFk - JOIN vn.currency cu ON cu.id = e.currencyFk + LEFT JOIN vn.travel t ON t.id = e.travelFk + LEFT JOIN vn.warehouse w ON w.id = t.warehouseInFk + LEFT JOIN vn.warehouse w2 ON w2.id = t.warehouseOutFk + LEFT JOIN vn.company co ON co.id = e.companyFk + LEFT JOIN vn.currency cu ON cu.id = e.currencyFk LEFT JOIN vn.awb a ON a.id = t.awbFk LEFT JOIN vn.agencyMode am ON am.id = t.agencyModeFk LEFT JOIN vn.entryType et ON et.code = e.typeFk` diff --git a/modules/entry/back/models/entry.js b/modules/entry/back/models/entry.js index 5189749864..257d034ca2 100644 --- a/modules/entry/back/models/entry.js +++ b/modules/entry/back/models/entry.js @@ -16,6 +16,8 @@ module.exports = Self => { require('../methods/entry/buyLabelSupplier')(Self); require('../methods/entry-buys/getBuyList')(Self); require('../methods/entry-buys/getBuyUltimate')(Self); + require('../methods/entry/cloneEntry')(Self); + require('../methods/entry/deleteEntry')(Self); Self.observe('before save', async(ctx, options) => { if (ctx.isNewInstance) return; diff --git a/modules/entry/back/models/entry.json b/modules/entry/back/models/entry.json index 4a09c7d6a5..cbf0114170 100644 --- a/modules/entry/back/models/entry.json +++ b/modules/entry/back/models/entry.json @@ -56,8 +56,7 @@ "required": true }, "travelFk": { - "type": "number", - "required": true + "type": "number" }, "companyFk": { "type": "number", @@ -101,6 +100,11 @@ "type": "belongsTo", "model": "EntryType", "foreignKey": "typeFk" + }, + "invoiceIn": { + "type": "belongsTo", + "model": "InvoiceIn", + "foreignKey": "invoiceInFk" } } } From 1a0992da782fbb92ab8a107576cab6ec87f581e7 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 27 Jan 2025 12:04:18 +0100 Subject: [PATCH 103/217] feat: refs #6321 changes --- loopback/locale/en.json | 6 ++- loopback/locale/es.json | 5 ++- loopback/locale/fr.json | 6 ++- loopback/locale/pt.json | 6 ++- .../ticket/back/methods/sale/replaceItem.js | 26 +++++++---- .../ticket/back/methods/ticket/itemLack.js | 2 +- .../back/methods/ticket/itemLackDetail.js | 19 +++----- .../methods/ticket/specs/itemLack.spec.js | 44 +++++++++---------- .../ticket/specs/itemLackDetail.spec.js | 12 +++-- .../back/methods/ticket/specs/split.spec.js | 4 +- modules/ticket/back/methods/ticket/state.js | 4 +- 11 files changed, 75 insertions(+), 59 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 6aad8a4c19..482698ce92 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -254,5 +254,7 @@ "Sales already moved": "Sales already moved", "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", - "Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order." -} \ No newline at end of file + "Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order.", + "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" + +} diff --git a/loopback/locale/es.json b/loopback/locale/es.json index abd2f79a0d..a4a55895b6 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -396,5 +396,6 @@ "There are tickets to be invoiced": "La zona tiene tickets por facturar", "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sigo entregado en su orden.", - "Price cannot be blank": "El precio no puede estar en blanco" -} \ No newline at end of file + "Price cannot be blank": "El precio no puede estar en blanco", + "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" +} diff --git a/loopback/locale/fr.json b/loopback/locale/fr.json index d7d5b7710e..5dfc6378c0 100644 --- a/loopback/locale/fr.json +++ b/loopback/locale/fr.json @@ -368,5 +368,7 @@ "ticketLostExpedition": "Le ticket [{{ticketId}}]({{{ticketUrl}}}) a l'expédition perdue suivante : {{expeditionId}}", "The web user's email already exists": "L'email de l'internaute existe déjà", "Incorrect delivery order alert on route": "Alerte de bon de livraison incorrect sur l'itinéraire: {{ route }} zone : {{ zone }}", - "Ticket has been delivered out of order": "Le ticket {{ticket}} {{{fullUrl}}} a été livré hors ordre." -} \ No newline at end of file + "Ticket has been delivered out of order": "Le ticket {{ticket}} {{{fullUrl}}} a été livré hors ordre.", + "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" + +} diff --git a/loopback/locale/pt.json b/loopback/locale/pt.json index d1ac2ef236..7814eb79c0 100644 --- a/loopback/locale/pt.json +++ b/loopback/locale/pt.json @@ -367,5 +367,7 @@ "ticketLostExpedition": "O ticket [{{ticketId}}]({{{ticketUrl}}}) tem a seguinte expedição perdida: {{expeditionId}}", "The web user's email already exists": "O e-mail do utilizador da web já existe.", "Incorrect delivery order alert on route": "Alerta de ordem de entrega incorreta na rota: {{ route }} zona: {{ zone }}", - "Ticket has been delivered out of order": "O ticket {{ticket}} {{{fullUrl}}} foi entregue fora de ordem." -} \ No newline at end of file + "Ticket has been delivered out of order": "O ticket {{ticket}} {{{fullUrl}}} foi entregue fora de ordem.", + "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" + +} diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index 5096d42952..9c974b0570 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -47,21 +47,29 @@ module.exports = Self => { } try { - const _replaceItem = {sql: 'CALL sale_replaceItem(?,?,?)', query: [saleFk, substitutionFk, quantity]}; - const result = await Self.rawSql(_replaceItem.sql, _replaceItem.query, myOptions); - const _salesPerson = {sql: 'SELECT vn.client_getSalesPersonByTicket(?)', query: [saleFk.ticket.id]}; + const _replaceItem = { + sql: 'CALL sale_replaceItem(?,?,?)', + query: [saleFk, substitutionFk, quantity] + }; + const resultReplaceItem = await Self.rawSql(_replaceItem.sql, _replaceItem.query, myOptions); + + const _salesPerson = { + sql: 'SELECT vn.client_getSalesPersonByTicket(?)', + query: [saleFk.ticket.id] + }; const salesPerson = await Self.rawSql(_salesPerson.query, _salesPerson.sql, myOptions); + const message = $t('negativeReplaced', { - old: itemFk, - oldUrl: `${url}item/${itemFk}/summary`, - new: itemFk, - newUrl: `${url}item/${itemFk}/summary`, - ticket: ticketFk, + oldItemId: itemFk, + oldItemUrl: `${url}item/${itemFk}/summary`, + newItemId: substitutionFk, + newItemUrl: `${url}item/${substitutionFk}/summary`, + ticketId: ticketFk, ticketUrl: `${url}ticket/${ticketFk}/sale`, }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message); - return result; + return resultReplaceItem; } catch (e) { if (tx) await tx.rollback(); throw e; diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 6430a63ab4..15067bcc7d 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -79,7 +79,7 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const filterKeyOrder = ['days', 'itemFk', 'longname', 'supplier', 'colour', 'size', 'origen', 'lack', 'warehouseFk']; + const filterKeyOrder = ['days', 'itemFk', 'longname', 'supplier', 'colour', 'size', 'originFk', 'lack', 'warehouseFk']; delete ctx?.args?.ctx; diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index f7af046238..7358767f44 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -10,11 +10,6 @@ module.exports = Self => { type: 'number', description: 'The item id', }, - { - arg: 'warehouseFk', - type: 'number', - description: 'The warehouse id', - }, { arg: 'filter', type: 'object', @@ -35,7 +30,7 @@ module.exports = Self => { }, }); - Self.itemLackDetail = async(itemFk, warehouseFk, filter, options) => { + Self.itemLackDetail = async(itemFk, filter, options) => { const conn = Self.dataSource.connector; const myOptions = {}; @@ -91,8 +86,8 @@ module.exports = Self => { WHERE warehouseFk = ? AND s.itemFk = ? AND s.quantity <> 0 - AND t.shipped >= CURDATE() - AND t.shipped < DATE_ADD(CURDATE(), INTERVAL ? DAY) + AND t.shipped >= util.VN_CURDATE() + AND t.shipped < DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) AND sgd.saleFk IS NULL AND (al.code IN ('FREE', 'ON_PREVIOUS') OR al.code IS NULL) UNION ALL @@ -131,15 +126,15 @@ module.exports = Self => { WHERE ot.code = 'substitution' GROUP BY co.clientFk ) AS substitution ON substitution.clientFk = c.id - WHERE r.shipment >= CURDATE() - AND r.shipment < DATE_ADD(CURDATE(), INTERVAL ? DAY) + WHERE r.shipment >= util.VN_CURDATE() AND r.warehouseFk = ? - AND r.created >= STR_TO_DATE(CURDATE(), '%Y-%m-%d %H:%i:%s') + AND r.shipment < DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) + AND r.created >= STR_TO_DATE(util.VN_CURDATE(), '%Y-%m-%d %H:%i:%s') AND NOT o.confirmed AND r.itemFk = ? AND r.amount <> 0 ORDER BY hasToIgnore, isBasket;`, - [itemFk, warehouseFk, 2, 2, warehouseFk, itemFk]); + [filter.where.warehouseFk, itemFk, 2, filter.where.warehouseFk, 2, itemFk]); if (filter.where.stateFk) { stmt.merge({ diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index 93dce11b27..af0538c21c 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -31,12 +31,12 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - id: 88 + itemFk: 88 }; try { const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(2); + expect(result.length).toEqual(1); await tx.rollback(); } catch (e) { await tx.rollback(); @@ -49,7 +49,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - longname: 'Lack negative' + longname: 'Ranged weapon pistol 9mm' }; try { const result = await models.Ticket.itemLack(ctx, filter, options); @@ -62,23 +62,23 @@ describe('Item Lack', () => { } }); - xit('should return data with filter.name', async() => { - const tx = await models.Ticket.beginTransaction({}); + // it('should return data with filter.name', async() => { + // const tx = await models.Ticket.beginTransaction({}); - const options = {transaction: tx}; - const filter = { - name: 1 - }; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); + // const options = {transaction: tx}; + // const filter = { + // name: 1 + // }; + // try { + // const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); + // expect(result.length).toEqual(1); + // await tx.rollback(); + // } catch (e) { + // await tx.rollback(); + // throw e; + // } + // }); it('should return data with filter.color', async() => { const tx = await models.Ticket.beginTransaction({}); @@ -90,7 +90,7 @@ describe('Item Lack', () => { try { const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); + expect(result.length).toEqual(0); await tx.rollback(); } catch (e) { await tx.rollback(); @@ -103,7 +103,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - origen: 1 + originFk: 1 }; try { const result = await models.Ticket.itemLack(ctx, filter, options); @@ -121,7 +121,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - size: '200' + size: '15' }; try { const result = await models.Ticket.itemLack(ctx, filter, options); @@ -139,7 +139,7 @@ describe('Item Lack', () => { const options = {transaction: tx}; const filter = { - lack: '-155' + lack: '-15' }; try { const result = await models.Ticket.itemLack(ctx, filter, options); diff --git a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js index 9d5a7c6f99..be8082b324 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js @@ -8,7 +8,9 @@ describe('Item Lack Detail', () => { const options = {transaction: tx}; const id = null; - const result = await models.Ticket.itemLackDetail(id, options); + const filter = {where: {id: 0}}; + const warehouseFk = 60; + const result = await models.Ticket.itemLackDetail(id, warehouseFk, filter, options); expect(result.length).toEqual(0); await tx.rollback(); @@ -24,7 +26,9 @@ describe('Item Lack Detail', () => { try { const options = {transaction: tx}; const id = 1167; - const result = await models.Ticket.itemLackDetail(id, options); + const filter = {where: {id: 0}}; + const warehouseFk = 60; + const result = await models.Ticket.itemLackDetail(id, warehouseFk, filter, options); expect(result.length).toEqual(0); await tx.rollback(); @@ -40,7 +44,9 @@ describe('Item Lack Detail', () => { try { const options = {transaction: tx}; const id = 0; - const result = await models.Ticket.itemLackDetail(id, options); + const filter = {where: {id: 0}}; + const warehouseFk = 60; + const result = await models.Ticket.itemLackDetail(id, warehouseFk, filter, options); expect(result.length).toEqual(0); await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/specs/split.spec.js b/modules/ticket/back/methods/ticket/specs/split.spec.js index 01008b5562..8447b8a01d 100644 --- a/modules/ticket/back/methods/ticket/specs/split.spec.js +++ b/modules/ticket/back/methods/ticket/specs/split.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -describe('Split', () => { +fdescribe('Split', () => { beforeAll(async() => { ctx = { req: { @@ -44,7 +44,7 @@ describe('Split', () => { expect(result.length).toEqual(1); expect(result[0].ticket).toEqual(8); expect(result[0].status).toEqual('error'); - expect(result[0].message).toEqual('This ticket is not editable.'); + expect(result[0].message).toEqual('Can\'t transfer claimed sales'); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/ticket/state.js b/modules/ticket/back/methods/ticket/state.js index fea9475f8c..e7daacacca 100644 --- a/modules/ticket/back/methods/ticket/state.js +++ b/modules/ticket/back/methods/ticket/state.js @@ -43,8 +43,8 @@ module.exports = Self => { const {code} = await models.State.findById(params.stateFk, {fields: ['code']}, myOptions); params.code = code; } else { - const {id} = await models.State.findOne({where: {code: params.code}}, myOptions); - params.stateFk = id; + const state = await models.State.findOne({where: {id: params.code}}, myOptions); + params.stateFk = state.id; } if (!params.userFk) { From 10eef6d1b6b213532881a27e343cd3e1ff8e708c Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 28 Jan 2025 08:45:00 +0100 Subject: [PATCH 104/217] feat: refs #6321 updates --- .../10936-wheatAnthurium/00-updateACL.sql | 2 +- loopback/locale/en.json | 6 +- .../back/methods/client/extendedListFilter.js | 12 ++ .../methods/sale/specs/backup_itemDetail.js | 104 ++++++++++++++++++ .../ticket/back/methods/ticket/itemLack.js | 6 +- .../back/methods/ticket/itemLackDetail.js | 10 +- .../back/methods/ticket/transferSales.js | 8 +- modules/ticket/back/models/sale.js | 2 +- 8 files changed, 141 insertions(+), 9 deletions(-) create mode 100644 modules/ticket/back/methods/sale/specs/backup_itemDetail.js diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql index 2652dff9c8..7727d30e01 100644 --- a/db/versions/10936-wheatAnthurium/00-updateACL.sql +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -5,4 +5,4 @@ INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee'), ('Ticket','split','WRITE','ALLOW','ROLE','employee'), ('Ticket','negativeOrigin','READ','ALLOW','ROLE','employee'), - ('Sale','replaceItem','READ','ALLOW','ROLE','employee'); + ('Sale','replaceItem','WRITE','ALLOW','ROLE','employee'); diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 482698ce92..98da3269e7 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -255,6 +255,6 @@ "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order.", - "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" - -} + "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})", + "price retrieval failed": "price retrieval failed" +} \ No newline at end of file diff --git a/modules/client/back/methods/client/extendedListFilter.js b/modules/client/back/methods/client/extendedListFilter.js index 174970a2fe..0097795e67 100644 --- a/modules/client/back/methods/client/extendedListFilter.js +++ b/modules/client/back/methods/client/extendedListFilter.js @@ -43,6 +43,14 @@ module.exports = Self => { arg: 'postcode', type: 'string', }, + { + arg: 'sageTransactionTypeFk', + type: 'number', + }, + { + arg: 'sageTaxTypeFk', + type: 'number', + }, { arg: 'provinceFk', type: 'number', @@ -79,6 +87,10 @@ module.exports = Self => { return /^\d+$/.test(value) ? {'c.id': {inq: value}} : {'c.name': {like: `%${value}%`}}; + case 'sageTaxTypeFk': + return {'sti.CodigoIva': value}; + case 'sageTransactionTypeFk': + return {'stt.CodigoTransaccion': value}; case 'name': case 'salesPersonFk': case 'fi': diff --git a/modules/ticket/back/methods/sale/specs/backup_itemDetail.js b/modules/ticket/back/methods/sale/specs/backup_itemDetail.js new file mode 100644 index 0000000000..3c50b4c486 --- /dev/null +++ b/modules/ticket/back/methods/sale/specs/backup_itemDetail.js @@ -0,0 +1,104 @@ +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; + }; +}; diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 15067bcc7d..65abb1284b 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -79,7 +79,11 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const filterKeyOrder = ['days', 'itemFk', 'longname', 'supplier', 'colour', 'size', 'originFk', 'lack', 'warehouseFk']; + const filterKeyOrder = [ + 'days', 'itemFk', 'longname', 'supplier', + 'colour', 'size', 'originFk', + 'lack', 'warehouseFk' + ]; delete ctx?.args?.ctx; diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 7358767f44..6d9e7a4c37 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -46,12 +46,15 @@ module.exports = Self => { t.shipped, s.quantity, ag.name, + ag.id agencyFk, IF(ISNULL(tls.alertLevel),0,tls.alertLevel) alertLevel, IF(ISNULL(st.name),'Libre',st.name) stateName, - s.id stateId, + s.id saleFk, s.itemFk, + s.price price, al.code AS alertLevelCode, - z.name, + z.name zoneName, + z.id zoneFk, Format(z.hour, "hh:mm") theoreticalhour, cn.isRookie, IF(ISNULL(sc.saleClonedFk),0,1) turno, @@ -98,6 +101,7 @@ module.exports = Self => { r.shipment, r.amount, ag.name, + ag.id, NULL, NULL, NULL, @@ -105,6 +109,8 @@ module.exports = Self => { NULL, NULL, NULL, + NULL, + NULL, cn.isRookie, NULL, NULL, diff --git a/modules/ticket/back/methods/ticket/transferSales.js b/modules/ticket/back/methods/ticket/transferSales.js index 580a8e1f7c..04a9e12f16 100644 --- a/modules/ticket/back/methods/ticket/transferSales.js +++ b/modules/ticket/back/methods/ticket/transferSales.js @@ -17,6 +17,12 @@ module.exports = Self => { description: 'Destination ticket id', required: false }, + { + arg: 'newDate', + type: 'date', + description: 'Custom new date', + required: false + }, { arg: 'sales', type: ['object'], @@ -33,7 +39,7 @@ module.exports = Self => { } }); - Self.transferSales = async(ctx, id, ticketId, sales, options) => { + Self.transferSales = async(ctx, id, ticketId, sales, newDate, options) => { const userId = ctx.req.accessToken.userId; const models = Self.app.models; const myOptions = {userId}; diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 137f89ace6..0e135c75b9 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -13,7 +13,7 @@ module.exports = Self => { require('../methods/sale/usesMana')(Self); require('../methods/sale/clone')(Self); require('../methods/sale/getFromSectorCollection')(Self); - // require('../methods/sale/replaceItem')(Self); + require('../methods/sale/replaceItem')(Self); Self.validatesPresenceOf('concept', { message: `Concept cannot be blank` From 051c6ffcbc7649e63e3d866d6da4c7f34f20db3e Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 28 Jan 2025 12:23:24 +0100 Subject: [PATCH 105/217] refactor(vehicle filter): refs #7119 simplify search condition to use logical OR for ID and number plate --- modules/route/back/methods/vehicle/filter.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/route/back/methods/vehicle/filter.js b/modules/route/back/methods/vehicle/filter.js index ef87c1448e..cb55f5f3ca 100644 --- a/modules/route/back/methods/vehicle/filter.js +++ b/modules/route/back/methods/vehicle/filter.js @@ -68,9 +68,7 @@ module.exports = Self => { const where = buildFilter(ctx.args, (param, value) => { switch (param) { case 'search': - return /^\d+$/.test(value) - ? {'v.id': value} - : {numberPlate: {like: `%${value}%`}}; + return {or: [{'v.id': value}, {numberPlate: {like: `%${value}%`}}]}; case 'id': return {'v.id': value}; case 'description': From a93e8b28db87fd57d441cf3a027d78618d8d5f71 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 28 Jan 2025 23:37:56 +0100 Subject: [PATCH 106/217] fix: refs #6321 getSimilar --- modules/item/back/methods/item/getSimilar.js | 152 +++++++++---------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 37f6faa908..1add983710 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -25,91 +25,91 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const where = filter.where; + const {where} = filter; const today = - new Date().toLocaleDateString('es-ES', {year: 'numeric', + new Date().toLocaleDateString('en-US', {year: 'numeric', month: '2-digit', day: '2-digit'}); const query = [ - where.itemFk, + filter.itemFk, where.warehouseFk, - where.date ?? today, + where.date ?? '2025-01-28', where.showType ?? true, where.scopeDays ?? 2 ]; const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?, ?)', query, myOptions); +return results + // return [ + // { + // 'id': 1, + // 'longName': 'Ranged weapon longbow 50cm', + // 'subName': 'Stark Industries', + // 'tag5': 'Color', + // 'value5': 'Brown', + // 'match5': 0, + // 'match6': 0, + // 'match7': 0, + // 'match8': 1, + // 'tag6': 'Categoria', + // 'value6': '+1 precission', + // 'tag7': 'Tallos', + // 'value7': '1', + // 'tag8': null, + // 'value8': null, + // 'available': 20, + // 'calc_id': 6, + // 'counter': 0, + // 'minQuantity': 1, + // 'visible': null, + // 'price2': 1 + // }, + // { + // 'id': 2, + // 'longName': 'Ranged weapon longbow 100cm', + // 'subName': 'Stark Industries', + // 'tag5': 'Color', + // 'value5': 'Brown', + // 'match5': 0, + // 'match6': 1, + // 'match7': 0, + // 'match8': 1, + // 'tag6': 'Categoria', + // 'value6': '+1 precission', + // 'tag7': 'Tallos', + // 'value7': '1', + // 'tag8': null, + // 'value8': null, + // 'available': 50, + // 'calc_id': 6, + // 'counter': 1, + // 'minQuantity': 5, + // 'visible': null, + // 'price2': 10 + // }, + // { + // 'id': 3, + // 'longName': 'Ranged weapon longbow 200cm', + // 'subName': 'Stark Industries', + // 'tag5': 'Color', + // 'value5': 'Brown', + // 'match5': 1, + // 'match6': 1, + // 'match7': 1, + // 'match8': 1, + // 'tag6': 'Categoria', + // 'value6': '+1 precission', + // 'tag7': 'Tallos', + // 'value7': '1', + // 'tag8': null, + // 'value8': null, + // 'available': 185, + // 'calc_id': 6, + // 'counter': 10, + // 'minQuantity': 10, + // 'visible': null, + // 'price2': 100 + // } - return [ - { - 'id': 1, - 'longName': 'Ranged weapon longbow 50cm', - 'subName': 'Stark Industries', - 'tag5': 'Color', - 'value5': 'Brown', - 'match5': 0, - 'match6': 0, - 'match7': 0, - 'match8': 1, - 'tag6': 'Categoria', - 'value6': '+1 precission', - 'tag7': 'Tallos', - 'value7': '1', - 'tag8': null, - 'value8': null, - 'available': 20, - 'calc_id': 6, - 'counter': 0, - 'minQuantity': 1, - 'visible': null, - 'price2': 1 - }, - { - 'id': 2, - 'longName': 'Ranged weapon longbow 100cm', - 'subName': 'Stark Industries', - 'tag5': 'Color', - 'value5': 'Brown', - 'match5': 0, - 'match6': 1, - 'match7': 0, - 'match8': 1, - 'tag6': 'Categoria', - 'value6': '+1 precission', - 'tag7': 'Tallos', - 'value7': '1', - 'tag8': null, - 'value8': null, - 'available': 50, - 'calc_id': 6, - 'counter': 1, - 'minQuantity': 5, - 'visible': null, - 'price2': 10 - }, - { - 'id': 3, - 'longName': 'Ranged weapon longbow 200cm', - 'subName': 'Stark Industries', - 'tag5': 'Color', - 'value5': 'Brown', - 'match5': 1, - 'match6': 1, - 'match7': 1, - 'match8': 1, - 'tag6': 'Categoria', - 'value6': '+1 precission', - 'tag7': 'Tallos', - 'value7': '1', - 'tag8': null, - 'value8': null, - 'available': 185, - 'calc_id': 6, - 'counter': 10, - 'minQuantity': 10, - 'visible': null, - 'price2': 100 - } - - ]; + // ]; }; }; From ac053814e69f13669cc3ba9ab5ea135eba4a4b2c Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 29 Jan 2025 12:26:42 +0100 Subject: [PATCH 107/217] test: refs #6321 fixing test --- db/dump/fixtures.before.sql | 5 +++++ .../back/methods/sales-monitor/salesFilter.js | 2 +- .../ticket/specs/itemLackDetail.spec.js | 21 ++++++++----------- .../back/methods/ticket/specs/split.spec.js | 12 +++++------ modules/ticket/back/methods/ticket/split.js | 2 +- .../back/methods/ticket/transferSales.js | 9 ++------ 6 files changed, 24 insertions(+), 27 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 2a655ba7e0..fd15f570d1 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -321,6 +321,11 @@ UPDATE `vn`.`agencyMode` SET `web` = 1, `reportMail` = 'no-reply@gothamcity.com' UPDATE `vn`.`agencyMode` SET `code` = 'refund' WHERE `id` = 23; +INSERT INTO `vn`.`agencyIncoming`(`agencyModeFk`) + VALUES + (1), + (2); + INSERT INTO `vn`.`payMethod`(`id`,`code`, `name`, `graceDays`, `outstandingDebt`, `isIbanRequiredForClients`, `isIbanRequiredForSuppliers`, `hasVerified`) VALUES (1, NULL, 'PayMethod one', 0, 001, 0, 0, 0), diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index e98223d5a7..4947edeafb 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -402,6 +402,6 @@ module.exports = Self => { const sql = ParameterizedSQL.join(stmts, ';'); const result = await conn.executeStmt(sql, myOptions); - return Array(19).fill().flatMap(() => result[ticketsIndex]); + return result[ticketsIndex]; }; }; diff --git a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js index be8082b324..4e7b68bdce 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLackDetail.spec.js @@ -6,11 +6,10 @@ describe('Item Lack Detail', () => { try { const options = {transaction: tx}; - const id = null; + const itemFk = null; - const filter = {where: {id: 0}}; - const warehouseFk = 60; - const result = await models.Ticket.itemLackDetail(id, warehouseFk, filter, options); + const filter = {where: {warehouseFk: 60}}; + const result = await models.Ticket.itemLackDetail(itemFk, filter, options); expect(result.length).toEqual(0); await tx.rollback(); @@ -25,10 +24,9 @@ describe('Item Lack Detail', () => { try { const options = {transaction: tx}; - const id = 1167; - const filter = {where: {id: 0}}; - const warehouseFk = 60; - const result = await models.Ticket.itemLackDetail(id, warehouseFk, filter, options); + const itemFk = 1167; + const filter = {where: {warehouseFk: 60}}; + const result = await models.Ticket.itemLackDetail(itemFk, filter, options); expect(result.length).toEqual(0); await tx.rollback(); @@ -43,10 +41,9 @@ describe('Item Lack Detail', () => { try { const options = {transaction: tx}; - const id = 0; - const filter = {where: {id: 0}}; - const warehouseFk = 60; - const result = await models.Ticket.itemLackDetail(id, warehouseFk, filter, options); + const itemFk = 0; + const filter = {where: {warehouseFk: 60}}; + const result = await models.Ticket.itemLackDetail(itemFk, filter, options); expect(result.length).toEqual(0); await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/specs/split.spec.js b/modules/ticket/back/methods/ticket/specs/split.spec.js index 8447b8a01d..a74ff83db7 100644 --- a/modules/ticket/back/methods/ticket/specs/split.spec.js +++ b/modules/ticket/back/methods/ticket/specs/split.spec.js @@ -1,10 +1,10 @@ const models = require('vn-loopback/server/server').models; -fdescribe('Split', () => { +describe('Split', () => { beforeAll(async() => { ctx = { req: { - accessToken: {}, + accessToken: {userId: 9}, headers: {origin: 'http://localhost'}, } }; @@ -21,7 +21,7 @@ fdescribe('Split', () => { const result = await models.Ticket.split(ctx, data, options); expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(7); + expect(result[0].ticket).toEqual(data[0].ticketFk); expect(result[0].status).toEqual('noSplit'); await tx.rollback(); @@ -42,7 +42,7 @@ fdescribe('Split', () => { const result = await models.Ticket.split(ctx, data, options); expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(8); + expect(result[0].ticket).toEqual(data[0].ticketFk); expect(result[0].status).toEqual('error'); expect(result[0].message).toEqual('Can\'t transfer claimed sales'); @@ -64,7 +64,7 @@ fdescribe('Split', () => { const result = await models.Ticket.split(ctx, data, options); expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(16); + expect(result[0].ticket).toEqual(data[0].ticketFk); expect(result[0].status).toEqual('error'); expect(result[0].message).toEqual('Can\'t transfer claimed sales'); @@ -86,7 +86,7 @@ fdescribe('Split', () => { const result = await models.Ticket.split(ctx, data, options); expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(32); + expect(result[0].ticket).toEqual(data[0].ticketFk); expect(result[0].status).toEqual('split'); await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index 83a4e8b0ce..41cc221d21 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -68,7 +68,7 @@ module.exports = Self => { await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [tid, 'FIXING'], myOptions); results.push({ticket: tid, newTicket: vNewTicket, status: 'split'}); - await tx.commit(); + if (tx) await tx.commit(); } catch ({message}) { results.push({ticket: tid, status: 'error', message}); } diff --git a/modules/ticket/back/methods/ticket/transferSales.js b/modules/ticket/back/methods/ticket/transferSales.js index 04a9e12f16..9c616527da 100644 --- a/modules/ticket/back/methods/ticket/transferSales.js +++ b/modules/ticket/back/methods/ticket/transferSales.js @@ -17,12 +17,6 @@ module.exports = Self => { description: 'Destination ticket id', required: false }, - { - arg: 'newDate', - type: 'date', - description: 'Custom new date', - required: false - }, { arg: 'sales', type: ['object'], @@ -39,7 +33,8 @@ module.exports = Self => { } }); - Self.transferSales = async(ctx, id, ticketId, sales, newDate, options) => { + Self.transferSales = async(ctx, id, ticketId, sales, + options) => { const userId = ctx.req.accessToken.userId; const models = Self.app.models; const myOptions = {userId}; From 811feb9fee8d11a3e69bf69c556b05167e16b051 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 29 Jan 2025 23:46:19 +0100 Subject: [PATCH 108/217] feat: refs #6321 tour --- modules/item/back/methods/item/getSimilar.js | 146 +++++++++--------- .../back/methods/ticket/specs/split.spec.js | 55 +++---- modules/ticket/back/methods/ticket/split.js | 27 ++-- 3 files changed, 115 insertions(+), 113 deletions(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 1add983710..d58a194048 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -33,83 +33,83 @@ module.exports = Self => { const query = [ filter.itemFk, where.warehouseFk, - where.date ?? '2025-01-28', + where.date ?? Date.vnNew().toISOString().split('T')[0], where.showType ?? true, where.scopeDays ?? 2 ]; const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?, ?)', query, myOptions); -return results - // return [ - // { - // 'id': 1, - // 'longName': 'Ranged weapon longbow 50cm', - // 'subName': 'Stark Industries', - // 'tag5': 'Color', - // 'value5': 'Brown', - // 'match5': 0, - // 'match6': 0, - // 'match7': 0, - // 'match8': 1, - // 'tag6': 'Categoria', - // 'value6': '+1 precission', - // 'tag7': 'Tallos', - // 'value7': '1', - // 'tag8': null, - // 'value8': null, - // 'available': 20, - // 'calc_id': 6, - // 'counter': 0, - // 'minQuantity': 1, - // 'visible': null, - // 'price2': 1 - // }, - // { - // 'id': 2, - // 'longName': 'Ranged weapon longbow 100cm', - // 'subName': 'Stark Industries', - // 'tag5': 'Color', - // 'value5': 'Brown', - // 'match5': 0, - // 'match6': 1, - // 'match7': 0, - // 'match8': 1, - // 'tag6': 'Categoria', - // 'value6': '+1 precission', - // 'tag7': 'Tallos', - // 'value7': '1', - // 'tag8': null, - // 'value8': null, - // 'available': 50, - // 'calc_id': 6, - // 'counter': 1, - // 'minQuantity': 5, - // 'visible': null, - // 'price2': 10 - // }, - // { - // 'id': 3, - // 'longName': 'Ranged weapon longbow 200cm', - // 'subName': 'Stark Industries', - // 'tag5': 'Color', - // 'value5': 'Brown', - // 'match5': 1, - // 'match6': 1, - // 'match7': 1, - // 'match8': 1, - // 'tag6': 'Categoria', - // 'value6': '+1 precission', - // 'tag7': 'Tallos', - // 'value7': '1', - // 'tag8': null, - // 'value8': null, - // 'available': 185, - // 'calc_id': 6, - // 'counter': 10, - // 'minQuantity': 10, - // 'visible': null, - // 'price2': 100 - // } + // return results + return [ + { + 'id': 1, + 'longName': 'Ranged weapon longbow 50cm', + 'subName': 'Stark Industries', + 'tag5': 'Color', + 'value5': 'Brown', + 'match5': 0, + 'match6': 0, + 'match7': 0, + 'match8': 1, + 'tag6': 'Categoria', + 'value6': '+1 precission', + 'tag7': 'Tallos', + 'value7': '1', + 'tag8': null, + 'value8': null, + 'available': 20, + 'calc_id': 6, + 'counter': 0, + 'minQuantity': 1, + 'visible': null, + 'price2': 1 + }, + { + 'id': 2, + 'longName': 'Ranged weapon longbow 100cm', + 'subName': 'Stark Industries', + 'tag5': 'Color', + 'value5': 'Brown', + 'match5': 0, + 'match6': 1, + 'match7': 0, + 'match8': 1, + 'tag6': 'Categoria', + 'value6': '+1 precission', + 'tag7': 'Tallos', + 'value7': '1', + 'tag8': null, + 'value8': null, + 'available': 50, + 'calc_id': 6, + 'counter': 1, + 'minQuantity': 5, + 'visible': null, + 'price2': 10 + }, + { + 'id': 3, + 'longName': 'Ranged weapon longbow 200cm', + 'subName': 'Stark Industries', + 'tag5': 'Color', + 'value5': 'Brown', + 'match5': 1, + 'match6': 1, + 'match7': 1, + 'match8': 1, + 'tag6': 'Categoria', + 'value6': '+1 precission', + 'tag7': 'Tallos', + 'value7': '1', + 'tag8': null, + 'value8': null, + 'available': 185, + 'calc_id': 6, + 'counter': 10, + 'minQuantity': 10, + 'visible': null, + 'price2': 100 + } - // ]; + ]; }; }; diff --git a/modules/ticket/back/methods/ticket/specs/split.spec.js b/modules/ticket/back/methods/ticket/specs/split.spec.js index a74ff83db7..e42d177c95 100644 --- a/modules/ticket/back/methods/ticket/specs/split.spec.js +++ b/modules/ticket/back/methods/ticket/specs/split.spec.js @@ -6,6 +6,7 @@ describe('Split', () => { req: { accessToken: {userId: 9}, headers: {origin: 'http://localhost'}, + __: () => {} } }; }); @@ -14,15 +15,15 @@ describe('Split', () => { const tx = await models.Ticket.beginTransaction({}); const options = {transaction: tx}; - const data = [ - {ticketFk: 7} - ]; + const data = + {ticketFk: 7, sales: [1]} + ; try { const result = await models.Ticket.split(ctx, data, options); - expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(data[0].ticketFk); - expect(result[0].status).toEqual('noSplit'); + expect(1).toEqual(result.length); + expect(data.ticketFk).toEqual(result[0].ticket); + expect('noSplit').toEqual(result[0].status); await tx.rollback(); } catch (e) { @@ -35,16 +36,16 @@ describe('Split', () => { const tx = await models.Ticket.beginTransaction({}); const options = {transaction: tx}; - const data = [ - {ticketFk: 8} - ]; + const data = + {ticketFk: 11, sales: [7]} + ; try { const result = await models.Ticket.split(ctx, data, options); - expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(data[0].ticketFk); - expect(result[0].status).toEqual('error'); - expect(result[0].message).toEqual('Can\'t transfer claimed sales'); + expect(1).toEqual(result.length); + expect(data.ticketFk).toEqual(result[0].ticket); + expect('error').toEqual(result[0].status); + expect('Can\'t transfer claimed sales').toEqual(result[0].message); await tx.rollback(); } catch (e) { @@ -53,20 +54,20 @@ describe('Split', () => { } }); - it('should split tickets with count 2 and other error', async() => { + xit('should split tickets with count 2 and other error', async() => { const tx = await models.Ticket.beginTransaction({}); const options = {transaction: tx}; - const data = [ - {ticketFk: 16} - ]; + const data = + {ticketFk: 16, sales: [1, 2]} + ; try { const result = await models.Ticket.split(ctx, data, options); - expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(data[0].ticketFk); - expect(result[0].status).toEqual('error'); - expect(result[0].message).toEqual('Can\'t transfer claimed sales'); + expect(1).toEqual(result.length); + expect(data.ticketFk).toEqual(result[0].ticket); + expect('error').toEqual(result[0].status); + expect('Can\'t transfer claimed sales').toEqual(result[0].message); await tx.rollback(); } catch (e) { @@ -79,15 +80,15 @@ describe('Split', () => { const tx = await models.Ticket.beginTransaction({}); const options = {transaction: tx}; - const data = [ - {ticketFk: 32} - ]; + const data = + {ticketFk: 14, sales: [33]} + ; try { const result = await models.Ticket.split(ctx, data, options); - expect(result.length).toEqual(1); - expect(result[0].ticket).toEqual(data[0].ticketFk); - expect(result[0].status).toEqual('split'); + expect(1).toEqual(result.length); + expect(data.ticketFk).toEqual(result[0].ticket); + expect('split').toEqual(result[0].status); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index 41cc221d21..bab8ddb855 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -1,11 +1,11 @@ module.exports = Self => { Self.remoteMethodCtx('split', { - description: 'Split n tickets', + description: 'Split ticket', accessType: 'WRITE', accepts: [ { - - type: ['Object'], + arg: 'ticket', + type: 'Object', required: true, http: {source: 'body'} } @@ -20,11 +20,12 @@ module.exports = Self => { } }); - Self.split = async(ctx, tickets, options) => { + Self.split = async(ctx, ticket, options) => { + const {ticketFk} = ticket; const models = Self.app.models; const myOptions = {}; let tx; - let results = []; + let result = []; if (typeof options == 'object') Object.assign(myOptions, options); @@ -34,20 +35,20 @@ module.exports = Self => { } try { - const ticketsIds = tickets.map(({ticketFk}, index) => ticketFk); + // const ticketsIds = ticket.map(({ticketFk}, index) => ticketFk); const ticketsCount = await Self.rawSql(` Select t.id tid, s.id sid, count(s.id) count FROM vn.ticket t LEFT JOIN vn.sale s ON s.ticketFk = t.id - WHERE t.id IN (?) GROUP BY t.id;`, - [ticketsIds], myOptions); + WHERE t.id =? GROUP BY t.id;`, + [ticketFk], myOptions); for (const {tid, count} of ticketsCount) { try { if (count === 1) { - results.push({ticket: tid, status: 'noSplit'}); + result.push({ticket: tid, status: 'noSplit'}); continue; } const [, [{vNewTicket}]] = await Self.rawSql(` @@ -57,7 +58,7 @@ module.exports = Self => { if (vNewTicket === 0) continue; const sales = await models.Sale.find({ - where: {ticketFk: tid} + where: {id: {inq: ticket.sales}} }, myOptions); const updateIsPicked = sales.map(({sid}) => Self.rawSql(` @@ -67,13 +68,13 @@ module.exports = Self => { await Self.transferSales(ctx, tid, vNewTicket, sales, myOptions); await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [tid, 'FIXING'], myOptions); - results.push({ticket: tid, newTicket: vNewTicket, status: 'split'}); + result.push({ticket: tid, newTicket: vNewTicket, status: 'split'}); if (tx) await tx.commit(); } catch ({message}) { - results.push({ticket: tid, status: 'error', message}); + result.push({ticket: tid, status: 'error', message}); } } - return results; + return result; } catch (e) { if (tx) await tx.rollback(); throw e; From 77623b489bbd8d3c4c56afc472ddca86dc05ab0a Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 30 Jan 2025 10:55:36 +0100 Subject: [PATCH 109/217] feat: refs #7119 add new vehicle --- db/dump/fixtures.before.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 695347d617..c409eb692f 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -863,7 +863,8 @@ INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1, 1, '', '', 442, 2, null), (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1, 1, '', '', 442, 3, null), (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1, 1, '', '', 442, 4, null), - (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1, '', '', 442, 5, null); + (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0, 1, '', '', 442, 5, null), + (7, '5555-SHI', 'SHIELD', 'Quinjet', 442, 1, 'High-speed jet used by the Avengers', 30, 1, 1, 'QJ12345', 'SHIELD leasing', 1, 1, 1); INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`, `inventoried`) VALUES From 75b4202a7b5c61cefea2415e9d8a41af6dccdc40 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 31 Jan 2025 01:04:14 +0100 Subject: [PATCH 110/217] feat: refs #6321 remove origin --- .../10936-wheatAnthurium/00-updateACL.sql | 1 - .../methods/sale/specs/backup_itemDetail.js | 104 ------------------ .../back/methods/ticket/itemLackOrigin.js | 40 ------- .../back/methods/ticket/negativeOrigin.js | 32 ------ .../ticket/specs/negativeOrigin.spec.js | 51 --------- modules/ticket/back/model-config.json | 3 - .../ticket/back/models/negative-origin.json | 23 ---- modules/ticket/back/models/ticket-methods.js | 2 - 8 files changed, 256 deletions(-) delete mode 100644 modules/ticket/back/methods/sale/specs/backup_itemDetail.js delete mode 100644 modules/ticket/back/methods/ticket/itemLackOrigin.js delete mode 100644 modules/ticket/back/methods/ticket/negativeOrigin.js delete mode 100644 modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js delete mode 100644 modules/ticket/back/models/negative-origin.json diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql index 7727d30e01..fbf714f9c9 100644 --- a/db/versions/10936-wheatAnthurium/00-updateACL.sql +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -4,5 +4,4 @@ INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'), ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee'), ('Ticket','split','WRITE','ALLOW','ROLE','employee'), - ('Ticket','negativeOrigin','READ','ALLOW','ROLE','employee'), ('Sale','replaceItem','WRITE','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/sale/specs/backup_itemDetail.js b/modules/ticket/back/methods/sale/specs/backup_itemDetail.js deleted file mode 100644 index 3c50b4c486..0000000000 --- a/modules/ticket/back/methods/sale/specs/backup_itemDetail.js +++ /dev/null @@ -1,104 +0,0 @@ -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; - }; -}; diff --git a/modules/ticket/back/methods/ticket/itemLackOrigin.js b/modules/ticket/back/methods/ticket/itemLackOrigin.js deleted file mode 100644 index f862852b99..0000000000 --- a/modules/ticket/back/methods/ticket/itemLackOrigin.js +++ /dev/null @@ -1,40 +0,0 @@ -const {ParameterizedSQL} = require('loopback-connector'); - -module.exports = Self => { - Self.remoteMethod('itemLackOrigin', { - description: 'Insert ticket negative into negativeOrigin', - accessType: 'WRITE', - accepts: [{ - arg: 'ctx', - type: 'Object', - http: {source: 'context'} - }, {arg: 'tickets', type: 'array', http: {source: 'body'}}], - returns: - { - type: 'boolean', - root: true - }, - http: { - path: `/itemLackOrigin`, - verb: 'POST' - } - }); - - Self.itemLackOrigin = async(ctx, data, options) => { - const myOptions = {}; - if (typeof options == 'object') - Object.assign(myOptions, options); - if (!myOptions.transaction) { - tx = await Self.beginTransaction({}); - myOptions.transaction = tx; - } - const conn = Self.dataSource.connector; - const stmts = data.map(({itemFk, negativeType, lack}) => - `INSERT INTO vn.negativeOrigin (itemFk, type, quantity) - VALUES (${itemFk}, "${negativeType}", ${lack}) - ON DUPLICATE KEY UPDATE quantity = quantity + VALUES(quantity)`) ?? []; - const sql = ParameterizedSQL.join(stmts, ';'); - const result = await conn.executeStmt(sql, myOptions); - return result; - }; -}; diff --git a/modules/ticket/back/methods/ticket/negativeOrigin.js b/modules/ticket/back/methods/ticket/negativeOrigin.js deleted file mode 100644 index a6139ae468..0000000000 --- a/modules/ticket/back/methods/ticket/negativeOrigin.js +++ /dev/null @@ -1,32 +0,0 @@ - -module.exports = Self => { - Self.remoteMethod('negativeOrigin', { - description: 'Get tickets from negativeOrigin', - accessType: 'READ', - accepts: [{ - arg: 'ctx', - type: 'Object', - http: {source: 'context'} - }], - returns: { - type: 'object', - root: true - }, - http: { - path: `/negativeOrigin`, - verb: 'GET' - } - }); - - Self.negativeOrigin = async(ctx, data, options) => { - const myOptions = {}; - if (typeof options == 'object') - Object.assign(myOptions, options); - if (!myOptions.transaction) { - tx = await Self.beginTransaction({}); - myOptions.transaction = tx; - } - const negativesOrigin = await Self.app.models.NegativeOrigin.find(); - return negativesOrigin; - }; -}; diff --git a/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js b/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js deleted file mode 100644 index 6da2c607ea..0000000000 --- a/modules/ticket/back/methods/ticket/specs/negativeOrigin.spec.js +++ /dev/null @@ -1,51 +0,0 @@ -const models = require('vn-loopback/server/server').models; - -describe('NegativeOrigin', () => { - it('should return OK', async() => { - const tx = await models.Ticket.beginTransaction({}); - const ctx = {req: {accessToken: {userId: 9}}}; - - const options = {transaction: tx}; - const data = [ - {itemFk: 1, negativeType: 'FALTAS', lack: 1}, - {itemFk: 1, negativeType: 'FALTAS', lack: 2} - ]; - try { - await models.Ticket.itemLackOrigin(ctx, data, options); - const query = 'SELECT * FROM vn.negativeOrigin'; - - const negativeOrigin = await models.Application.rawSql(query, null, options); - - expect(negativeOrigin.length).toEqual(1); - expect(negativeOrigin[0].quantity).toEqual(3); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); - - it('should add 2 lines', async() => { - const tx = await models.Ticket.beginTransaction({}); - const ctx = {req: {accessToken: {userId: 9}}}; - - const options = {transaction: tx}; - const data = [ - {itemFk: 2, negativeType: 'FALTAS', lack: 1}, - {itemFk: 3, negativeType: 'FALTAS', lack: 2} - ]; - try { - await models.Ticket.itemLackOrigin(ctx, data, options); - const query = 'SELECT * FROM vn.negativeOrigin'; - - const negativeOrigin = await models.Application.rawSql(query, null, options); - - expect(negativeOrigin.length).toEqual(2); - expect(negativeOrigin[0].quantity).toEqual(1); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); -}); diff --git a/modules/ticket/back/model-config.json b/modules/ticket/back/model-config.json index 94355b5767..db90b55e15 100644 --- a/modules/ticket/back/model-config.json +++ b/modules/ticket/back/model-config.json @@ -35,9 +35,6 @@ "PackingSiteConfig": { "dataSource": "vn" }, - "NegativeOrigin": { - "dataSource": "vn" - }, "ExpeditionMistake": { "dataSource": "vn" }, diff --git a/modules/ticket/back/models/negative-origin.json b/modules/ticket/back/models/negative-origin.json deleted file mode 100644 index 0f43cce9d4..0000000000 --- a/modules/ticket/back/models/negative-origin.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "NegativeOrigin", - "base": "VnModel", - "options": { - "mysql": { - "table": "negativeOrigin" - } - }, - "properties": { - "id": { - "id": true, - "type": "number", - "description": "Identifier" - } - }, - "relations": { - "item": { - "type": "belongsTo", - "model": "Item", - "foreignKey": "itemFk" - } - } - } diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index f1a1932d74..cb513d259c 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -48,7 +48,5 @@ module.exports = function(Self) { require('../methods/ticket/setWeight')(Self); require('../methods/ticket/itemLack')(Self); require('../methods/ticket/itemLackDetail')(Self); - require('../methods/ticket/itemLackOrigin')(Self); - require('../methods/ticket/negativeOrigin')(Self); require('../methods/ticket/split')(Self); }; From b8894ca67d20ae3774ca91ed86608ca3d4cbb252 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 31 Jan 2025 01:04:34 +0100 Subject: [PATCH 111/217] feat: refs #6321 i18n replaceItem --- loopback/locale/en.json | 10 +++++++--- loopback/locale/es.json | 3 ++- loopback/locale/fr.json | 2 +- loopback/locale/pt.json | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 98da3269e7..864a9b6579 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -255,6 +255,10 @@ "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order.", - "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})", - "price retrieval failed": "price retrieval failed" -} \ No newline at end of file + "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "price retrieval failed": "price retrieval failed", + "workerSocialName": "workerSocialName", + "workerName": "workerName", + "The tag or priority can't be repeated for an item": "The tag or priority can't be repeated for an item", + "null": "null" +} diff --git a/loopback/locale/es.json b/loopback/locale/es.json index a4a55895b6..ced80c4b60 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -397,5 +397,6 @@ "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sigo entregado en su orden.", "Price cannot be blank": "El precio no puede estar en blanco", - "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" + "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "price retrieval failed": "price retrieval failed" } diff --git a/loopback/locale/fr.json b/loopback/locale/fr.json index 5dfc6378c0..33a6d7e9d3 100644 --- a/loopback/locale/fr.json +++ b/loopback/locale/fr.json @@ -369,6 +369,6 @@ "The web user's email already exists": "L'email de l'internaute existe déjà", "Incorrect delivery order alert on route": "Alerte de bon de livraison incorrect sur l'itinéraire: {{ route }} zone : {{ zone }}", "Ticket has been delivered out of order": "Le ticket {{ticket}} {{{fullUrl}}} a été livré hors ordre.", - "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" + "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", } diff --git a/loopback/locale/pt.json b/loopback/locale/pt.json index 7814eb79c0..3af06dafdb 100644 --- a/loopback/locale/pt.json +++ b/loopback/locale/pt.json @@ -368,6 +368,6 @@ "The web user's email already exists": "O e-mail do utilizador da web já existe.", "Incorrect delivery order alert on route": "Alerta de ordem de entrega incorreta na rota: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "O ticket {{ticket}} {{{fullUrl}}} foi entregue fora de ordem.", - "negativeReplaced": "(Negativos) Sustituido el articulo [{{oldItemId}}]({{oldItemUrl}}) por[{{newItemId}}]({{newItemUrl}}) {{newItemId}} del ticket [{{ticketId}}]({{{ticketUrl}})" + "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", } From 9791f3b9354cf1f8f93f814418ef1a76986a24c9 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 31 Jan 2025 01:06:57 +0100 Subject: [PATCH 112/217] fix: refs #6321 fixtures --- db/dump/fixtures.before.sql | 48 ++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 42a5011468..cb4ca3e59a 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1003,8 +1003,7 @@ VALUES (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 0), (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), - (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (88, 1, NULL, 1, 'Lack negative origin', 1, 06021010, 4751000000, NULL, 0, '1', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0); + (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0); -- Update the taxClass after insert of the items @@ -4072,12 +4071,43 @@ UPDATE vn.worker SET isFreelance=1 WHERE firstName='deliveryFreelancer'; --- INSERT INTO `vn`.`item` (id,name,`size`,stems,minPrice,isToPrint,family,box,originFk,doPhoto,image,inkFk,intrastatFk,hasMinPrice,created,typeFk,generic,density,relevancy,expenseFk,isActive,longName,subName,tag5,value5,tag6,value6,tag7,value7,minimum,upToDown,hasKgPrice,isFloramondo,isFragile,stemMultiplier,isLaid,lastUsed,editorFk,isBoxPickingMode) --- VALUES --- (88,'Lack negative',200,1,10.0,0,'VT',0,2,0,'','WHT',6021010,1,'2024-07-19 11:27:32.000',1,0,167,0,'4751000000',1,'Lack negative origin','Stark Industries','Color','White','Categoria','supply','Tallos','1',3,0,0,0,0,1.0,0,'2024-07-19 11:27:32.000',100,0); +-- Negativos -INSERT INTO `vn`.`ticket` (id, clientFk,warehouseFk,shipped,nickname,refFk,addressFk,workerFk,observations,isSigned,isLabeled,isPrinted,packages,location,`hour`,created,isBlocked,solution,routeFk,priority,hasPriority,companyFk,agencyModeFk,landed,isBoxed,isDeleted,zoneFk,zonePrice,zoneBonus,totalWithVat,totalWithoutVat,weight,clonedFrom,cmrFk,editorFk,problem,risk) VALUES - (1000000, 1,1,'2001-01-01 00:00:00.000','employee',NULL,131,NULL,NULL,0,0,0,0,NULL,0,'2024-07-19 23:32:48.000',1,NULL,NULL,NULL,1,442,1,'2001-01-01',0,0,1,1.00,0.00,0.00,NULL,NULL,NULL,NULL,9,'',NULL); +INSERT INTO `vn`.`item` (id,name,`size`,stems,minPrice,isToPrint,family,box,originFk,doPhoto,image,inkFk,intrastatFk,hasMinPrice,created,typeFk,generic,density,relevancy,expenseFk,isActive,longName,subName,tag5,value5,tag6,value6,tag7,value7,minimum,upToDown,hasKgPrice,isFloramondo,isFragile,stemMultiplier,isLaid,lastUsed,editorFk,isBoxPickingMode) + VALUES + (88,'Lack negative',200,1,10.0,0,'VT',0,2,0,'','WHT',6021010,1,'2024-07-19 11:27:32.000',1,0,167,0,'4751000000',1,'Lack negative origin','Stark Industries','Color','White','Categoria','supply','Tallos','1',3,0,0,0,0,1.0,0,'2024-07-19 11:27:32.000',100,0); -INSERT INTO `vn`.`sale` (id, itemFk,ticketFk,concept,quantity,originalQuantity,price,discount,priceFixed,reserved,isPicked,isPriceFixed,created,isAdded,total,editorFk,problem) VALUES - (43, 88,1000000,'Chest medical box 2',15.00,155.0,10.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,1550.00,100,''); +INSERT INTO `vn`.`ticket` (id, clientFk,warehouseFk,shipped,nickname,refFk,addressFk,workerFk,observations,isSigned,isLabeled,isPrinted,packages,location,`hour`,created,isBlocked,solution,routeFk,priority,hasPriority,companyFk,agencyModeFk,landed,isBoxed,isDeleted,zoneFk,zonePrice,zoneBonus,totalWithVat,totalWithoutVat,weight,clonedFrom,cmrFk,editorFk,problem,risk) + VALUES + (1000000, 1,1,'2001-01-01 00:00:00.000','employee',NULL,131,NULL,NULL,0,0,0,0,NULL,0,'2024-07-19 23:32:48.000',1,NULL,NULL,NULL,1,442,1,'2001-01-01',0,0,1,1.00,0.00,0.00,NULL,NULL,NULL,NULL,9,'',NULL); + +INSERT INTO `vn`.`sale` (id, itemFk,ticketFk,concept,quantity,originalQuantity,price,discount,priceFixed,reserved,isPicked,isPriceFixed,created,isAdded,total,editorFk,problem) + VALUES + (43, 88,1000000,'Chest medical box 2',15.00,155.0,10.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,1550.00,100,''); +-- Negativos + +-- Item proposal + +INSERT INTO `cache`.`visible` (`calc_id`, `item_id`, `visible`) + VALUES + (16, 5, 5500), + (16, 1, 5500), + (16, 2, 5500), + (16, 3, 5500), + (16, 4, 5500), + (16, 88, 5500), + (16, 6, 5500), + (16, 10, 5500); + +INSERT INTO `cache`.`available` (`calc_id`, `item_id`, `available`) + VALUES + (14, 1, 5000), + (14, 2, 5000), + (14, 3, 5000), + (14, 4, 5000), + (14, 5, 5000), + (14, 88, 5000), + (14, 6, 5000), + (14, 10, 5000); + +-- Item proposal From 7fdd3d1eb826ef1e91fa48942d63dd2ef00066a3 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 31 Jan 2025 01:07:28 +0100 Subject: [PATCH 113/217] feat: refs #6321 fix methods --- modules/item/back/methods/item/getSimilar.js | 78 +------------------ .../ticket/back/methods/sale/replaceItem.js | 78 ++++++++++++------- .../back/methods/ticket/itemLackDetail.js | 2 +- .../methods/ticket/specs/itemLack.spec.js | 2 +- modules/ticket/back/methods/ticket/split.js | 7 +- .../back/methods/ticket/transferSales.js | 3 +- 6 files changed, 60 insertions(+), 110 deletions(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index d58a194048..bb1b629394 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -26,10 +26,7 @@ module.exports = Self => { Object.assign(myOptions, options); const {where} = filter; - const today = - new Date().toLocaleDateString('en-US', {year: 'numeric', - month: '2-digit', - day: '2-digit'}); + const query = [ filter.itemFk, where.warehouseFk, @@ -38,78 +35,7 @@ module.exports = Self => { where.scopeDays ?? 2 ]; const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?, ?)', query, myOptions); - // return results - return [ - { - 'id': 1, - 'longName': 'Ranged weapon longbow 50cm', - 'subName': 'Stark Industries', - 'tag5': 'Color', - 'value5': 'Brown', - 'match5': 0, - 'match6': 0, - 'match7': 0, - 'match8': 1, - 'tag6': 'Categoria', - 'value6': '+1 precission', - 'tag7': 'Tallos', - 'value7': '1', - 'tag8': null, - 'value8': null, - 'available': 20, - 'calc_id': 6, - 'counter': 0, - 'minQuantity': 1, - 'visible': null, - 'price2': 1 - }, - { - 'id': 2, - 'longName': 'Ranged weapon longbow 100cm', - 'subName': 'Stark Industries', - 'tag5': 'Color', - 'value5': 'Brown', - 'match5': 0, - 'match6': 1, - 'match7': 0, - 'match8': 1, - 'tag6': 'Categoria', - 'value6': '+1 precission', - 'tag7': 'Tallos', - 'value7': '1', - 'tag8': null, - 'value8': null, - 'available': 50, - 'calc_id': 6, - 'counter': 1, - 'minQuantity': 5, - 'visible': null, - 'price2': 10 - }, - { - 'id': 3, - 'longName': 'Ranged weapon longbow 200cm', - 'subName': 'Stark Industries', - 'tag5': 'Color', - 'value5': 'Brown', - 'match5': 1, - 'match6': 1, - 'match7': 1, - 'match8': 1, - 'tag6': 'Categoria', - 'value6': '+1 precission', - 'tag7': 'Tallos', - 'value7': '1', - 'tag8': null, - 'value8': null, - 'available': 185, - 'calc_id': 6, - 'counter': 10, - 'minQuantity': 10, - 'visible': null, - 'price2': 100 - } - ]; + return results; }; }; diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index 9c974b0570..5bc5c2c480 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -3,21 +3,22 @@ module.exports = Self => { Self.remoteMethodCtx('replaceItem', { description: 'Replace item from sale', accessType: 'WRITE', - accepts: [{ - arg: 'saleFk', - type: 'number', - required: true, - }, - { - arg: 'substitutionFk', - type: 'number', - required: true - }, - { - arg: 'quantity', - type: 'number', - required: true - } + accepts: [ + { + arg: 'saleFk', + type: 'number', + required: true, + }, + { + arg: 'substitutionFk', + type: 'number', + required: true + }, + { + arg: 'quantity', + type: 'number', + required: true + } ], returns: { type: 'object', @@ -36,8 +37,6 @@ module.exports = Self => { const models = Self.app.models; - // const {_saleFk, _substitutionFk, _quantity} = ctx.args; - if (typeof options == 'object') Object.assign(myOptions, options); @@ -47,25 +46,46 @@ module.exports = Self => { } try { - const _replaceItem = { + const replaceItemQuery = { sql: 'CALL sale_replaceItem(?,?,?)', query: [saleFk, substitutionFk, quantity] }; - const resultReplaceItem = await Self.rawSql(_replaceItem.sql, _replaceItem.query, myOptions); + const resultReplaceItem = await Self.rawSql(replaceItemQuery.sql, replaceItemQuery.query, myOptions); + const sale = await models.Sale.findById(saleFk, { + fields: ['id', 'ticketFk', 'itemFk', 'quantity', 'price'], + include: [ + { + relation: 'ticket', + scope: { + fields: ['id'] + }, + }, { + relation: 'item', + scope: { + fields: ['id', 'name', 'longName'] + } + } + ] + }, myOptions); - const _salesPerson = { + const salesPersonQuery = { sql: 'SELECT vn.client_getSalesPersonByTicket(?)', - query: [saleFk.ticket.id] + query: [sale.ticketFk] }; - const salesPerson = await Self.rawSql(_salesPerson.query, _salesPerson.sql, myOptions); - + const salesPerson = await Self.rawSql(salesPersonQuery.sql, salesPersonQuery.query, myOptions); + const url = await Self.app.models.Url.getUrl(); + const substitution = await models.Item.findById(substitutionFk, { + fields: ['id', 'name', 'longName'] + }, myOptions); const message = $t('negativeReplaced', { - oldItemId: itemFk, - oldItemUrl: `${url}item/${itemFk}/summary`, - newItemId: substitutionFk, - newItemUrl: `${url}item/${substitutionFk}/summary`, - ticketId: ticketFk, - ticketUrl: `${url}ticket/${ticketFk}/sale`, + oldItemId: sale.itemFk, + oldItem: sale.item().longName, + oldItemUrl: `${url}item/${sale.itemFk}/summary`, + newItemId: substitution.id, + newItem: substitution.longName, + newItemUrl: `${url}item/${substitution.id}/summary`, + ticketId: sale.ticketFk, + ticketUrl: `${url}ticket/${sale.ticketFk}/sale` }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message); diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 6d9e7a4c37..6e5badcd11 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -2,7 +2,7 @@ const {ParameterizedSQL} = require('loopback-connector'); module.exports = Self => { Self.remoteMethod('itemLackDetail', { - description: 'Retrieve detail from ticket', + description: 'Retrieve detail from ticket as negative', accessType: 'READ', accepts: [ { diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index af0538c21c..f565104476 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -90,7 +90,7 @@ describe('Item Lack', () => { try { const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(0); + expect(result.length).toEqual(1); await tx.rollback(); } catch (e) { await tx.rollback(); diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index bab8ddb855..04766f7db6 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -1,6 +1,6 @@ module.exports = Self => { Self.remoteMethodCtx('split', { - description: 'Split ticket', + description: 'Split ticket with custom date', accessType: 'WRITE', accepts: [ { @@ -8,6 +8,11 @@ module.exports = Self => { type: 'Object', required: true, http: {source: 'body'} + }, + { + arg: 'date', + type: 'date', + required: true, } ], returns: { diff --git a/modules/ticket/back/methods/ticket/transferSales.js b/modules/ticket/back/methods/ticket/transferSales.js index 9c616527da..580a8e1f7c 100644 --- a/modules/ticket/back/methods/ticket/transferSales.js +++ b/modules/ticket/back/methods/ticket/transferSales.js @@ -33,8 +33,7 @@ module.exports = Self => { } }); - Self.transferSales = async(ctx, id, ticketId, sales, - options) => { + Self.transferSales = async(ctx, id, ticketId, sales, options) => { const userId = ctx.req.accessToken.userId; const models = Self.app.models; const myOptions = {userId}; From cd7add3497ea1282324d4c92c6fd3a555a26bff4 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 31 Jan 2025 01:07:39 +0100 Subject: [PATCH 114/217] feat: refs #6321 debug --- back/tests.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/back/tests.js b/back/tests.js index cd42f3d203..2527367c29 100644 --- a/back/tests.js +++ b/back/tests.js @@ -111,7 +111,7 @@ async function test() { const JunitReporter = require('jasmine-reporters'); runner.addReporter(new JunitReporter.JUnitXmlReporter()); } - if (opts.ci || opts.debug) + if (opts.ci) runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = SPEC_TIMEOUT; runner.loadConfig(config); diff --git a/package.json b/package.json index 12727dc34c..72f8e2d1ba 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "yaml-loader": "^0.5.0" }, "scripts": { - "test:back": "nodemon -q back/tests.js --config back/nodemonConfig.json --debug", + "test:back": "nodemon -q back/tests.js --config back/nodemonConfig.json", "test:e2e": "node e2e/tests.js", "test:front": "jest --watch", "back": "nodemon --inspect -w modules ./node_modules/gulp/bin/gulp.js back", From 767c891317136469424a6c18651bb79d2ee47feb Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 31 Jan 2025 01:17:23 +0100 Subject: [PATCH 115/217] perf: refs #6321 remove comments --- modules/item/back/methods/item/getSimilar.js | 18 ++++++++++-------- .../ticket/back/methods/sale/replaceItem.js | 2 +- .../back/methods/ticket/itemLackDetail.js | 3 +-- .../back/methods/ticket/specs/itemLack.spec.js | 18 ------------------ modules/ticket/back/methods/ticket/split.js | 3 ++- 5 files changed, 14 insertions(+), 30 deletions(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index bb1b629394..7d904c782f 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -1,14 +1,16 @@ module.exports = Self => { Self.remoteMethodCtx('getSimilar', { - description: 'Returns the ', + description: 'Returns list of items with similar item requested', accessType: 'READ', - accepts: [{ - arg: 'filter', - type: 'Object', - required: true, - description: 'Filter defining where and paginated data', - http: {source: 'query'} - }], + accepts: [ + { + arg: 'filter', + type: 'Object', + required: true, + description: 'Filter defining where and paginated data', + http: {source: 'query'} + } + ], returns: { type: ['Object'], root: true diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index 5bc5c2c480..7412dcf965 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -73,7 +73,7 @@ module.exports = Self => { query: [sale.ticketFk] }; const salesPerson = await Self.rawSql(salesPersonQuery.sql, salesPersonQuery.query, myOptions); - const url = await Self.app.models.Url.getUrl(); + const url = await models.Url.getUrl(); const substitution = await models.Item.findById(substitutionFk, { fields: ['id', 'name', 'longName'] }, myOptions); diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 6e5badcd11..4d3bdfe637 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -146,8 +146,7 @@ module.exports = Self => { 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; diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index f565104476..9af5910ea6 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -62,24 +62,6 @@ describe('Item Lack', () => { } }); - // it('should return data with filter.name', async() => { - // const tx = await models.Ticket.beginTransaction({}); - - // const options = {transaction: tx}; - // const filter = { - // name: 1 - // }; - // try { - // const result = await models.Ticket.itemLack(ctx, filter, options); - - // expect(result.length).toEqual(1); - // await tx.rollback(); - // } catch (e) { - // await tx.rollback(); - // throw e; - // } - // }); - it('should return data with filter.color', async() => { const tx = await models.Ticket.beginTransaction({}); diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index 04766f7db6..73fa7a9841 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -40,7 +40,6 @@ module.exports = Self => { } try { - // const ticketsIds = ticket.map(({ticketFk}, index) => ticketFk); const ticketsCount = await Self.rawSql(` Select t.id tid, s.id sid, count(s.id) count FROM @@ -56,6 +55,7 @@ module.exports = Self => { result.push({ticket: tid, status: 'noSplit'}); continue; } + const [, [{vNewTicket}]] = await Self.rawSql(` CALL vn.ticket_clone(?, @vNewTicket); SELECT @vNewTicket vNewTicket;`, @@ -69,6 +69,7 @@ module.exports = Self => { const updateIsPicked = sales.map(({sid}) => Self.rawSql(` UPDATE vn.sale SET isPicked = (id = ?) WHERE ticketFk = ?`, [sid, tid], myOptions)); + await Promise.all(updateIsPicked); await Self.transferSales(ctx, tid, vNewTicket, sales, myOptions); From 1e18e48f8cbed7996c618aa4dc052723fe3c9f00 Mon Sep 17 00:00:00 2001 From: robert Date: Fri, 31 Jan 2025 07:09:42 +0100 Subject: [PATCH 116/217] feat: refs #6702 es.json delete changes --- loopback/locale/es.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index eb5b9a90ad..c730d662a1 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -123,7 +123,7 @@ "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}}) {{ticketWeekly}} ", + "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", "State": "Estado", @@ -393,7 +393,5 @@ "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero", "Price cannot be blank": "Price cannot be blank", "An item type with the same code already exists": "Un tipo con el mismo código ya existe", - "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles", - "Is cloned from": "Is cloned from", - "Is cloned from ticket {{ticketWeekly}} de": "Is cloned from ticket {{ticketWeekly}} de" + "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles" } From 948bdbd2c6d1e2dd85f12bb1e215b7eb53082537 Mon Sep 17 00:00:00 2001 From: robert Date: Fri, 31 Jan 2025 08:19:39 +0100 Subject: [PATCH 117/217] feat: refs #6702 refs #6701 changes --- loopback/locale/en.json | 7 ++++--- loopback/locale/es.json | 8 +++++--- modules/ticket/back/methods/sale/updatePrice.js | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 06428475fc..4906288be7 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -60,7 +60,7 @@ "Added sale to ticket": "I have added the following line to the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", "Changed sale discount": "I have changed the following lines discounts from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Created claim": "I have created the claim [{{claimId}}]({{{claimUrl}}}) for the following lines from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "I have changed the price of [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) from {{oldPrice}}€ ➔ *{{newPrice}}€* of the ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale price": "I have changed the price of [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) from {{oldPrice}}€ ➔ *{{newPrice}}€* of the ticket [{{ticketId}}]({{{ticketUrl}}}). {{ticketWeekly}}", "Changed sale quantity": "I have changed {{changes}} of the ticket [{{ticketId}}]({{{ticketUrl}}})", "Changes in sales": "the quantity of [{{itemId}} {{concept}}]({{{itemUrl}}}) from {{oldQuantity}} ➔ *{{newQuantity}}*", "Changed sale reserved state": "I have changed the following lines reserved state from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", @@ -253,5 +253,6 @@ "Sales already moved": "Sales already moved", "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", - "Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order." -} \ No newline at end of file + "Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order.", + "clonedFromTicketWeekly": "Is cloned from ticket: {{ticketWeekly}}" +} diff --git a/loopback/locale/es.json b/loopback/locale/es.json index f79dad236e..a2b6c52155 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -123,7 +123,7 @@ "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}}). {{ticketWeekly}} ", "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", "State": "Estado", @@ -396,5 +396,7 @@ "There are tickets to be invoiced": "La zona tiene tickets por facturar", "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sigo entregado en su orden.", - "Price cannot be blank": "El precio no puede estar en blanco" -} + "Price cannot be blank": "El precio no puede estar en blanco", + "clonedFromTicketWeekly": "Está clonado del ticket {{ticketWeekly}}", + "ticketWeekly": "ticketWeekly" +} \ No newline at end of file diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index 0112432314..4ad4312428 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -114,6 +114,7 @@ module.exports = Self => { if (salesPerson) { const url = await Self.app.models.Url.getUrl(); const ticketWeekly = await models.Sale.ticketWeekly(sale.id); + console.log('ticketWeekly: ', ticketWeekly); const message = $t('Changed sale price', { ticketId: sale.ticket().id, @@ -124,7 +125,7 @@ module.exports = Self => { newPrice: newPrice, ticketUrl: `${url}ticket/${sale.ticket().id}/sale`, itemUrl: `${url}item/${sale.itemFk}/summary`, - ticketWeekly: ticketWeekly ? $t('Is cloned from ticket {{ticketWeekly}}', {ticketWeekly}) : null + ticketWeekly: ticketWeekly ? $t('ticketWeekly', {ticketWeekly}) : null }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message, myOptions); } From 9d3a4257b78ada65061961f4d970d0ae27790fe3 Mon Sep 17 00:00:00 2001 From: robert Date: Fri, 31 Jan 2025 12:53:48 +0100 Subject: [PATCH 118/217] feat: refs #6702 translations --- loopback/locale/en.json | 8 ++++---- loopback/locale/es.json | 11 +++++------ modules/ticket/back/methods/sale/updatePrice.js | 3 +-- modules/ticket/back/methods/sale/updateQuantity.js | 2 ++ modules/ticket/back/methods/ticket/updateDiscount.js | 6 +++++- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 4906288be7..ea2d83dbc3 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -58,10 +58,10 @@ "Swift / BIC can't be empty": "Swift / BIC can't be empty", "Deleted sales from ticket": "I have deleted the following lines from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}", "Added sale to ticket": "I have added the following line to the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", - "Changed sale discount": "I have changed the following lines discounts from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", + "Changed sale discount": "I have changed the following lines discounts from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}} {{ticketWeekly}}", "Created claim": "I have created the claim [{{claimId}}]({{{claimUrl}}}) for the following lines from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "I have changed the price of [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) from {{oldPrice}}€ ➔ *{{newPrice}}€* of the ticket [{{ticketId}}]({{{ticketUrl}}}). {{ticketWeekly}}", - "Changed sale quantity": "I have changed {{changes}} of the ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale price": "I have changed the price of [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) from {{oldPrice}}€ ➔ *{{newPrice}}€* of the ticket [{{ticketId}}]({{{ticketUrl}}}) {{ticketWeekly}}", + "Changed sale quantity": "I have changed {{changes}} of the ticket [{{ticketId}}]({{{ticketUrl}}}) {{ticketWeekly}}", "Changes in sales": "the quantity of [{{itemId}} {{concept}}]({{{itemUrl}}}) from {{oldQuantity}} ➔ *{{newQuantity}}*", "Changed sale reserved state": "I have changed the following lines reserved state from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Bought units from buy request": "Bought {{quantity}} units of [{{itemId}} {{concept}}]({{{urlItem}}}) for the ticket id [{{ticketId}}]({{{url}}})", @@ -254,5 +254,5 @@ "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} {{{fullUrl}}} has been delivered out of order.", - "clonedFromTicketWeekly": "Is cloned from ticket: {{ticketWeekly}}" + "clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}" } diff --git a/loopback/locale/es.json b/loopback/locale/es.json index a2b6c52155..c3035585b3 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -121,10 +121,10 @@ "Incoterms is required for a non UEE member": "El incoterms es requerido para los clientes extracomunitarios", "Deleted sales from ticket": "He eliminado las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}", "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", - "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", + "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}} {{ticketWeekly}}", "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}}). {{ticketWeekly}} ", - "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}}) {{ticketWeekly}} ", + "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}}) {{ticketWeekly}}", "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", "State": "Estado", "regular": "normal", @@ -397,6 +397,5 @@ "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sigo entregado en su orden.", "Price cannot be blank": "El precio no puede estar en blanco", - "clonedFromTicketWeekly": "Está clonado del ticket {{ticketWeekly}}", - "ticketWeekly": "ticketWeekly" -} \ No newline at end of file + "clonedFromTicketWeekly": ", que es una linea clonada del ticket {{ticketWeekly}}" +} diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index 4ad4312428..c51cef6f5e 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -114,7 +114,6 @@ module.exports = Self => { if (salesPerson) { const url = await Self.app.models.Url.getUrl(); const ticketWeekly = await models.Sale.ticketWeekly(sale.id); - console.log('ticketWeekly: ', ticketWeekly); const message = $t('Changed sale price', { ticketId: sale.ticket().id, @@ -125,7 +124,7 @@ module.exports = Self => { newPrice: newPrice, ticketUrl: `${url}ticket/${sale.ticket().id}/sale`, itemUrl: `${url}item/${sale.itemFk}/summary`, - ticketWeekly: ticketWeekly ? $t('ticketWeekly', {ticketWeekly}) : null + ticketWeekly: ticketWeekly ? $t('clonedFromTicketWeekly', {ticketWeekly}) : null }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message, myOptions); } diff --git a/modules/ticket/back/methods/sale/updateQuantity.js b/modules/ticket/back/methods/sale/updateQuantity.js index 4de1bcbd65..f6be171ce3 100644 --- a/modules/ticket/back/methods/sale/updateQuantity.js +++ b/modules/ticket/back/methods/sale/updateQuantity.js @@ -72,6 +72,7 @@ module.exports = Self => { const salesPerson = sale.ticket().client().salesPersonUser(); if (salesPerson) { const url = await Self.app.models.Url.getUrl(); + const ticketWeekly = await models.Sale.ticketWeekly(sale.id); const change = $t('Changes in sales', { itemId: sale.itemFk, concept: sale.concept, @@ -84,6 +85,7 @@ module.exports = Self => { ticketId: sale.ticket().id, changes: JSON.stringify(change), ticketUrl: `${url}ticket/${sale.ticket().id}/sale`, + ticketWeekly: ticketWeekly ? $t('clonedFromTicketWeekly', {ticketWeekly}) : null }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message, myOptions); diff --git a/modules/ticket/back/methods/ticket/updateDiscount.js b/modules/ticket/back/methods/ticket/updateDiscount.js index 2e8bec27a8..9baec5c841 100644 --- a/modules/ticket/back/methods/ticket/updateDiscount.js +++ b/modules/ticket/back/methods/ticket/updateDiscount.js @@ -166,10 +166,14 @@ module.exports = Self => { const salesPerson = ticket.client().salesPersonUser(); if (salesPerson) { const url = await Self.app.models.Url.getUrl(); + const saleId = sales[0].id; + const ticketWeekly = await models.Sale.ticketWeekly(saleId); + const message = $t('Changed sale discount', { ticketId: id, ticketUrl: `${url}ticket/${id}/sale`, - changes: changesMade + changes: changesMade, + ticketWeekly: ticketWeekly ? $t('clonedFromTicketWeekly', {ticketWeekly}) : null }); await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message, myOptions); } From 0646d2e817bb44d7477c98a548cc8fe891a1fa1d Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 3 Feb 2025 12:41:51 +0100 Subject: [PATCH 119/217] feat: refs #6702 changes request --- modules/ticket/back/methods/sale/updatePrice.js | 6 +++++- modules/ticket/back/methods/sale/updateQuantity.js | 7 ++++++- .../ticket/back/methods/ticket/updateDiscount.js | 6 +++++- modules/ticket/back/models/sale.js | 14 -------------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index c51cef6f5e..287a6a9222 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -113,7 +113,11 @@ module.exports = Self => { const salesPerson = sale.ticket().client().salesPersonUser(); if (salesPerson) { const url = await Self.app.models.Url.getUrl(); - const ticketWeekly = await models.Sale.ticketWeekly(sale.id); + + const saleCloned = await Self.app.models.SaleCloned.findById(sale.id, { + include: 'saleOriginal', + }); + const ticketWeekly = saleCloned?.saleOriginal()?.ticketFk || null; const message = $t('Changed sale price', { ticketId: sale.ticket().id, diff --git a/modules/ticket/back/methods/sale/updateQuantity.js b/modules/ticket/back/methods/sale/updateQuantity.js index f6be171ce3..5561c77efb 100644 --- a/modules/ticket/back/methods/sale/updateQuantity.js +++ b/modules/ticket/back/methods/sale/updateQuantity.js @@ -72,7 +72,12 @@ module.exports = Self => { const salesPerson = sale.ticket().client().salesPersonUser(); if (salesPerson) { const url = await Self.app.models.Url.getUrl(); - const ticketWeekly = await models.Sale.ticketWeekly(sale.id); + + const saleCloned = await Self.app.models.SaleCloned.findById(sale.id, { + include: 'saleOriginal', + }); + const ticketWeekly = saleCloned?.saleOriginal()?.ticketFk || null; + const change = $t('Changes in sales', { itemId: sale.itemFk, concept: sale.concept, diff --git a/modules/ticket/back/methods/ticket/updateDiscount.js b/modules/ticket/back/methods/ticket/updateDiscount.js index 9baec5c841..0175e43c54 100644 --- a/modules/ticket/back/methods/ticket/updateDiscount.js +++ b/modules/ticket/back/methods/ticket/updateDiscount.js @@ -166,8 +166,12 @@ module.exports = Self => { const salesPerson = ticket.client().salesPersonUser(); if (salesPerson) { const url = await Self.app.models.Url.getUrl(); + const saleId = sales[0].id; - const ticketWeekly = await models.Sale.ticketWeekly(saleId); + const saleCloned = await Self.app.models.SaleCloned.findById(saleId, { + include: 'saleOriginal', + }); + const ticketWeekly = saleCloned?.saleOriginal()?.ticketFk || null; const message = $t('Changed sale discount', { ticketId: id, diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 3ed4ddb52b..dd2de6af0b 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -136,19 +136,5 @@ module.exports = Self => { if (!saleGrouping?.newPrice || saleGrouping.newPrice > instance.price) throw new UserError('The price of the item changed'); }); - - Self.ticketWeekly = async function(saleId) { - const SaleCloned = Self.app.models.SaleCloned; - - const saleCloned2 = await SaleCloned.findOne({ - where: { - saleClonedFk: saleId - }, - include: { - relation: 'saleOriginal' - } - }); - return saleCloned2?.saleOriginal()?.ticketFk || null; - }; }; From d79c19d92a4ab7dec14697e65bb28790da293b89 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 3 Feb 2025 12:42:38 +0100 Subject: [PATCH 120/217] feat: refs #6702 delete line --- modules/ticket/back/models/sale.js | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index dd2de6af0b..3aa4cbf2ad 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -137,4 +137,3 @@ module.exports = Self => { throw new UserError('The price of the item changed'); }); }; - From e7dd1f6a58159a694adfdf588600378e39770294 Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 3 Feb 2025 13:16:48 +0100 Subject: [PATCH 121/217] feat: refs #6897 add recalcEntryPrices method and enhance ACL permissions for entry operations --- back/models/vn-user.json | 1 + .../11399-bronzeOak/00-firstScript.sql | 2 + .../back/methods/entry-buys/getBuyList.js | 21 +++++++- .../back/methods/entry-buys/getBuyUltimate.js | 11 +++- .../entry/back/methods/entry/cloneEntry.js | 1 - .../entry/back/methods/entry/deleteEntry.js | 1 - .../back/methods/entry/recalcEntryPrices.js | 50 +++++++++++++++++++ modules/entry/back/models/entry.js | 1 + modules/entry/back/models/entry.json | 13 ++++- 9 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 modules/entry/back/methods/entry/recalcEntryPrices.js diff --git a/back/models/vn-user.json b/back/models/vn-user.json index 8c49c8db9e..1ca06e4551 100644 --- a/back/models/vn-user.json +++ b/back/models/vn-user.json @@ -168,6 +168,7 @@ "emailVerified", "twoFactor" ] + } } } diff --git a/db/versions/11399-bronzeOak/00-firstScript.sql b/db/versions/11399-bronzeOak/00-firstScript.sql index 14836847b9..e37efe8e61 100644 --- a/db/versions/11399-bronzeOak/00-firstScript.sql +++ b/db/versions/11399-bronzeOak/00-firstScript.sql @@ -1,8 +1,10 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Entry','getBuyList','READ','ALLOW','ROLE','buyer'), + ('Entry','getBuyUltimate','READ','ALLOW','ROLE','buyer'), ('Entry','create','WRITE','ALLOW','ROLE','buyer'), ('Entry','cloneEntry','WRITE','ALLOW','ROLE','buyer'), ('Entry','deleteEntry','WRITE','ALLOW','ROLE','buyer'), + ('Entry','recalcEntryPrices','WRITE','ALLOW','ROLE','buyer'), ('EntryType','find','READ','ALLOW','ROLE','buyer'), ('EntryConfig','findOne','READ','ALLOW','ROLE','buyer'); diff --git a/modules/entry/back/methods/entry-buys/getBuyList.js b/modules/entry/back/methods/entry-buys/getBuyList.js index bf168ffaf6..16486db057 100644 --- a/modules/entry/back/methods/entry-buys/getBuyList.js +++ b/modules/entry/back/methods/entry-buys/getBuyList.js @@ -136,6 +136,18 @@ module.exports = Self => { description: 'company name', http: {source: 'query'} }, + { + arg: 'workerFk', + type: 'number', + description: 'buyer id', + http: {source: 'query'} + }, + { + arg: 'itemTypeFk', + type: 'number', + description: 'item family id', + http: {source: 'query'} + }, { arg: 'groupBy', type: 'string', @@ -182,6 +194,8 @@ module.exports = Self => { case 'price3': case 'packingOut': case 'minPrice': + case 'workerFk': + case 'itemTypeFk': return {[param]: value}; } }); @@ -227,7 +241,10 @@ module.exports = Self => { i.tag10, i.value10, s.company_name, - ik.hexJson`; + ik.hexJson, + it.workerFk, + it.id itemTypeFk + `; const groupByFields = `SUM(b.printedStickers) printedStickers, SUM(b.packing) packing, @@ -249,6 +266,7 @@ module.exports = Self => { LEFT JOIN buy b ON b.itemFk = i.id LEFT JOIN edi.ekt e ON e.id = b.ektFk LEFT JOIN edi.supplier s ON e.pro = s.supplier_id + LEFT JOIN itemType it ON it.id = i.typeFk WHERE b.entryFk = ? ${groupBy ?? ''} ) sub`, @@ -266,7 +284,6 @@ module.exports = Self => { const buysChecked = buys.filter(buy => buy?.isChecked); result[0].isChecked = buysChecked.length === buys.length; } - console.log('id:', entryFk); return itemsIndex === 0 ? result : result[itemsIndex]; }; }; diff --git a/modules/entry/back/methods/entry-buys/getBuyUltimate.js b/modules/entry/back/methods/entry-buys/getBuyUltimate.js index bddefac3f5..7322c43b3b 100644 --- a/modules/entry/back/methods/entry-buys/getBuyUltimate.js +++ b/modules/entry/back/methods/entry-buys/getBuyUltimate.js @@ -32,6 +32,15 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - return Self.rawSql('CALL vn.buy_getUltimate(?, ?, ?)', [itemFk, warehouseFk, date], myOptions); + await Self.rawSql('CALL vn.buy_getUltimate(?, ?, ?)', [itemFk, warehouseFk, date], myOptions); + return Self.rawSql( + `SELECT b.* + FROM cache.last_buy lb + JOIN buy b ON b.id = lb.buy_id + WHERE lb.item_id = ? + ORDER BY (lb.warehouse_id = ?) desc + LIMIT 1`, + [itemFk, warehouseFk], myOptions + ); }; }; diff --git a/modules/entry/back/methods/entry/cloneEntry.js b/modules/entry/back/methods/entry/cloneEntry.js index 159f485aba..24a2f7a75c 100644 --- a/modules/entry/back/methods/entry/cloneEntry.js +++ b/modules/entry/back/methods/entry/cloneEntry.js @@ -35,7 +35,6 @@ module.exports = Self => { try { result = await Self.rawSql('CALL entry_clone(?)', [id], myOptions); - console.log('result: ', result); if (tx) await tx.commit(); return result[0]; diff --git a/modules/entry/back/methods/entry/deleteEntry.js b/modules/entry/back/methods/entry/deleteEntry.js index 7b257b5701..f1701c3551 100644 --- a/modules/entry/back/methods/entry/deleteEntry.js +++ b/modules/entry/back/methods/entry/deleteEntry.js @@ -30,7 +30,6 @@ module.exports = Self => { try { const entry = await Self.findById(id, null, myOptions); - console.log('entry: ', entry); await entry.updateAttribute('travelFk', null, myOptions); await Self.rawSql('DELETE FROM vn.duaEntry WHERE entryFk = ?;', [id], myOptions); await Self.rawSql(` diff --git a/modules/entry/back/methods/entry/recalcEntryPrices.js b/modules/entry/back/methods/entry/recalcEntryPrices.js new file mode 100644 index 0000000000..4621dc5a79 --- /dev/null +++ b/modules/entry/back/methods/entry/recalcEntryPrices.js @@ -0,0 +1,50 @@ + +module.exports = Self => { + Self.remoteMethodCtx('recalcEntryPrices', { + description: 'Clones an entry', + accessType: 'WRITE', + accepts: [{ + arg: 'entryFk', + type: 'number', + required: true, + description: 'The entry id', + http: {source: 'path'} + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/:entryFk/recalcEntryPrices`, + verb: 'POST' + } + }); + + Self.recalcEntryPrices = async(ctx, entryFk, options) => { + const userId = ctx.req.accessToken.userId; + const myOptions = {userId}; + let tx; + let result; + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + const entry = await Self.findById(entryFk, myOptions); + const entryConfig = await Self.app.models.EntryConfig.findOne(myOptions); + + if (entry.supplierFk === entryConfig.inventorySupplierFk) return; + + try { + result = await Self.rawSql('CALL vn.buy_recalcPricesByEntry(?)', [entryFk], myOptions); + + if (tx) await tx.commit(); + return result[0]; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/entry/back/models/entry.js b/modules/entry/back/models/entry.js index 257d034ca2..cde6e0a802 100644 --- a/modules/entry/back/models/entry.js +++ b/modules/entry/back/models/entry.js @@ -18,6 +18,7 @@ module.exports = Self => { require('../methods/entry-buys/getBuyUltimate')(Self); require('../methods/entry/cloneEntry')(Self); require('../methods/entry/deleteEntry')(Self); + require('../methods/entry/recalcEntryPrices')(Self); Self.observe('before save', async(ctx, options) => { if (ctx.isNewInstance) return; diff --git a/modules/entry/back/models/entry.json b/modules/entry/back/models/entry.json index cbf0114170..5f7ec03446 100644 --- a/modules/entry/back/models/entry.json +++ b/modules/entry/back/models/entry.json @@ -67,6 +67,12 @@ }, "invoiceAmount": { "type": "number" + }, + "lockerUserFk":{ + "type": "number" + }, + "locked":{ + "type": "date" } }, "relations": { @@ -105,6 +111,11 @@ "type": "belongsTo", "model": "InvoiceIn", "foreignKey": "invoiceInFk" - } + }, + "user": { + "type": "belongsTo", + "model": "VnUser", + "foreignKey": "lockerUserFk" + } } } From 13d9cac340c6c2b4b4adfe499f88e506782e2446 Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 3 Feb 2025 14:19:39 +0100 Subject: [PATCH 122/217] test: refs #6897 update expected results in item and tag filter tests --- modules/item/back/methods/item/specs/filter.spec.js | 2 +- modules/item/back/methods/tag/specs/filterValue.spec.js | 2 +- .../back/methods/supplier/specs/getItemsPackaging.spec.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/item/back/methods/item/specs/filter.spec.js b/modules/item/back/methods/item/specs/filter.spec.js index a8aaca786a..6245abea01 100644 --- a/modules/item/back/methods/item/specs/filter.spec.js +++ b/modules/item/back/methods/item/specs/filter.spec.js @@ -89,7 +89,7 @@ describe('item filter()', () => { const ctx = {args: {filter: filter, workerFk: 16}, req: {accessToken: {userId: 1}}}; const result = await models.Item.filter(ctx, filter, options); - expect(result.length).toEqual(2); + expect(result.length).toEqual(3); expect(result[0].id).toEqual(16); expect(result[1].id).toEqual(71); diff --git a/modules/item/back/methods/tag/specs/filterValue.spec.js b/modules/item/back/methods/tag/specs/filterValue.spec.js index 9e5cf2da26..5bac40f61e 100644 --- a/modules/item/back/methods/tag/specs/filterValue.spec.js +++ b/modules/item/back/methods/tag/specs/filterValue.spec.js @@ -26,7 +26,7 @@ describe('tag filterValue()', () => { const filter = {where: {value: 'Blue'}, limit: 5}; const result = await models.Tag.filterValue(colorTagId, filter, options); - expect(result.length).toEqual(2); + expect(result.length).toEqual(3); expect(result[0].value).toEqual('Blue'); expect(result[1].value).toEqual('Blue/Silver'); diff --git a/modules/supplier/back/methods/supplier/specs/getItemsPackaging.spec.js b/modules/supplier/back/methods/supplier/specs/getItemsPackaging.spec.js index 66b328bb08..2bda3f1e85 100644 --- a/modules/supplier/back/methods/supplier/specs/getItemsPackaging.spec.js +++ b/modules/supplier/back/methods/supplier/specs/getItemsPackaging.spec.js @@ -7,6 +7,6 @@ describe('Supplier getItemsPackaging()', () => { expect(item.id).toEqual(1); expect(item.name).toEqual('Ranged weapon longbow 200cm'); expect(item.quantity).toEqual(5000); - expect(item.quantityTotal).toEqual(5100); + expect(item.quantityTotal).toEqual(5200); }); }); From 550b0871f00470463f1fad96144a90329259f0f9 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 4 Feb 2025 13:45:59 +0100 Subject: [PATCH 123/217] feat: refs #6321 changes --- db/dump/fixtures.before.sql | 12 +- db/routines/vn/procedures/item_getLack.sql | 4 +- .../vn/procedures/sale_replaceItem.sql | 8 +- .../ticket/back/methods/sale/replaceItem.js | 2 + .../methods/sale/specs/replaceItem.spec.js | 61 ++++++++++ .../ticket/back/methods/ticket/itemLack.js | 18 +-- .../back/methods/ticket/itemLackDetail.js | 39 +++--- .../methods/ticket/specs/itemLack.spec.js | 114 +++++------------- .../back/methods/ticket/specs/split.spec.js | 104 ++++------------ modules/ticket/back/methods/ticket/split.js | 55 +++------ 10 files changed, 179 insertions(+), 238 deletions(-) create mode 100644 modules/ticket/back/methods/sale/specs/replaceItem.spec.js diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 0a7187a26a..ef6453ba9b 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -4073,17 +4073,17 @@ UPDATE vn.worker -- Negativos -INSERT INTO `vn`.`item` (id,name,`size`,stems,minPrice,isToPrint,family,box,originFk,doPhoto,image,inkFk,intrastatFk,hasMinPrice,created,typeFk,generic,density,relevancy,expenseFk,isActive,longName,subName,tag5,value5,tag6,value6,tag7,value7,minimum,upToDown,hasKgPrice,isFloramondo,isFragile,stemMultiplier,isLaid,lastUsed,editorFk,isBoxPickingMode) +INSERT INTO `vn`.`item` (id, name, `size`, stems, minPrice, isToPrint, family, box, originFk, doPhoto, image, inkFk, intrastatFk, hasMinPrice, created, typeFk, generic, density, relevancy, expenseFk, isActive, longName, subName, tag5, value5, tag6, value6, tag7, value7, minimum, upToDown, hasKgPrice, isFloramondo, isFragile, stemMultiplier, isLaid, lastUsed, editorFk, isBoxPickingMode) VALUES - (88,'Lack negative',200,1,10.0,0,'VT',0,2,0,'','WHT',6021010,1,'2024-07-19 11:27:32.000',1,0,167,0,'4751000000',1,'Lack negative origin','Stark Industries','Color','White','Categoria','supply','Tallos','1',3,0,0,0,0,1.0,0,'2024-07-19 11:27:32.000',100,0); + (88, 'Lack negative', 200, 1, 10.0, 0, 'VT', 0, 2, 0, '', 'WHT', 6021010, 1, util.VN_CURDATE(), 1, 0, 167, 0, '4751000000', 1, 'Lack negative origin', 'Stark Industries', 'Color', 'White', 'Categoria', 'supply', 'Tallos', '1', 3, 0, 0, 0, 0, 1.0, 0, util.VN_CURDATE(), 100, 0); -INSERT INTO `vn`.`ticket` (id, clientFk,warehouseFk,shipped,nickname,refFk,addressFk,workerFk,observations,isSigned,isLabeled,isPrinted,packages,location,`hour`,created,isBlocked,solution,routeFk,priority,hasPriority,companyFk,agencyModeFk,landed,isBoxed,isDeleted,zoneFk,zonePrice,zoneBonus,totalWithVat,totalWithoutVat,weight,clonedFrom,cmrFk,editorFk,problem,risk) +INSERT INTO `vn`.`ticket` (id, clientFk, warehouseFk, shipped, nickname, refFk, addressFk, workerFk, observations, isSigned, isLabeled, isPrinted, packages, location, `hour`, created, isBlocked, solution, routeFk, priority, hasPriority, companyFk, agencyModeFk, landed, isBoxed, isDeleted, zoneFk, zonePrice, zoneBonus, totalWithVat, totalWithoutVat, weight, clonedFrom, cmrFk, editorFk, problem, risk) VALUES - (1000000, 1,1,'2001-01-01 00:00:00.000','employee',NULL,131,NULL,NULL,0,0,0,0,NULL,0,'2024-07-19 23:32:48.000',1,NULL,NULL,NULL,1,442,1,'2001-01-01',0,0,1,1.00,0.00,0.00,NULL,NULL,NULL,NULL,9,'',NULL); + (1000000, 1, 1, util.VN_CURDATE(), 'employee', NULL, 131, NULL, NULL, 0, 0, 0, 0, NULL, 0, CURDATE(), 1, NULL, NULL, NULL, 1, 442, 1, util.VN_CURDATE(), 0, 0, 1, 1.00, 0.00, 0.00, NULL, NULL, NULL, NULL, 9, '', NULL); -INSERT INTO `vn`.`sale` (id, itemFk,ticketFk,concept,quantity,originalQuantity,price,discount,priceFixed,reserved,isPicked,isPriceFixed,created,isAdded,total,editorFk,problem) +INSERT INTO `vn`.`sale` (id, itemFk, ticketFk, concept, quantity, originalQuantity, price, discount, priceFixed, reserved, isPicked, isPriceFixed, created, isAdded, total, editorFk, problem) VALUES - (43, 88,1000000,'Chest medical box 2',15.00,155.0,10.00,0,0.00,0,0,0,'2024-07-19 23:33:08.000',0,1550.00,100,''); + (43, 88, 1000000, 'Chest medical box 2', 15.00, 155.0, 10.00, 0, 0.00, 0, 0, 0, CURDATE(), 0, 1550.00, 100, ''); -- Negativos -- Item proposal diff --git a/db/routines/vn/procedures/item_getLack.sql b/db/routines/vn/procedures/item_getLack.sql index d598106367..f70705fa35 100644 --- a/db/routines/vn/procedures/item_getLack.sql +++ b/db/routines/vn/procedures/item_getLack.sql @@ -1,8 +1,8 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getLack`( + vSelf INT, vForce BOOLEAN, vDays INT, - vId INT, vLongname VARCHAR(255), vSupplierFk VARCHAR(255), vColor VARCHAR(255), @@ -58,7 +58,7 @@ BEGIN WHERE w.isForTicket AND ic.display AND it.code != 'GEN' - AND (vId IS NULL OR i.id = vId) + AND (vSelf IS NULL OR i.id = vSelf) AND (vLongname IS NULL OR i.name = vLongname) AND (vSupplierFk IS NULL OR p.`name` LIKE CONCAT('%', vSupplierFk, '%')) AND (vColor IS NULL OR vColor = i.inkFk) diff --git a/db/routines/vn/procedures/sale_replaceItem.sql b/db/routines/vn/procedures/sale_replaceItem.sql index a61d260cc0..b2b30092b4 100644 --- a/db/routines/vn/procedures/sale_replaceItem.sql +++ b/db/routines/vn/procedures/sale_replaceItem.sql @@ -25,9 +25,11 @@ BEGIN DECLARE vNewSaleFk INT; DECLARE vFinalPrice DECIMAL(10,2); + + DECLARE vIsRequiredTx BOOL DEFAULT NOT @@in_transaction; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN - ROLLBACK; + CALL util.tx_rollback(vIsRequiredTx); RESIGNAL; END; @@ -62,7 +64,7 @@ BEGIN WHERE tmp.itemFk = vNewItemFk AND tmp.WarehouseFk = vWarehouseFk; DROP TEMPORARY TABLE tmp.buyUltimate; - + IF vGroupingMode = 'packing' AND vPacking > 0 THEN SET vRoundQuantity = vPacking; END IF; @@ -129,6 +131,6 @@ BEGIN VALUES(vItemFk, vNewItemFk, 1) ON DUPLICATE KEY UPDATE counter = counter + 1; - COMMIT; + CALL util.tx_commit(vIsRequiredTx); END$$ DELIMITER ; diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index 7412dcf965..9f02667315 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -73,10 +73,12 @@ module.exports = Self => { query: [sale.ticketFk] }; const salesPerson = await Self.rawSql(salesPersonQuery.sql, salesPersonQuery.query, myOptions); + if (tx) await tx.commit(); const url = await models.Url.getUrl(); const substitution = await models.Item.findById(substitutionFk, { fields: ['id', 'name', 'longName'] }, myOptions); + const message = $t('negativeReplaced', { oldItemId: sale.itemFk, oldItem: sale.item().longName, diff --git a/modules/ticket/back/methods/sale/specs/replaceItem.spec.js b/modules/ticket/back/methods/sale/specs/replaceItem.spec.js new file mode 100644 index 0000000000..6cb91aacef --- /dev/null +++ b/modules/ticket/back/methods/sale/specs/replaceItem.spec.js @@ -0,0 +1,61 @@ +const {models} = require('vn-loopback/server/server'); + +describe('Sale - replaceItem function', () => { + let options; + let tx; + const ctx = beforeAll.getCtx(); + beforeAll.mockLoopBackContext(); + beforeEach(async() => { + tx = await models.Sale.beginTransaction({}); + options = {transaction: tx}; + }); + + afterEach(async() => { + if (tx) + await tx.rollback(); + }); + + it('should replace full item in sale and send notification', async() => { + const saleFk = 43; + const substitutionFk = 3; + const quantity = 15; + const ticketFk = 1000000; + + const salesBefore = await models.Sale.find({where: {ticketFk}}, options); + const salesLength = salesBefore.length; + + expect(1).toEqual(salesBefore.length); + + await models.Sale.replaceItem(ctx, saleFk, substitutionFk, quantity, options); + const salesAfter = await models.Sale.find({where: {ticketFk}}, options); + + expect(salesLength).toBeLessThan(salesAfter.length); + expect(salesAfter[0].id).toEqual(saleFk); + expect(salesAfter[salesLength].itemFk).toEqual(substitutionFk); + expect(salesAfter[salesLength].quantity).toEqual(quantity); + expect(salesAfter[0].quantity).toEqual(0); + expect(salesAfter[salesLength].concept).toMatch(/^\+/); + }); + + it('should replace half item in sale and send notification', async() => { + const saleFk = 43; + const substitutionFk = 3; + const quantity = 10; + const ticketFk = 1000000; + + const salesBefore = await models.Sale.find({where: {ticketFk}}, options); + const salesLength = salesBefore.length; + + expect(1).toEqual(salesBefore.length); + + await models.Sale.replaceItem(ctx, saleFk, substitutionFk, quantity, options); + const salesAfter = await models.Sale.find({where: {ticketFk}}, options); + + expect(salesLength).toBeLessThan(salesAfter.length); + expect(salesAfter[0].id).toEqual(saleFk); + expect(salesAfter[salesLength].itemFk).toEqual(substitutionFk); + expect(salesAfter[salesLength].quantity).toEqual(quantity); + expect(salesAfter[0].quantity).toEqual(5); + expect(salesAfter[salesLength].concept).toMatch(/^\+/); + }); +}); diff --git a/modules/ticket/back/methods/ticket/itemLack.js b/modules/ticket/back/methods/ticket/itemLack.js index 65abb1284b..7cda324598 100644 --- a/modules/ticket/back/methods/ticket/itemLack.js +++ b/modules/ticket/back/methods/ticket/itemLack.js @@ -15,7 +15,7 @@ module.exports = Self => { http: {source: 'query'} }, { - arg: 'itemFk', + arg: 'id', type: 'number', description: 'The item id', }, @@ -80,7 +80,7 @@ module.exports = Self => { Object.assign(myOptions, options); const filterKeyOrder = [ - 'days', 'itemFk', 'longname', 'supplier', + 'id', 'force', 'days', 'longname', 'supplier', 'colour', 'size', 'originFk', 'lack', 'warehouseFk' ]; @@ -88,13 +88,17 @@ module.exports = Self => { delete ctx?.args?.ctx; delete ctx?.args?.filter; - if (filter) - ctx.args = Object.assign(ctx.args ?? {}, filter); - let procedureParams = [true]; - procedureParams.push(...filterKeyOrder.map(clave => ctx.args[clave] ?? null)); + Object.assign(filter, ctx.args ?? {}); - if (!procedureParams[1])procedureParams[1] = 2; + let procedureParams = []; + procedureParams.push(...filterKeyOrder.map(clave => filter[clave] ?? null)); + + // Default values + const forceIndex = filterKeyOrder.indexOf('force'); + if (!procedureParams[forceIndex])procedureParams[forceIndex] = true; + const daysIndex = filterKeyOrder.indexOf('days'); + if (!procedureParams[daysIndex])procedureParams[daysIndex] = 2; const procedureArgs = Array(procedureParams.length).fill('?').join(', '); let query = `CALL vn.item_getLack(${procedureArgs})`; diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 4d3bdfe637..3ab22d9e58 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -8,7 +8,7 @@ module.exports = Self => { { arg: 'itemFk', type: 'number', - description: 'The item id', + description: 'The item as negative status', }, { arg: 'filter', @@ -43,6 +43,7 @@ module.exports = Self => { st.code, t.id, t.nickname, + c.id customerId, t.shipped, s.quantity, ag.name, @@ -52,7 +53,7 @@ module.exports = Self => { s.id saleFk, s.itemFk, s.price price, - al.code AS alertLevelCode, + al.code alertLevelCode, z.name zoneName, z.id zoneFk, Format(z.hour, "hh:mm") theoreticalhour, @@ -60,7 +61,7 @@ module.exports = Self => { IF(ISNULL(sc.saleClonedFk),0,1) turno, IF(ISNULL(tr.saleFk),0,1) peticionCompra, DATE_FORMAT(IF(HOUR(t.shipped), t.shipped, IF(zc.hour, zc.hour, z.hour)),'%H:%i') minTimed, - FALSE AS isBasket, + FALSE isBasket, substitution.hasSubstitution, IF(d.code = 'spainTeamVip', 1, 0) hasToIgnore FROM sale s @@ -80,24 +81,24 @@ module.exports = Self => { LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk LEFT JOIN department d ON d.id = wd.departmentFk LEFT JOIN ( - SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) AS hasSubstitution + SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasSubstitution FROM clientObservation co INNER JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' GROUP BY co.clientFk - ) AS substitution ON substitution.clientFk = c.id - WHERE warehouseFk = ? - AND s.itemFk = ? - AND s.quantity <> 0 - AND t.shipped >= util.VN_CURDATE() - AND t.shipped < DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) + ) substitution ON substitution.clientFk = c.id + WHERE t.warehouseFk = ? + AND s.itemFk = ? + AND s.quantity <> 0 + AND t.shipped BETWEEN util.VN_CURDATE() AND DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) AND sgd.saleFk IS NULL - AND (al.code IN ('FREE', 'ON_PREVIOUS') OR al.code IS NULL) + AND (al.id = ? OR al.id IS NULL) UNION ALL SELECT r.id, NULL, r.orderFk, - c.name, + c.name customerName, + c.id customerId, r.shipment, r.amount, ag.name, @@ -131,21 +132,15 @@ module.exports = Self => { INNER JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' GROUP BY co.clientFk - ) AS substitution ON substitution.clientFk = c.id - WHERE r.shipment >= util.VN_CURDATE() + ) substitution ON substitution.clientFk = c.id + WHERE r.shipment BETWEEN util.VN_CURDATE() AND DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) AND r.warehouseFk = ? - AND r.shipment < DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) AND r.created >= STR_TO_DATE(util.VN_CURDATE(), '%Y-%m-%d %H:%i:%s') AND NOT o.confirmed - AND r.itemFk = ? + AND r.itemFk = ? AND r.amount <> 0 ORDER BY hasToIgnore, isBasket;`, - [filter.where.warehouseFk, itemFk, 2, filter.where.warehouseFk, 2, itemFk]); - - if (filter.where.stateFk) { - stmt.merge({ - sql: `AND ts.alertLevel=?`, params: [filter.where.stateFk]}); - } + [filter.where.warehouseFk, itemFk, 2, filter.where.stateFk ?? 0, 2, filter.where.warehouseFk, itemFk]); const sql = ParameterizedSQL.join([stmt], ';'); const result = await conn.executeStmt(sql, myOptions); diff --git a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js index 9af5910ea6..c746d989d9 100644 --- a/modules/ticket/back/methods/ticket/specs/itemLack.spec.js +++ b/modules/ticket/back/methods/ticket/specs/itemLack.spec.js @@ -1,136 +1,80 @@ -const models = require('vn-loopback/server/server').models; +const {models} = require('vn-loopback/server/server'); describe('Item Lack', () => { + let options; + let tx; + const ctx = beforeAll.getCtx(); + beforeAll.mockLoopBackContext(); + beforeEach(async() => { - ctx = { - req: { - accessToken: {}, - headers: {origin: 'http://localhost'}, - } - }; + tx = await models.Ticket.beginTransaction({}); + options = {transaction: tx}; + }); + + afterEach(async() => { + if (tx) + await tx.rollback(); }); it('should return data with NO filters', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const filter = {}; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); + const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(2); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(result.length).toEqual(2); }); it('should return data with filter.id', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const filter = { - itemFk: 88 + id: 5 }; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); + const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(result.length).toEqual(1); }); it('should return data with filter.longname', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const filter = { longname: 'Ranged weapon pistol 9mm' }; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); + const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(result.length).toEqual(1); }); it('should return data with filter.color', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const filter = { colour: 'WHT' }; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); + const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(result.length).toEqual(1); }); it('should return data with filter.origen', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const filter = { originFk: 1 }; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); + const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(2); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(result.length).toEqual(2); }); it('should return data with filter.size', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const filter = { size: '15' }; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); + const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(result.length).toEqual(1); }); it('should return data with filter.lack', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const filter = { lack: '-15' }; - try { - const result = await models.Ticket.itemLack(ctx, filter, options); - expect(result.length).toEqual(1); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + const result = await models.Ticket.itemLack(ctx, filter, options); + + expect(result.length).toEqual(1); }); }); diff --git a/modules/ticket/back/methods/ticket/specs/split.spec.js b/modules/ticket/back/methods/ticket/specs/split.spec.js index e42d177c95..7543e47d65 100644 --- a/modules/ticket/back/methods/ticket/specs/split.spec.js +++ b/modules/ticket/back/methods/ticket/specs/split.spec.js @@ -1,99 +1,47 @@ -const models = require('vn-loopback/server/server').models; +const {models} = require('vn-loopback/server/server'); describe('Split', () => { - beforeAll(async() => { - ctx = { - req: { - accessToken: {userId: 9}, - headers: {origin: 'http://localhost'}, - __: () => {} - } - }; + let options; + let tx; + const ctx = beforeAll.getCtx(); + beforeAll.mockLoopBackContext(); + + beforeEach(async() => { + tx = await models.Ticket.beginTransaction({}); + options = {transaction: tx}; + }); + + afterEach(async() => { + if (tx) + await tx.rollback(); }); it('should split tickets with count 1', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const data = - {ticketFk: 7, sales: [1]} - ; - try { - const result = await models.Ticket.split(ctx, data, options); + {ticketFk: 7, sales: [1]}; + const result = await models.Ticket.split(ctx, data, options); - expect(1).toEqual(result.length); - expect(data.ticketFk).toEqual(result[0].ticket); - expect('noSplit').toEqual(result[0].status); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(data.ticketFk).toEqual(result.ticket); + expect('noSplit').toEqual(result.status); }); it('should split tickets with count 2 and error', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const data = {ticketFk: 11, sales: [7]} ; - try { - const result = await models.Ticket.split(ctx, data, options); + const result = await models.Ticket.split(ctx, data, options); - expect(1).toEqual(result.length); - expect(data.ticketFk).toEqual(result[0].ticket); - expect('error').toEqual(result[0].status); - expect('Can\'t transfer claimed sales').toEqual(result[0].message); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); - - xit('should split tickets with count 2 and other error', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; - const data = - {ticketFk: 16, sales: [1, 2]} - ; - try { - const result = await models.Ticket.split(ctx, data, options); - - expect(1).toEqual(result.length); - expect(data.ticketFk).toEqual(result[0].ticket); - expect('error').toEqual(result[0].status); - expect('Can\'t transfer claimed sales').toEqual(result[0].message); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(data.ticketFk).toEqual(result.ticket); + expect('error').toEqual(result.status); + expect('Can\'t transfer claimed sales').toEqual(result.message); }); it('should split tickets with count 2 and success', async() => { - const tx = await models.Ticket.beginTransaction({}); - - const options = {transaction: tx}; const data = - {ticketFk: 14, sales: [33]} - ; - try { - const result = await models.Ticket.split(ctx, data, options); + {ticketFk: 14, sales: [33]}; + const result = await models.Ticket.split(ctx, data, options); - expect(1).toEqual(result.length); - expect(data.ticketFk).toEqual(result[0].ticket); - expect('split').toEqual(result[0].status); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(data.ticketFk).toEqual(result.ticket); + expect('split').toEqual(result.status); }); }); diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index 73fa7a9841..c8d2406d4a 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -38,52 +38,37 @@ module.exports = Self => { tx = await Self.beginTransaction({}); myOptions.transaction = tx; } - try { - const ticketsCount = await Self.rawSql(` - Select t.id tid, s.id sid, count(s.id) count - FROM - vn.ticket t - LEFT JOIN vn.sale s - ON s.ticketFk = t.id - WHERE t.id =? GROUP BY t.id;`, - [ticketFk], myOptions); + const count = await models.Sale.count({ + ticketFk + }, myOptions); + if (count === 1) + return {ticket: ticketFk, status: 'noSplit'}; + // continue; - for (const {tid, count} of ticketsCount) { - try { - if (count === 1) { - result.push({ticket: tid, status: 'noSplit'}); - continue; - } - - const [, [{vNewTicket}]] = await Self.rawSql(` + const [, [{vNewTicket}]] = await Self.rawSql(` CALL vn.ticket_clone(?, @vNewTicket); SELECT @vNewTicket vNewTicket;`, - [tid], myOptions); + [ticketFk], myOptions); - if (vNewTicket === 0) continue; - const sales = await models.Sale.find({ - where: {id: {inq: ticket.sales}} - }, myOptions); + if (vNewTicket === 0) return result; + const sales = await models.Sale.find({ + where: {id: {inq: ticket.sales}} + }, myOptions); - const updateIsPicked = sales.map(({sid}) => Self.rawSql(` + const updateIsPicked = sales.map(({sid}) => Self.rawSql(` UPDATE vn.sale SET isPicked = (id = ?) WHERE ticketFk = ?`, - [sid, tid], myOptions)); + [sid, ticketFk], myOptions)); - await Promise.all(updateIsPicked); - await Self.transferSales(ctx, tid, vNewTicket, sales, myOptions); + await Promise.all(updateIsPicked); + await Self.transferSales(ctx, ticketFk, vNewTicket, sales, myOptions); - await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [tid, 'FIXING'], myOptions); - result.push({ticket: tid, newTicket: vNewTicket, status: 'split'}); - if (tx) await tx.commit(); - } catch ({message}) { - result.push({ticket: tid, status: 'error', message}); - } - } - return result; + await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [ticketFk, 'FIXING'], myOptions); + if (tx) await tx.commit(); + return {ticket: ticketFk, newTicket: vNewTicket, status: 'split'}; } catch (e) { if (tx) await tx.rollback(); - throw e; + return {ticket: ticketFk, status: 'error', message: e.message}; } }; }; From 5258e5ba2ab08a38086d33b94ba6f973f9292e57 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 4 Feb 2025 13:55:01 +0100 Subject: [PATCH 124/217] refactor: refs #7127 modified checkAccessAcl instead of using VnRole --- modules/claim/back/models/claim-beginning.js | 38 ++++++++++++++------ 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/modules/claim/back/models/claim-beginning.js b/modules/claim/back/models/claim-beginning.js index 40d66c33ea..41c064c751 100644 --- a/modules/claim/back/models/claim-beginning.js +++ b/modules/claim/back/models/claim-beginning.js @@ -14,33 +14,51 @@ module.exports = Self => { const options = ctx.options; const models = Self.app.models; const saleFk = ctx?.currentInstance?.saleFk || ctx?.instance?.saleFk; - const loopBackContext = LoopBackContext.getCurrentContext(); - const accessToken = loopBackContext.active.accessToken; - const user = await models.VnUser.findById(accessToken.userId); - const role = await models.VnRole.findById(user.roleFk); + const claimFk = ctx?.instance?.claimFk || ctx?.currentInstance?.claimFk; + const myOptions = {}; + const accessToken = ctx?.options?.accessToken || LoopBackContext.getCurrentContext().active.accessToken; + const ctxToken = {req: {accessToken}}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + const sale = await models.Sale.findById(saleFk, {fields: ['ticketFk', 'quantity']}, options); - if (role.name !== 'salesPerson' && role.name !== 'claimManager') + const canCreateClaimAfterDeadline = models.ACL.checkAccessAcl( + ctxToken, + 'Claim', + 'createAfterDeadline', + myOptions + ); + + const canUpdateClaim = models.ACL.checkAccessAcl( + ctxToken, + 'Claim', + 'updateClaim', + myOptions + ); + + if (!canUpdateClaim && !canCreateClaimAfterDeadline) throw new UserError(`You don't have permission to modify this claim`); - if (role.name === 'salesPerson') { + if (canUpdateClaim) { const query = ` SELECT daysToClaim FROM vn.claimConfig`; const res = await Self.rawSql(query); const daysToClaim = res[0]?.daysToClaim; - const claim = await models.Claim.findById(ctx?.currentInstance?.claimFk, {fields: ['created']}, options); + const claim = await models.Claim.findById(claimFk, {fields: ['created']}, options); const claimDate = moment.utc(claim.created); const currentDate = moment.utc(); const daysSinceSale = currentDate.diff(claimDate, 'days'); - if (daysSinceSale > daysToClaim) + if (daysSinceSale > daysToClaim && !canCreateClaimAfterDeadline) throw new UserError(`You can't modify this claim because the deadline has already passed`); } if (ctx.isNewInstance) { - const claim = await models.Claim.findById(ctx.instance.claimFk, {fields: ['ticketFk']}, options); + const claim = await models.Claim.findById(claimFk, {fields: ['ticketFk']}, options); if (sale.ticketFk != claim.ticketFk) throw new UserError(`Cannot create a new claimBeginning from a different ticket`); } @@ -65,7 +83,7 @@ module.exports = Self => { if (ctx.options && ctx.options.transaction) myOptions.transaction = ctx.options.transaction; - const claimBeginning = ctx.instance ?? await Self.findById(ctx.where.id); + const claimBeginning = ctx.instance ?? await Self.findById(ctx?.where?.id); const filter = { where: {id: claimBeginning.claimFk}, From 5d209314f6a7bc1ac5865f0c9bacf12d72cf0f4e Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 4 Feb 2025 14:09:48 +0100 Subject: [PATCH 125/217] feat: refs #6321 use Date.vnNew --- modules/item/back/methods/item/getSimilar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 7d904c782f..51d61c61c8 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -32,7 +32,7 @@ module.exports = Self => { const query = [ filter.itemFk, where.warehouseFk, - where.date ?? Date.vnNew().toISOString().split('T')[0], + where.date ?? Date.vnNew(), where.showType ?? true, where.scopeDays ?? 2 ]; From da36016f5b0ba384eb95589e69b82d908f880137 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 4 Feb 2025 14:43:31 +0100 Subject: [PATCH 126/217] build: init version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 72f8e2d1ba..7f2025552a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salix-back", - "version": "25.06.0", + "version": "25.08.0", "author": "Verdnatura Levante SL", "description": "Salix backend", "license": "GPL-3.0", From 272c7c028925c679abe1bc32e389f8924157604c Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 4 Feb 2025 23:42:16 +0100 Subject: [PATCH 127/217] perf: refs #6321 minor changes --- .../11132-aquaDracena/00-firstScript.sql | 1 - loopback/locale/en.json | 5 +- loopback/locale/es.json | 800 +++++++++--------- .../ticket/back/methods/sale/replaceItem.js | 1 - modules/ticket/back/methods/ticket/split.js | 1 - 5 files changed, 401 insertions(+), 407 deletions(-) diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql index 8d813ffd3a..e69de29bb2 100644 --- a/db/versions/11132-aquaDracena/00-firstScript.sql +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -1 +0,0 @@ -ALTER TABLE vn.negativeOrigin MODIFY COLUMN `type` enum('FALTAS','CONTENEDOR','ENTRADAS','OVERBOOKING', 'SUSTITUCION') CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL; diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 9abf43d727..3f27859576 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -256,8 +256,5 @@ "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.", "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", - "price retrieval failed": "price retrieval failed", - "workerSocialName": "workerSocialName", - "workerName": "workerName", - "The tag or priority can't be repeated for an item": "The tag or priority can't be repeated for an item", + "The tag or priority can't be repeated for an item": "The tag or priority can't be repeated for an item" } diff --git a/loopback/locale/es.json b/loopback/locale/es.json index dca19e4a63..24eb55a57e 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -1,401 +1,401 @@ { - "Phone format is invalid": "El formato del teléfono no es correcto", - "You are not allowed to change the credit": "No tienes privilegios para modificar el crédito", - "Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia", - "The default consignee can not be unchecked": "No se puede desmarcar el consignatario predeterminado", - "Unable to default a disabled consignee": "No se puede poner predeterminado un consignatario desactivado", - "Can't be blank": "No puede estar en blanco", - "Invalid TIN": "NIF/CIF inválido", - "TIN must be unique": "El NIF/CIF debe ser único", - "A client with that Web User name already exists": "Ya existe un cliente con ese Usuario Web", - "Is invalid": "Es inválido", - "Quantity cannot be zero": "La cantidad no puede ser cero", - "Enter an integer different to zero": "Introduce un entero distinto de cero", - "Package cannot be blank": "El embalaje no puede estar en blanco", - "The company name must be unique": "La razón social debe ser única", - "Invalid email": "Correo electrónico inválido", - "The IBAN does not have the correct format": "El IBAN no tiene el formato correcto", - "That payment method requires an IBAN": "El método de pago seleccionado requiere un IBAN", - "That payment method requires a BIC": "El método de pago seleccionado requiere un BIC", - "State cannot be blank": "El estado no puede estar en blanco", - "Worker cannot be blank": "El trabajador no puede estar en blanco", - "Cannot change the payment method if no salesperson": "No se puede cambiar la forma de pago si no hay comercial asignado", - "can't be blank": "El campo no puede estar vacío", - "Observation type must be unique": "El tipo de observación no puede repetirse", - "The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero", - "The grade must be similar to the last one": "El grade debe ser similar al último", - "Only manager can change the credit": "Solo el gerente puede cambiar el credito de este cliente", - "Name cannot be blank": "El nombre no puede estar en blanco", - "Phone cannot be blank": "El teléfono no puede estar en blanco", - "Period cannot be blank": "El periodo no puede estar en blanco", - "Choose a company": "Selecciona una empresa", - "Se debe rellenar el campo de texto": "Se debe rellenar el campo de texto", - "Description should have maximum of 45 characters": "La descripción debe tener maximo 45 caracteres", - "Cannot be blank": "El campo no puede estar en blanco", - "The grade must be an integer greater than or equal to zero": "El grade debe ser un entero mayor o igual a cero", - "Sample type cannot be blank": "El tipo de plantilla no puede quedar en blanco", - "Description cannot be blank": "Se debe rellenar el campo de texto", - "The price of the item changed": "El precio del artículo cambió", - "The value should not be greater than 100%": "El valor no debe de ser mayor de 100%", - "The value should be a number": "El valor debe ser un numero", - "This order is not editable": "Esta orden no se puede modificar", - "You can't create an order for a frozen client": "No puedes crear una orden para un cliente congelado", - "You can't create an order for a client that has a debt": "No puedes crear una orden para un cliente con deuda", - "is not a valid date": "No es una fecha valida", - "Barcode must be unique": "El código de barras debe ser único", - "The warehouse can't be repeated": "El almacén no puede repetirse", - "The tag or priority can't be repeated for an item": "El tag o prioridad no puede repetirse para un item", - "The observation type can't be repeated": "El tipo de observación no puede repetirse", - "A claim with that sale already exists": "Ya existe una reclamación para esta línea", - "You don't have enough privileges to change that field": "No tienes permisos para cambiar ese campo", - "Warehouse cannot be blank": "El almacén no puede quedar en blanco", - "Agency cannot be blank": "La agencia no puede quedar en blanco", - "Not enough privileges to edit a client with verified data": "No tienes permisos para hacer cambios en un cliente con datos comprobados", - "This address doesn't exist": "Este consignatario no existe", - "You must delete the claim id %d first": "Antes debes borrar la reclamación %d", - "You don't have enough privileges": "No tienes suficientes permisos", - "Cannot check Equalization Tax in this NIF/CIF": "No se puede marcar RE en este NIF/CIF", - "You can't make changes on the basic data of an confirmed order or with rows": "No puedes cambiar los datos básicos de una orden con artículos", - "INVALID_USER_NAME": "El nombre de usuario solo debe contener letras minúsculas o, a partir del segundo carácter, números o subguiones, no está permitido el uso de la letra ñ", - "You can't create a ticket for a frozen client": "No puedes crear un ticket para un cliente congelado", - "You can't create a ticket for an inactive client": "No puedes crear un ticket para un cliente inactivo", - "Tag value cannot be blank": "El valor del tag no puede quedar en blanco", - "ORDER_EMPTY": "Cesta vacía", - "You don't have enough privileges to do that": "No tienes permisos para cambiar esto", - "NO SE PUEDE DESACTIVAR EL CONSIGNAT": "NO SE PUEDE DESACTIVAR EL CONSIGNAT", - "Error. El NIF/CIF está repetido": "Error. El NIF/CIF está repetido", - "Street cannot be empty": "Dirección no puede estar en blanco", - "City cannot be empty": "Ciudad no puede estar en blanco", - "Code cannot be blank": "Código no puede estar en blanco", - "You cannot remove this department": "No puedes eliminar este departamento", - "The extension must be unique": "La extensión debe ser unica", - "The secret can't be blank": "La contraseña no puede estar en blanco", - "We weren't able to send this SMS": "No hemos podido enviar el SMS", - "This client can't be invoiced": "Este cliente no puede ser facturado", - "You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa", - "This ticket can't be invoiced": "Este ticket no puede ser facturado", - "You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado", - "This ticket can not be modified": "Este ticket no puede ser modificado", - "The introduced hour already exists": "Esta hora ya ha sido introducida", - "INFINITE_LOOP": "Existe una dependencia entre dos Jefes", - "The sales of the receiver ticket can't be modified": "Las lineas del ticket al que envias no pueden ser modificadas", - "NO_AGENCY_AVAILABLE": "No hay una zona de reparto disponible con estos parámetros", - "ERROR_PAST_SHIPMENT": "No puedes seleccionar una fecha de envío en pasado", - "The current ticket can't be modified": "El ticket actual no puede ser modificado", - "The current claim can't be modified": "La reclamación actual no puede ser modificada", - "The sales of this ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas", - "The sales do not exists": "La(s) línea(s) seleccionada(s) no existe(n)", - "Please select at least one sale": "Por favor selecciona al menos una linea", - "All sales must belong to the same ticket": "Todas las lineas deben pertenecer al mismo ticket", - "NO_ZONE_FOR_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada", - "This item doesn't exists": "El artículo no existe", - "NOT_ZONE_WITH_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada", - "Extension format is invalid": "El formato de la extensión es inválido", - "Invalid parameters to create a new ticket": "Parámetros inválidos para crear un nuevo ticket", - "This item is not available": "Este artículo no está disponible", - "This postcode already exists": "Este código postal ya existe", - "Concept cannot be blank": "El concepto no puede quedar en blanco", - "File doesn't exists": "El archivo no existe", - "You don't have privileges to change the zone": "No tienes permisos para cambiar la zona o para esos parámetros hay más de una opción de envío, hable con las agencias", - "This ticket is already on weekly tickets": "Este ticket ya está en tickets programados", - "Ticket id cannot be blank": "El id de ticket no puede quedar en blanco", - "Weekday cannot be blank": "El día de la semana no puede quedar en blanco", - "You can't delete a confirmed order": "No puedes borrar un pedido confirmado", - "The social name has an invalid format": "El nombre fiscal tiene un formato incorrecto", - "Invalid quantity": "Cantidad invalida", - "This postal code is not valid": "Este código postal no es válido", - "is invalid": "es inválido", - "The postcode doesn't exist. Please enter a correct one": "El código postal no existe. Por favor, introduce uno correcto", - "The department name can't be repeated": "El nombre del departamento no puede repetirse", - "This phone already exists": "Este teléfono ya existe", - "You cannot move a parent to its own sons": "No puedes mover un elemento padre a uno de sus hijos", - "You can't create a claim for a removed ticket": "No puedes crear una reclamación para un ticket eliminado", - "You cannot delete a ticket that part of it is being prepared": "No puedes eliminar un ticket en el que una parte que está siendo preparada", - "You must delete all the buy requests first": "Debes eliminar todas las peticiones de compra primero", - "You should specify a date": "Debes especificar una fecha", - "You should specify at least a start or end date": "Debes especificar al menos una fecha de inicio o de fin", - "Start date should be lower than end date": "La fecha de inicio debe ser menor que la fecha de fin", - "You should mark at least one week day": "Debes marcar al menos un día de la semana", - "Swift / BIC can't be empty": "Swift / BIC no puede estar vacío", - "Customs agent is required for a non UEE member": "El agente de aduanas es requerido para los clientes extracomunitarios", - "Incoterms is required for a non UEE member": "El incoterms es requerido para los clientes extracomunitarios", - "Deleted sales from ticket": "He eliminado las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}", - "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", - "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", - "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", - "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", - "State": "Estado", - "regular": "normal", - "reserved": "reservado", - "Changed sale reserved state": "He cambiado el estado reservado de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "Bought units from buy request": "Se ha comprado {{quantity}} unidades de [{{itemId}} {{concept}}]({{{urlItem}}}) para el ticket id [{{ticketId}}]({{{url}}})", - "Deny buy request": "Se ha rechazado la petición de compra para el ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}", - "MESSAGE_INSURANCE_CHANGE": "He cambiado el crédito asegurado del cliente [{{clientName}} ({{clientId}})]({{{url}}}) a *{{credit}} €*", - "Changed client paymethod": "He cambiado la forma de pago del cliente [{{clientName}} ({{clientId}})]({{{url}}})", - "Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})", - "Change quantity": "{{concept}} cambia de {{oldQuantity}} a {{newQuantity}}", - "Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*, con el tipo de recogida *{{claimPickup}}*", - "Claim state has changed to": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *{{newState}}*", - "Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}", - "ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto", - "Distance must be lesser than 4000": "La distancia debe ser inferior a 4000", - "This ticket is deleted": "Este ticket está eliminado", - "Unable to clone this travel": "No ha sido posible clonar este travel", - "This thermograph id already exists": "La id del termógrafo ya existe", - "Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante", - "ORDER_ALREADY_CONFIRMED": "ORDEN YA CONFIRMADA", - "Invalid password": "Invalid password", - "Password does not meet requirements": "La contraseña no cumple los requisitos", - "Role already assigned": "Rol ya asignado", - "Invalid role name": "Nombre de rol no válido", - "Role name must be written in camelCase": "El nombre del rol debe escribirse en camelCase", - "Email already exists": "El correo ya existe", - "User already exists": "El/La usuario/a ya existe", - "Absence change notification on the labour calendar": "Notificación de cambio de ausencia en el calendario laboral", - "Record of hours week": "Registro de horas semana {{week}} año {{year}} ", - "Created absence": "El empleado {{author}} ha añadido una ausencia de tipo '{{absenceType}}' a {{employee}} para el día {{dated}}.", - "Deleted absence": "El empleado {{author}} ha eliminado una ausencia de tipo '{{absenceType}}' a {{employee}} del día {{dated}}.", - "I have deleted the ticket id": "He eliminado el ticket id [{{id}}]({{{url}}})", - "I have restored the ticket id": "He restaurado el ticket id [{{id}}]({{{url}}})", - "You can only restore a ticket within the first hour after deletion": "Únicamente puedes restaurar el ticket dentro de la primera hora después de su eliminación", - "Changed this data from the ticket": "He cambiado estos datos del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", - "agencyModeFk": "Agencia", - "clientFk": "Cliente", - "zoneFk": "Zona", - "warehouseFk": "Almacén", - "shipped": "F. envío", - "landed": "F. entrega", - "addressFk": "Consignatario", - "companyFk": "Empresa", - "agency": "Agencia", - "delivery": "Reparto", - "The social name cannot be empty": "La razón social no puede quedar en blanco", - "The nif cannot be empty": "El NIF no puede quedar en blanco", - "You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados", - "ASSIGN_ZONE_FIRST": "Asigna una zona primero", - "Amount cannot be zero": "El importe no puede ser cero", - "Company has to be official": "Empresa inválida", - "You can not select this payment method without a registered bankery account": "No se puede utilizar este método de pago si no has registrado una cuenta bancaria", - "Action not allowed on the test environment": "Esta acción no está permitida en el entorno de pruebas", - "The selected ticket is not suitable for this route": "El ticket seleccionado no es apto para esta ruta", - "New ticket request has been created with price": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}* y un precio de *{{price}} €*", - "New ticket request has been created": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}*", - "Swift / BIC cannot be empty": "Swift / BIC no puede estar vacío", - "This BIC already exist.": "Este BIC ya existe.", - "That item doesn't exists": "Ese artículo no existe", - "There's a new urgent ticket:": "Hay un nuevo ticket urgente:", - "Invalid account": "Cuenta inválida", - "Compensation account is empty": "La cuenta para compensar está vacia", - "This genus already exist": "Este genus ya existe", - "This specie already exist": "Esta especie ya existe", - "Client assignment has changed": "He cambiado el comercial ~*\"<{{previousWorkerName}}>\"*~ por *\"<{{currentWorkerName}}>\"* del cliente [{{clientName}} ({{clientId}})]({{{url}}})", - "None": "Ninguno", - "The contract was not active during the selected date": "El contrato no estaba activo durante la fecha seleccionada", - "Cannot add more than one '1/2 day vacation'": "No puedes añadir más de un 'Vacaciones 1/2 dia'", - "This document already exists on this ticket": "Este documento ya existe en el ticket", - "Some of the selected tickets are not billable": "Algunos de los tickets seleccionados no son facturables", - "You can't invoice tickets from multiple clients": "No puedes facturar tickets de multiples clientes", - "nickname": "nickname", - "INACTIVE_PROVIDER": "Proveedor inactivo", - "This client is not invoiceable": "Este cliente no es facturable", - "serial non editable": "Esta serie no permite asignar la referencia", - "Max shipped required": "La fecha límite es requerida", - "Can't invoice to future": "No se puede facturar a futuro", - "Can't invoice to past": "No se puede facturar a pasado", - "This ticket is already invoiced": "Este ticket ya está facturado", - "A ticket with an amount of zero can't be invoiced": "No se puede facturar un ticket con importe cero", - "A ticket with a negative base can't be invoiced": "No se puede facturar un ticket con una base negativa", - "Global invoicing failed": "[Facturación global] No se han podido facturar algunos clientes", - "Wasn't able to invoice the following clients": "No se han podido facturar los siguientes clientes", - "Can't verify data unless the client has a business type": "No se puede verificar datos de un cliente que no tiene tipo de negocio", - "You don't have enough privileges to set this credit amount": "No tienes suficientes privilegios para establecer esta cantidad de crédito", - "You can't change the credit set to zero from a financialBoss": "No puedes cambiar el cŕedito establecido a cero por un jefe de finanzas", - "Amounts do not match": "Las cantidades no coinciden", - "The PDF document does not exist": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'", - "The type of business must be filled in basic data": "El tipo de negocio debe estar rellenado en datos básicos", - "You can't create a claim from a ticket delivered more than seven days ago": "No puedes crear una reclamación de un ticket entregado hace más de siete días", - "The worker has hours recorded that day": "El trabajador tiene horas fichadas ese día", - "The worker has a marked absence that day": "El trabajador tiene marcada una ausencia ese día", - "You can not modify is pay method checked": "No se puede modificar el campo método de pago validado", - "The account size must be exactly 10 characters": "El tamaño de la cuenta debe ser exactamente de 10 caracteres", - "Can't transfer claimed sales": "No puedes transferir lineas reclamadas", - "You don't have privileges to create refund": "No tienes permisos para crear un abono", - "The item is required": "El artículo es requerido", - "The agency is already assigned to another autonomous": "La agencia ya está asignada a otro autónomo", - "date in the future": "Fecha en el futuro", - "reference duplicated": "Referencia duplicada", - "This ticket is already a refund": "Este ticket ya es un abono", - "isWithoutNegatives": "Sin negativos", - "routeFk": "routeFk", - "Can't change the password of another worker": "No se puede cambiar la contraseña de otro trabajador", - "No hay un contrato en vigor": "No hay un contrato en vigor", - "No se permite fichar a futuro": "No se permite fichar a futuro", - "No está permitido trabajar": "No está permitido trabajar", - "Fichadas impares": "Fichadas impares", - "Descanso diario 12h.": "Descanso diario 12h.", - "Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.", - "Dirección incorrecta": "Dirección incorrecta", - "Modifiable user details only by an administrator": "Detalles de usuario modificables solo por un administrador", - "Modifiable password only via recovery or by an administrator": "Contraseña modificable solo a través de la recuperación o por un administrador", - "Not enough privileges to edit a client": "No tienes suficientes privilegios para editar un cliente", - "This route does not exists": "Esta ruta no existe", - "Claim pickup order sent": "Reclamación Orden de recogida enviada [{{claimId}}]({{{claimUrl}}}) al cliente *{{clientName}}*", - "You don't have grant privilege": "No tienes privilegios para dar privilegios", - "You don't own the role and you can't assign it to another user": "No eres el propietario del rol y no puedes asignarlo a otro usuario", - "Ticket merged": "Ticket [{{originId}}]({{{originFullPath}}}) ({{{originDated}}}) fusionado con [{{destinationId}}]({{{destinationFullPath}}}) ({{{destinationDated}}})", - "Already has this status": "Ya tiene este estado", - "There aren't records for this week": "No existen registros para esta semana", - "Empty data source": "Origen de datos vacio", - "App locked": "Aplicación bloqueada por el usuario {{userId}}", - "Email verify": "Correo de verificación", - "Landing cannot be lesser than shipment": "Landing cannot be lesser than shipment", - "Receipt's bank was not found": "No se encontró el banco del recibo", - "This receipt was not compensated": "Este recibo no ha sido compensado", - "Client's email was not found": "No se encontró el email del cliente", - "Negative basis": "Base negativa", - "This worker code already exists": "Este codigo de trabajador ya existe", - "This personal mail already exists": "Este correo personal ya existe", - "This worker already exists": "Este trabajador ya existe", - "App name does not exist": "El nombre de aplicación no es válido", - "Try again": "Vuelve a intentarlo", - "Aplicación bloqueada por el usuario 9": "Aplicación bloqueada por el usuario 9", - "Failed to upload delivery note": "Error al subir albarán {{id}}", - "The DOCUWARE PDF document does not exists": "El documento PDF Docuware no existe", - "It is not possible to modify tracked sales": "No es posible modificar líneas de pedido que se hayan empezado a preparar", - "It is not possible to modify sales that their articles are from Floramondo": "No es posible modificar líneas de pedido cuyos artículos sean de Floramondo", - "It is not possible to modify cloned sales": "No es posible modificar líneas de pedido clonadas", - "A supplier with the same name already exists. Change the country.": "Un proveedor con el mismo nombre ya existe. Cambie el país.", - "There is no assigned email for this client": "No hay correo asignado para este cliente", - "Exists an invoice with a future date": "Existe una factura con fecha posterior", - "Invoice date can't be less than max date": "La fecha de factura no puede ser inferior a la fecha límite", - "Warehouse inventory not set": "El almacén inventario no está establecido", - "This locker has already been assigned": "Esta taquilla ya ha sido asignada", - "Tickets with associated refunds": "No se pueden borrar tickets con abonos asociados. Este ticket está asociado al abono Nº %s", - "Not exist this branch": "La rama no existe", - "This ticket cannot be signed because it has not been boxed": "Este ticket no puede firmarse porque no ha sido encajado", - "Collection does not exist": "La colección no existe", - "Cannot obtain exclusive lock": "No se puede obtener un bloqueo exclusivo", - "Insert a date range": "Inserte un rango de fechas", - "Added observation": "{{user}} añadió esta observacion: {{text}} {{defaulterId}} ({{{defaulterUrl}}})", - "Comment added to client": "Observación añadida al cliente {{clientFk}}", - "Invalid auth code": "Código de verificación incorrecto", - "Invalid or expired verification code": "Código de verificación incorrecto o expirado", - "Cannot create a new claimBeginning from a different ticket": "No se puede crear una línea de reclamación de un ticket diferente al origen", - "company": "Compañía", - "country": "País", - "clientId": "Id cliente", - "clientSocialName": "Cliente", - "amount": "Importe", - "taxableBase": "Base", - "ticketFk": "Id ticket", - "isActive": "Activo", - "hasToInvoice": "Facturar", - "isTaxDataChecked": "Datos comprobados", - "comercialId": "Id comercial", - "comercialName": "Comercial", - "Pass expired": "La contraseña ha caducado, cambiela desde Salix", - "Invalid NIF for VIES": "Invalid NIF for VIES", - "Ticket does not exist": "Este ticket no existe", - "Ticket is already signed": "Este ticket ya ha sido firmado", - "Authentication failed": "Autenticación fallida", - "You can't use the same password": "No puedes usar la misma contraseña", - "You can only add negative amounts in refund tickets": "Solo se puede añadir cantidades negativas en tickets abono", - "Fecha fuera de rango": "Fecha fuera de rango", - "Error while generating PDF": "Error al generar PDF", - "Error when sending mail to client": "Error al enviar el correo al cliente", - "Mail not sent": "Se ha producido un fallo al enviar la factura al cliente [{{clientId}}]({{{clientUrl}}}), por favor revisa la dirección de correo electrónico", - "The renew period has not been exceeded": "El periodo de renovación no ha sido superado", - "Valid priorities": "Prioridades válidas: %d", - "hasAnyNegativeBase": "Base negativa para los tickets: {{ticketsIds}}", - "hasAnyPositiveBase": "Base positivas para los tickets: {{ticketsIds}}", - "You cannot assign an alias that you are not assigned to": "No puede asignar un alias que no tenga asignado", - "This ticket cannot be left empty.": "Este ticket no se puede dejar vacío. %s", - "The company has not informed the supplier account for bank transfers": "La empresa no tiene informado la cuenta de proveedor para transferencias bancarias", - "You cannot assign/remove an alias that you are not assigned to": "No puede asignar/eliminar un alias que no tenga asignado", - "This invoice has a linked vehicle.": "Esta factura tiene un vehiculo vinculado", - "You don't have enough privileges.": "No tienes suficientes permisos.", - "This ticket is locked": "Este ticket está bloqueado.", - "This ticket is not editable.": "Este ticket no es editable.", - "The ticket doesn't exist.": "No existe el ticket.", - "Social name should be uppercase": "La razón social debe ir en mayúscula", - "Street should be uppercase": "La dirección fiscal debe ir en mayúscula", - "Ticket without Route": "Ticket sin ruta", - "Select a different client": "Seleccione un cliente distinto", - "Fill all the fields": "Rellene todos los campos", - "The response is not a PDF": "La respuesta no es un PDF", - "Booking completed": "Reserva completada", - "The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación", - "The notification subscription of this worker cant be modified": "La subscripción a la notificación de este trabajador no puede ser modificada", - "User disabled": "Usuario desactivado", - "The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mínima", - "quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mínima", - "Cannot past travels with entries": "No se pueden pasar envíos con entradas", - "It was not able to remove the next expeditions:": "No se pudo eliminar las siguientes expediciones: {{expeditions}}", - "This claim has been updated": "La reclamación con Id: {{claimId}}, ha sido actualizada", - "This user does not have an assigned tablet": "Este usuario no tiene tablet asignada", - "Field are invalid": "El campo '{{tag}}' no es válido", - "Incorrect pin": "Pin incorrecto.", - "You already have the mailAlias": "Ya tienes este alias de correo", - "The alias cant be modified": "Este alias de correo no puede ser modificado", - "No tickets to invoice": "No hay tickets para facturar que cumplan los requisitos de facturación", - "this warehouse has not dms": "El Almacén no acepta documentos", - "This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado", - "Name should be uppercase": "El nombre debe ir en mayúscula", - "Bank entity must be specified": "La entidad bancaria es obligatoria", - "An email is necessary": "Es necesario un email", - "You cannot update these fields": "No puedes actualizar estos campos", - "CountryFK cannot be empty": "El país no puede estar vacío", - "Cmr file does not exist": "El archivo del cmr no existe", - "You are not allowed to modify the alias": "No estás autorizado a modificar el alias", - "The address of the customer must have information about Incoterms and Customs Agent": "El consignatario del cliente debe tener informado Incoterms y Agente de aduanas", - "No invoice series found for these parameters": "No se encontró una serie para estos parámetros", - "The line could not be marked": "La linea no puede ser marcada", - "Through this procedure, it is not possible to modify the password of users with verified email": "Mediante este procedimiento, no es posible modificar la contraseña de usuarios con correo verificado", - "They're not your subordinate": "No es tu subordinado/a.", - "No results found": "No se han encontrado resultados", - "InvoiceIn is already booked": "La factura recibida está contabilizada", - "This workCenter is already assigned to this agency": "Este centro de trabajo ya está asignado a esta agencia", - "Select ticket or client": "Elija un ticket o un client", - "It was not able to create the invoice": "No se pudo crear la factura", - "Incoterms and Customs agent are required for a non UEE member": "Se requieren Incoterms y agente de aduanas para un no miembro de la UEE", - "You can not use the same password": "No puedes usar la misma contraseña", - "This PDA is already assigned to another user": "Este PDA ya está asignado a otro usuario", - "You can only have one PDA": "Solo puedes tener un PDA", - "The invoices have been created but the PDFs could not be generated": "Se ha facturado pero no se ha podido generar el PDF", - "It has been invoiced but the PDF of refund not be generated": "Se ha facturado pero no se ha podido generar el PDF del abono", - "Payment method is required": "El método de pago es obligatorio", - "Cannot send mail": "Não é possível enviar o email", - "CONSTRAINT `supplierAccountTooShort` failed for `vn`.`supplier`": "La cuenta debe tener exactamente 10 dígitos", - "The sale not exists in the item shelving": "La venta no existe en la estantería del artículo", - "The entry not have stickers": "La entrada no tiene etiquetas", - "Too many records": "Demasiados registros", - "Original invoice not found": "Factura original no encontrada", - "The entry has no lines or does not exist": "La entrada no tiene lineas o no existe", - "Weight already set": "El peso ya está establecido", - "This ticket is not allocated to your department": "Este ticket no está asignado a tu departamento", - "There is already a tray with the same height": "Ya existe una bandeja con la misma altura", - "The height must be greater than 50cm": "La altura debe ser superior a 50cm", - "The maximum height of the wagon is 200cm": "La altura máxima es 200cm", - "The entry does not have stickers": "La entrada no tiene etiquetas", - "This buyer has already made a reservation for this date": "Este comprador ya ha hecho una reserva para esta fecha", - "No valid travel thermograph found": "No se encontró un termógrafo válido", - "The quantity claimed cannot be greater than the quantity of the line": "La cantidad reclamada no puede ser mayor que la cantidad de la línea", - "type cannot be blank": "Se debe rellenar el tipo", - "There are tickets for this area, delete them first": "Hay tickets para esta sección, borralos primero", - "There is no company associated with that warehouse": "No hay ninguna empresa asociada a ese almacén", - "You do not have permission to modify the booked field": "No tienes permisos para modificar el campo contabilizada", - "ticketLostExpedition": "El ticket [{{ticketId}}]({{{ticketUrl}}}) tiene la siguiente expedición perdida:{{ expeditionId }}", - "The web user's email already exists": "El correo del usuario web ya existe", - "Sales already moved": "Ya han sido transferidas", - "The raid information is not correct": "La información de la redada no es correcta", - "An item type with the same code already exists": "Un tipo con el mismo código ya existe", - "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles", - "All tickets have a route order": "Todos los tickets tienen orden de ruta", - "There are tickets to be invoiced": "La zona tiene tickets por facturar", - "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}", - "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sido entregado en su orden.", - "Price cannot be blank": "El precio no puede estar en blanco" - -} + "Phone format is invalid": "El formato del teléfono no es correcto", + "You are not allowed to change the credit": "No tienes privilegios para modificar el crédito", + "Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia", + "The default consignee can not be unchecked": "No se puede desmarcar el consignatario predeterminado", + "Unable to default a disabled consignee": "No se puede poner predeterminado un consignatario desactivado", + "Can't be blank": "No puede estar en blanco", + "Invalid TIN": "NIF/CIF inválido", + "TIN must be unique": "El NIF/CIF debe ser único", + "A client with that Web User name already exists": "Ya existe un cliente con ese Usuario Web", + "Is invalid": "Es inválido", + "Quantity cannot be zero": "La cantidad no puede ser cero", + "Enter an integer different to zero": "Introduce un entero distinto de cero", + "Package cannot be blank": "El embalaje no puede estar en blanco", + "The company name must be unique": "La razón social debe ser única", + "Invalid email": "Correo electrónico inválido", + "The IBAN does not have the correct format": "El IBAN no tiene el formato correcto", + "That payment method requires an IBAN": "El método de pago seleccionado requiere un IBAN", + "That payment method requires a BIC": "El método de pago seleccionado requiere un BIC", + "State cannot be blank": "El estado no puede estar en blanco", + "Worker cannot be blank": "El trabajador no puede estar en blanco", + "Cannot change the payment method if no salesperson": "No se puede cambiar la forma de pago si no hay comercial asignado", + "can't be blank": "El campo no puede estar vacío", + "Observation type must be unique": "El tipo de observación no puede repetirse", + "The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero", + "The grade must be similar to the last one": "El grade debe ser similar al último", + "Only manager can change the credit": "Solo el gerente puede cambiar el credito de este cliente", + "Name cannot be blank": "El nombre no puede estar en blanco", + "Phone cannot be blank": "El teléfono no puede estar en blanco", + "Period cannot be blank": "El periodo no puede estar en blanco", + "Choose a company": "Selecciona una empresa", + "Se debe rellenar el campo de texto": "Se debe rellenar el campo de texto", + "Description should have maximum of 45 characters": "La descripción debe tener maximo 45 caracteres", + "Cannot be blank": "El campo no puede estar en blanco", + "The grade must be an integer greater than or equal to zero": "El grade debe ser un entero mayor o igual a cero", + "Sample type cannot be blank": "El tipo de plantilla no puede quedar en blanco", + "Description cannot be blank": "Se debe rellenar el campo de texto", + "The price of the item changed": "El precio del artículo cambió", + "The value should not be greater than 100%": "El valor no debe de ser mayor de 100%", + "The value should be a number": "El valor debe ser un numero", + "This order is not editable": "Esta orden no se puede modificar", + "You can't create an order for a frozen client": "No puedes crear una orden para un cliente congelado", + "You can't create an order for a client that has a debt": "No puedes crear una orden para un cliente con deuda", + "is not a valid date": "No es una fecha valida", + "Barcode must be unique": "El código de barras debe ser único", + "The warehouse can't be repeated": "El almacén no puede repetirse", + "The tag or priority can't be repeated for an item": "El tag o prioridad no puede repetirse para un item", + "The observation type can't be repeated": "El tipo de observación no puede repetirse", + "A claim with that sale already exists": "Ya existe una reclamación para esta línea", + "You don't have enough privileges to change that field": "No tienes permisos para cambiar ese campo", + "Warehouse cannot be blank": "El almacén no puede quedar en blanco", + "Agency cannot be blank": "La agencia no puede quedar en blanco", + "Not enough privileges to edit a client with verified data": "No tienes permisos para hacer cambios en un cliente con datos comprobados", + "This address doesn't exist": "Este consignatario no existe", + "You must delete the claim id %d first": "Antes debes borrar la reclamación %d", + "You don't have enough privileges": "No tienes suficientes permisos", + "Cannot check Equalization Tax in this NIF/CIF": "No se puede marcar RE en este NIF/CIF", + "You can't make changes on the basic data of an confirmed order or with rows": "No puedes cambiar los datos básicos de una orden con artículos", + "INVALID_USER_NAME": "El nombre de usuario solo debe contener letras minúsculas o, a partir del segundo carácter, números o subguiones, no está permitido el uso de la letra ñ", + "You can't create a ticket for a frozen client": "No puedes crear un ticket para un cliente congelado", + "You can't create a ticket for an inactive client": "No puedes crear un ticket para un cliente inactivo", + "Tag value cannot be blank": "El valor del tag no puede quedar en blanco", + "ORDER_EMPTY": "Cesta vacía", + "You don't have enough privileges to do that": "No tienes permisos para cambiar esto", + "NO SE PUEDE DESACTIVAR EL CONSIGNAT": "NO SE PUEDE DESACTIVAR EL CONSIGNAT", + "Error. El NIF/CIF está repetido": "Error. El NIF/CIF está repetido", + "Street cannot be empty": "Dirección no puede estar en blanco", + "City cannot be empty": "Ciudad no puede estar en blanco", + "Code cannot be blank": "Código no puede estar en blanco", + "You cannot remove this department": "No puedes eliminar este departamento", + "The extension must be unique": "La extensión debe ser unica", + "The secret can't be blank": "La contraseña no puede estar en blanco", + "We weren't able to send this SMS": "No hemos podido enviar el SMS", + "This client can't be invoiced": "Este cliente no puede ser facturado", + "You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa", + "This ticket can't be invoiced": "Este ticket no puede ser facturado", + "You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado", + "This ticket can not be modified": "Este ticket no puede ser modificado", + "The introduced hour already exists": "Esta hora ya ha sido introducida", + "INFINITE_LOOP": "Existe una dependencia entre dos Jefes", + "The sales of the receiver ticket can't be modified": "Las lineas del ticket al que envias no pueden ser modificadas", + "NO_AGENCY_AVAILABLE": "No hay una zona de reparto disponible con estos parámetros", + "ERROR_PAST_SHIPMENT": "No puedes seleccionar una fecha de envío en pasado", + "The current ticket can't be modified": "El ticket actual no puede ser modificado", + "The current claim can't be modified": "La reclamación actual no puede ser modificada", + "The sales of this ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas", + "The sales do not exists": "La(s) línea(s) seleccionada(s) no existe(n)", + "Please select at least one sale": "Por favor selecciona al menos una linea", + "All sales must belong to the same ticket": "Todas las lineas deben pertenecer al mismo ticket", + "NO_ZONE_FOR_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada", + "This item doesn't exists": "El artículo no existe", + "NOT_ZONE_WITH_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada", + "Extension format is invalid": "El formato de la extensión es inválido", + "Invalid parameters to create a new ticket": "Parámetros inválidos para crear un nuevo ticket", + "This item is not available": "Este artículo no está disponible", + "This postcode already exists": "Este código postal ya existe", + "Concept cannot be blank": "El concepto no puede quedar en blanco", + "File doesn't exists": "El archivo no existe", + "You don't have privileges to change the zone": "No tienes permisos para cambiar la zona o para esos parámetros hay más de una opción de envío, hable con las agencias", + "This ticket is already on weekly tickets": "Este ticket ya está en tickets programados", + "Ticket id cannot be blank": "El id de ticket no puede quedar en blanco", + "Weekday cannot be blank": "El día de la semana no puede quedar en blanco", + "You can't delete a confirmed order": "No puedes borrar un pedido confirmado", + "The social name has an invalid format": "El nombre fiscal tiene un formato incorrecto", + "Invalid quantity": "Cantidad invalida", + "This postal code is not valid": "Este código postal no es válido", + "is invalid": "es inválido", + "The postcode doesn't exist. Please enter a correct one": "El código postal no existe. Por favor, introduce uno correcto", + "The department name can't be repeated": "El nombre del departamento no puede repetirse", + "This phone already exists": "Este teléfono ya existe", + "You cannot move a parent to its own sons": "No puedes mover un elemento padre a uno de sus hijos", + "You can't create a claim for a removed ticket": "No puedes crear una reclamación para un ticket eliminado", + "You cannot delete a ticket that part of it is being prepared": "No puedes eliminar un ticket en el que una parte que está siendo preparada", + "You must delete all the buy requests first": "Debes eliminar todas las peticiones de compra primero", + "You should specify a date": "Debes especificar una fecha", + "You should specify at least a start or end date": "Debes especificar al menos una fecha de inicio o de fin", + "Start date should be lower than end date": "La fecha de inicio debe ser menor que la fecha de fin", + "You should mark at least one week day": "Debes marcar al menos un día de la semana", + "Swift / BIC can't be empty": "Swift / BIC no puede estar vacío", + "Customs agent is required for a non UEE member": "El agente de aduanas es requerido para los clientes extracomunitarios", + "Incoterms is required for a non UEE member": "El incoterms es requerido para los clientes extracomunitarios", + "Deleted sales from ticket": "He eliminado las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}", + "Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", + "Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", + "Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", + "Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*", + "State": "Estado", + "regular": "normal", + "reserved": "reservado", + "Changed sale reserved state": "He cambiado el estado reservado de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", + "Bought units from buy request": "Se ha comprado {{quantity}} unidades de [{{itemId}} {{concept}}]({{{urlItem}}}) para el ticket id [{{ticketId}}]({{{url}}})", + "Deny buy request": "Se ha rechazado la petición de compra para el ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}", + "MESSAGE_INSURANCE_CHANGE": "He cambiado el crédito asegurado del cliente [{{clientName}} ({{clientId}})]({{{url}}}) a *{{credit}} €*", + "Changed client paymethod": "He cambiado la forma de pago del cliente [{{clientName}} ({{clientId}})]({{{url}}})", + "Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})", + "Change quantity": "{{concept}} cambia de {{oldQuantity}} a {{newQuantity}}", + "Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*, con el tipo de recogida *{{claimPickup}}*", + "Claim state has changed to": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *{{newState}}*", + "Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}", + "ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto", + "Distance must be lesser than 4000": "La distancia debe ser inferior a 4000", + "This ticket is deleted": "Este ticket está eliminado", + "Unable to clone this travel": "No ha sido posible clonar este travel", + "This thermograph id already exists": "La id del termógrafo ya existe", + "Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante", + "ORDER_ALREADY_CONFIRMED": "ORDEN YA CONFIRMADA", + "Invalid password": "Invalid password", + "Password does not meet requirements": "La contraseña no cumple los requisitos", + "Role already assigned": "Rol ya asignado", + "Invalid role name": "Nombre de rol no válido", + "Role name must be written in camelCase": "El nombre del rol debe escribirse en camelCase", + "Email already exists": "El correo ya existe", + "User already exists": "El/La usuario/a ya existe", + "Absence change notification on the labour calendar": "Notificación de cambio de ausencia en el calendario laboral", + "Record of hours week": "Registro de horas semana {{week}} año {{year}} ", + "Created absence": "El empleado {{author}} ha añadido una ausencia de tipo '{{absenceType}}' a {{employee}} para el día {{dated}}.", + "Deleted absence": "El empleado {{author}} ha eliminado una ausencia de tipo '{{absenceType}}' a {{employee}} del día {{dated}}.", + "I have deleted the ticket id": "He eliminado el ticket id [{{id}}]({{{url}}})", + "I have restored the ticket id": "He restaurado el ticket id [{{id}}]({{{url}}})", + "You can only restore a ticket within the first hour after deletion": "Únicamente puedes restaurar el ticket dentro de la primera hora después de su eliminación", + "Changed this data from the ticket": "He cambiado estos datos del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", + "agencyModeFk": "Agencia", + "clientFk": "Cliente", + "zoneFk": "Zona", + "warehouseFk": "Almacén", + "shipped": "F. envío", + "landed": "F. entrega", + "addressFk": "Consignatario", + "companyFk": "Empresa", + "agency": "Agencia", + "delivery": "Reparto", + "The social name cannot be empty": "La razón social no puede quedar en blanco", + "The nif cannot be empty": "El NIF no puede quedar en blanco", + "You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados", + "ASSIGN_ZONE_FIRST": "Asigna una zona primero", + "Amount cannot be zero": "El importe no puede ser cero", + "Company has to be official": "Empresa inválida", + "You can not select this payment method without a registered bankery account": "No se puede utilizar este método de pago si no has registrado una cuenta bancaria", + "Action not allowed on the test environment": "Esta acción no está permitida en el entorno de pruebas", + "The selected ticket is not suitable for this route": "El ticket seleccionado no es apto para esta ruta", + "New ticket request has been created with price": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}* y un precio de *{{price}} €*", + "New ticket request has been created": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}*", + "Swift / BIC cannot be empty": "Swift / BIC no puede estar vacío", + "This BIC already exist.": "Este BIC ya existe.", + "That item doesn't exists": "Ese artículo no existe", + "There's a new urgent ticket:": "Hay un nuevo ticket urgente:", + "Invalid account": "Cuenta inválida", + "Compensation account is empty": "La cuenta para compensar está vacia", + "This genus already exist": "Este genus ya existe", + "This specie already exist": "Esta especie ya existe", + "Client assignment has changed": "He cambiado el comercial ~*\"<{{previousWorkerName}}>\"*~ por *\"<{{currentWorkerName}}>\"* del cliente [{{clientName}} ({{clientId}})]({{{url}}})", + "None": "Ninguno", + "The contract was not active during the selected date": "El contrato no estaba activo durante la fecha seleccionada", + "Cannot add more than one '1/2 day vacation'": "No puedes añadir más de un 'Vacaciones 1/2 dia'", + "This document already exists on this ticket": "Este documento ya existe en el ticket", + "Some of the selected tickets are not billable": "Algunos de los tickets seleccionados no son facturables", + "You can't invoice tickets from multiple clients": "No puedes facturar tickets de multiples clientes", + "nickname": "nickname", + "INACTIVE_PROVIDER": "Proveedor inactivo", + "This client is not invoiceable": "Este cliente no es facturable", + "serial non editable": "Esta serie no permite asignar la referencia", + "Max shipped required": "La fecha límite es requerida", + "Can't invoice to future": "No se puede facturar a futuro", + "Can't invoice to past": "No se puede facturar a pasado", + "This ticket is already invoiced": "Este ticket ya está facturado", + "A ticket with an amount of zero can't be invoiced": "No se puede facturar un ticket con importe cero", + "A ticket with a negative base can't be invoiced": "No se puede facturar un ticket con una base negativa", + "Global invoicing failed": "[Facturación global] No se han podido facturar algunos clientes", + "Wasn't able to invoice the following clients": "No se han podido facturar los siguientes clientes", + "Can't verify data unless the client has a business type": "No se puede verificar datos de un cliente que no tiene tipo de negocio", + "You don't have enough privileges to set this credit amount": "No tienes suficientes privilegios para establecer esta cantidad de crédito", + "You can't change the credit set to zero from a financialBoss": "No puedes cambiar el cŕedito establecido a cero por un jefe de finanzas", + "Amounts do not match": "Las cantidades no coinciden", + "The PDF document does not exist": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'", + "The type of business must be filled in basic data": "El tipo de negocio debe estar rellenado en datos básicos", + "You can't create a claim from a ticket delivered more than seven days ago": "No puedes crear una reclamación de un ticket entregado hace más de siete días", + "The worker has hours recorded that day": "El trabajador tiene horas fichadas ese día", + "The worker has a marked absence that day": "El trabajador tiene marcada una ausencia ese día", + "You can not modify is pay method checked": "No se puede modificar el campo método de pago validado", + "The account size must be exactly 10 characters": "El tamaño de la cuenta debe ser exactamente de 10 caracteres", + "Can't transfer claimed sales": "No puedes transferir lineas reclamadas", + "You don't have privileges to create refund": "No tienes permisos para crear un abono", + "The item is required": "El artículo es requerido", + "The agency is already assigned to another autonomous": "La agencia ya está asignada a otro autónomo", + "date in the future": "Fecha en el futuro", + "reference duplicated": "Referencia duplicada", + "This ticket is already a refund": "Este ticket ya es un abono", + "isWithoutNegatives": "Sin negativos", + "routeFk": "routeFk", + "Can't change the password of another worker": "No se puede cambiar la contraseña de otro trabajador", + "No hay un contrato en vigor": "No hay un contrato en vigor", + "No se permite fichar a futuro": "No se permite fichar a futuro", + "No está permitido trabajar": "No está permitido trabajar", + "Fichadas impares": "Fichadas impares", + "Descanso diario 12h.": "Descanso diario 12h.", + "Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.", + "Dirección incorrecta": "Dirección incorrecta", + "Modifiable user details only by an administrator": "Detalles de usuario modificables solo por un administrador", + "Modifiable password only via recovery or by an administrator": "Contraseña modificable solo a través de la recuperación o por un administrador", + "Not enough privileges to edit a client": "No tienes suficientes privilegios para editar un cliente", + "This route does not exists": "Esta ruta no existe", + "Claim pickup order sent": "Reclamación Orden de recogida enviada [{{claimId}}]({{{claimUrl}}}) al cliente *{{clientName}}*", + "You don't have grant privilege": "No tienes privilegios para dar privilegios", + "You don't own the role and you can't assign it to another user": "No eres el propietario del rol y no puedes asignarlo a otro usuario", + "Ticket merged": "Ticket [{{originId}}]({{{originFullPath}}}) ({{{originDated}}}) fusionado con [{{destinationId}}]({{{destinationFullPath}}}) ({{{destinationDated}}})", + "Already has this status": "Ya tiene este estado", + "There aren't records for this week": "No existen registros para esta semana", + "Empty data source": "Origen de datos vacio", + "App locked": "Aplicación bloqueada por el usuario {{userId}}", + "Email verify": "Correo de verificación", + "Landing cannot be lesser than shipment": "Landing cannot be lesser than shipment", + "Receipt's bank was not found": "No se encontró el banco del recibo", + "This receipt was not compensated": "Este recibo no ha sido compensado", + "Client's email was not found": "No se encontró el email del cliente", + "Negative basis": "Base negativa", + "This worker code already exists": "Este codigo de trabajador ya existe", + "This personal mail already exists": "Este correo personal ya existe", + "This worker already exists": "Este trabajador ya existe", + "App name does not exist": "El nombre de aplicación no es válido", + "Try again": "Vuelve a intentarlo", + "Aplicación bloqueada por el usuario 9": "Aplicación bloqueada por el usuario 9", + "Failed to upload delivery note": "Error al subir albarán {{id}}", + "The DOCUWARE PDF document does not exists": "El documento PDF Docuware no existe", + "It is not possible to modify tracked sales": "No es posible modificar líneas de pedido que se hayan empezado a preparar", + "It is not possible to modify sales that their articles are from Floramondo": "No es posible modificar líneas de pedido cuyos artículos sean de Floramondo", + "It is not possible to modify cloned sales": "No es posible modificar líneas de pedido clonadas", + "A supplier with the same name already exists. Change the country.": "Un proveedor con el mismo nombre ya existe. Cambie el país.", + "There is no assigned email for this client": "No hay correo asignado para este cliente", + "Exists an invoice with a future date": "Existe una factura con fecha posterior", + "Invoice date can't be less than max date": "La fecha de factura no puede ser inferior a la fecha límite", + "Warehouse inventory not set": "El almacén inventario no está establecido", + "This locker has already been assigned": "Esta taquilla ya ha sido asignada", + "Tickets with associated refunds": "No se pueden borrar tickets con abonos asociados. Este ticket está asociado al abono Nº %s", + "Not exist this branch": "La rama no existe", + "This ticket cannot be signed because it has not been boxed": "Este ticket no puede firmarse porque no ha sido encajado", + "Collection does not exist": "La colección no existe", + "Cannot obtain exclusive lock": "No se puede obtener un bloqueo exclusivo", + "Insert a date range": "Inserte un rango de fechas", + "Added observation": "{{user}} añadió esta observacion: {{text}} {{defaulterId}} ({{{defaulterUrl}}})", + "Comment added to client": "Observación añadida al cliente {{clientFk}}", + "Invalid auth code": "Código de verificación incorrecto", + "Invalid or expired verification code": "Código de verificación incorrecto o expirado", + "Cannot create a new claimBeginning from a different ticket": "No se puede crear una línea de reclamación de un ticket diferente al origen", + "company": "Compañía", + "country": "País", + "clientId": "Id cliente", + "clientSocialName": "Cliente", + "amount": "Importe", + "taxableBase": "Base", + "ticketFk": "Id ticket", + "isActive": "Activo", + "hasToInvoice": "Facturar", + "isTaxDataChecked": "Datos comprobados", + "comercialId": "Id comercial", + "comercialName": "Comercial", + "Pass expired": "La contraseña ha caducado, cambiela desde Salix", + "Invalid NIF for VIES": "Invalid NIF for VIES", + "Ticket does not exist": "Este ticket no existe", + "Ticket is already signed": "Este ticket ya ha sido firmado", + "Authentication failed": "Autenticación fallida", + "You can't use the same password": "No puedes usar la misma contraseña", + "You can only add negative amounts in refund tickets": "Solo se puede añadir cantidades negativas en tickets abono", + "Fecha fuera de rango": "Fecha fuera de rango", + "Error while generating PDF": "Error al generar PDF", + "Error when sending mail to client": "Error al enviar el correo al cliente", + "Mail not sent": "Se ha producido un fallo al enviar la factura al cliente [{{clientId}}]({{{clientUrl}}}), por favor revisa la dirección de correo electrónico", + "The renew period has not been exceeded": "El periodo de renovación no ha sido superado", + "Valid priorities": "Prioridades válidas: %d", + "hasAnyNegativeBase": "Base negativa para los tickets: {{ticketsIds}}", + "hasAnyPositiveBase": "Base positivas para los tickets: {{ticketsIds}}", + "You cannot assign an alias that you are not assigned to": "No puede asignar un alias que no tenga asignado", + "This ticket cannot be left empty.": "Este ticket no se puede dejar vacío. %s", + "The company has not informed the supplier account for bank transfers": "La empresa no tiene informado la cuenta de proveedor para transferencias bancarias", + "You cannot assign/remove an alias that you are not assigned to": "No puede asignar/eliminar un alias que no tenga asignado", + "This invoice has a linked vehicle.": "Esta factura tiene un vehiculo vinculado", + "You don't have enough privileges.": "No tienes suficientes permisos.", + "This ticket is locked": "Este ticket está bloqueado.", + "This ticket is not editable.": "Este ticket no es editable.", + "The ticket doesn't exist.": "No existe el ticket.", + "Social name should be uppercase": "La razón social debe ir en mayúscula", + "Street should be uppercase": "La dirección fiscal debe ir en mayúscula", + "Ticket without Route": "Ticket sin ruta", + "Select a different client": "Seleccione un cliente distinto", + "Fill all the fields": "Rellene todos los campos", + "The response is not a PDF": "La respuesta no es un PDF", + "Booking completed": "Reserva completada", + "The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación", + "The notification subscription of this worker cant be modified": "La subscripción a la notificación de este trabajador no puede ser modificada", + "User disabled": "Usuario desactivado", + "The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mínima", + "quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mínima", + "Cannot past travels with entries": "No se pueden pasar envíos con entradas", + "It was not able to remove the next expeditions:": "No se pudo eliminar las siguientes expediciones: {{expeditions}}", + "This claim has been updated": "La reclamación con Id: {{claimId}}, ha sido actualizada", + "This user does not have an assigned tablet": "Este usuario no tiene tablet asignada", + "Field are invalid": "El campo '{{tag}}' no es válido", + "Incorrect pin": "Pin incorrecto.", + "You already have the mailAlias": "Ya tienes este alias de correo", + "The alias cant be modified": "Este alias de correo no puede ser modificado", + "No tickets to invoice": "No hay tickets para facturar que cumplan los requisitos de facturación", + "this warehouse has not dms": "El Almacén no acepta documentos", + "This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado", + "Name should be uppercase": "El nombre debe ir en mayúscula", + "Bank entity must be specified": "La entidad bancaria es obligatoria", + "An email is necessary": "Es necesario un email", + "You cannot update these fields": "No puedes actualizar estos campos", + "CountryFK cannot be empty": "El país no puede estar vacío", + "Cmr file does not exist": "El archivo del cmr no existe", + "You are not allowed to modify the alias": "No estás autorizado a modificar el alias", + "The address of the customer must have information about Incoterms and Customs Agent": "El consignatario del cliente debe tener informado Incoterms y Agente de aduanas", + "No invoice series found for these parameters": "No se encontró una serie para estos parámetros", + "The line could not be marked": "La linea no puede ser marcada", + "Through this procedure, it is not possible to modify the password of users with verified email": "Mediante este procedimiento, no es posible modificar la contraseña de usuarios con correo verificado", + "They're not your subordinate": "No es tu subordinado/a.", + "No results found": "No se han encontrado resultados", + "InvoiceIn is already booked": "La factura recibida está contabilizada", + "This workCenter is already assigned to this agency": "Este centro de trabajo ya está asignado a esta agencia", + "Select ticket or client": "Elija un ticket o un client", + "It was not able to create the invoice": "No se pudo crear la factura", + "Incoterms and Customs agent are required for a non UEE member": "Se requieren Incoterms y agente de aduanas para un no miembro de la UEE", + "You can not use the same password": "No puedes usar la misma contraseña", + "This PDA is already assigned to another user": "Este PDA ya está asignado a otro usuario", + "You can only have one PDA": "Solo puedes tener un PDA", + "The invoices have been created but the PDFs could not be generated": "Se ha facturado pero no se ha podido generar el PDF", + "It has been invoiced but the PDF of refund not be generated": "Se ha facturado pero no se ha podido generar el PDF del abono", + "Payment method is required": "El método de pago es obligatorio", + "Cannot send mail": "Não é possível enviar o email", + "CONSTRAINT `supplierAccountTooShort` failed for `vn`.`supplier`": "La cuenta debe tener exactamente 10 dígitos", + "The sale not exists in the item shelving": "La venta no existe en la estantería del artículo", + "The entry not have stickers": "La entrada no tiene etiquetas", + "Too many records": "Demasiados registros", + "Original invoice not found": "Factura original no encontrada", + "The entry has no lines or does not exist": "La entrada no tiene lineas o no existe", + "Weight already set": "El peso ya está establecido", + "This ticket is not allocated to your department": "Este ticket no está asignado a tu departamento", + "There is already a tray with the same height": "Ya existe una bandeja con la misma altura", + "The height must be greater than 50cm": "La altura debe ser superior a 50cm", + "The maximum height of the wagon is 200cm": "La altura máxima es 200cm", + "The entry does not have stickers": "La entrada no tiene etiquetas", + "This buyer has already made a reservation for this date": "Este comprador ya ha hecho una reserva para esta fecha", + "No valid travel thermograph found": "No se encontró un termógrafo válido", + "The quantity claimed cannot be greater than the quantity of the line": "La cantidad reclamada no puede ser mayor que la cantidad de la línea", + "type cannot be blank": "Se debe rellenar el tipo", + "There are tickets for this area, delete them first": "Hay tickets para esta sección, borralos primero", + "There is no company associated with that warehouse": "No hay ninguna empresa asociada a ese almacén", + "You do not have permission to modify the booked field": "No tienes permisos para modificar el campo contabilizada", + "ticketLostExpedition": "El ticket [{{ticketId}}]({{{ticketUrl}}}) tiene la siguiente expedición perdida:{{ expeditionId }}", + "The web user's email already exists": "El correo del usuario web ya existe", + "Sales already moved": "Ya han sido transferidas", + "The raid information is not correct": "La información de la redada no es correcta", + "An item type with the same code already exists": "Un tipo con el mismo código ya existe", + "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles", + "All tickets have a route order": "Todos los tickets tienen orden de ruta", + "There are tickets to be invoiced": "La zona tiene tickets por facturar", + "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}", + "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sido entregado en su orden.", + "Price cannot be blank": "El precio no puede estar en blanco", + "negativeReplaced": "negativeReplaced" +} \ No newline at end of file diff --git a/modules/ticket/back/methods/sale/replaceItem.js b/modules/ticket/back/methods/sale/replaceItem.js index 9f02667315..b1702f17f5 100644 --- a/modules/ticket/back/methods/sale/replaceItem.js +++ b/modules/ticket/back/methods/sale/replaceItem.js @@ -73,7 +73,6 @@ module.exports = Self => { query: [sale.ticketFk] }; const salesPerson = await Self.rawSql(salesPersonQuery.sql, salesPersonQuery.query, myOptions); - if (tx) await tx.commit(); const url = await models.Url.getUrl(); const substitution = await models.Item.findById(substitutionFk, { fields: ['id', 'name', 'longName'] diff --git a/modules/ticket/back/methods/ticket/split.js b/modules/ticket/back/methods/ticket/split.js index c8d2406d4a..23223db7d7 100644 --- a/modules/ticket/back/methods/ticket/split.js +++ b/modules/ticket/back/methods/ticket/split.js @@ -44,7 +44,6 @@ module.exports = Self => { }, myOptions); if (count === 1) return {ticket: ticketFk, status: 'noSplit'}; - // continue; const [, [{vNewTicket}]] = await Self.rawSql(` CALL vn.ticket_clone(?, @vNewTicket); From e4cd30bc27e0ce15d82a808b44cc4c96e8354ba1 Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 5 Feb 2025 07:34:47 +0100 Subject: [PATCH 128/217] feat: refs #6897 add groupingMode and hasMinPrice parameters to getBuyList method --- .../entry/back/methods/entry-buys/getBuyList.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/entry/back/methods/entry-buys/getBuyList.js b/modules/entry/back/methods/entry-buys/getBuyList.js index 16486db057..a038dca02a 100644 --- a/modules/entry/back/methods/entry-buys/getBuyList.js +++ b/modules/entry/back/methods/entry-buys/getBuyList.js @@ -148,6 +148,18 @@ module.exports = Self => { description: 'item family id', http: {source: 'query'} }, + { + arg: 'groupingMode', + type: 'string', + description: 'grouping mode', + http: {source: 'query'} + }, + { + arg: 'hasMinPrice', + type: 'boolean', + description: 'grouping mode', + http: {source: 'query'} + }, { arg: 'groupBy', type: 'string', @@ -196,6 +208,8 @@ module.exports = Self => { case 'minPrice': case 'workerFk': case 'itemTypeFk': + case 'groupingMode': + case 'hasMinPrice': return {[param]: value}; } }); From f216166806fd32da6059bad7038e2ab3e4c0d925 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 5 Feb 2025 10:16:14 +0100 Subject: [PATCH 129/217] fix: refs #7943 better "relation": "business", --- modules/worker/back/models/worker.json | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json index 346c70d567..4ecce9ef26 100644 --- a/modules/worker/back/models/worker.json +++ b/modules/worker/back/models/worker.json @@ -272,7 +272,8 @@ "relation": "department", "scope": { "fields": [ - "id" + "id", + "name" ] } } @@ -289,14 +290,23 @@ "departmentFk", "workerBusinessProfessionalCategoryFk" ], - "include": [ + "include":[ + { + "relation": "department", + "scope": { + "fields": ["id", "name"] + } + }, { "relation": "reasonEnd", "scope": { - "fields": [ - "id", - "reason" - ] + "fields": ["id", "reason"] + } + }, + { + "relation": "workerBusinessProfessionalCategory", + "scope": { + "fields": ["id", "description"] } } ] From e02dcf23b71eaf8174bd496ed783d68d2f902247 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 5 Feb 2025 15:36:01 +0100 Subject: [PATCH 130/217] feat: refs #6321 add columns ticketConfigs --- db/versions/11132-aquaDracena/00-firstScript.sql | 2 ++ modules/ticket/back/models/ticket-config.json | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql index e69de29bb2..08bfca3edc 100644 --- a/db/versions/11132-aquaDracena/00-firstScript.sql +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -0,0 +1,2 @@ +ALTER TABLE vn.ticketConfig ADD lackAlertPrice int(11) DEFAULT 30 NOT NULL COMMENT 'Value to alert when item proposal exceed price'; +ALTER TABLE vn.ticketConfig ADD lackScopeDays int(11) DEFAULT 2 NOT NULL COMMENT 'Number of days to look back for ticket with negatives'; diff --git a/modules/ticket/back/models/ticket-config.json b/modules/ticket/back/models/ticket-config.json index 6dd2808eac..7a008f97e3 100644 --- a/modules/ticket/back/models/ticket-config.json +++ b/modules/ticket/back/models/ticket-config.json @@ -26,6 +26,12 @@ }, "defaultAttenderFk": { "type": "number" + }, + "lackAlertPrice": { + "type": "number" + }, + "lackScopeDays": { + "type": "number" } }, "relations": { From 1f6f7b99758617ece9ce722c346127ddec69078c Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 00:34:08 +0100 Subject: [PATCH 131/217] feat: refs #6321 updates requested --- db/routines/vn/procedures/item_getLack.sql | 4 ++-- loopback/locale/en.json | 2 +- modules/item/back/methods/item/getSimilar.js | 6 ++--- .../methods/supplier/getItemsPackaging.js | 2 +- .../back/methods/ticket/itemLackDetail.js | 24 ++++++++++++------- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/db/routines/vn/procedures/item_getLack.sql b/db/routines/vn/procedures/item_getLack.sql index f70705fa35..1a54f03962 100644 --- a/db/routines/vn/procedures/item_getLack.sql +++ b/db/routines/vn/procedures/item_getLack.sql @@ -4,7 +4,7 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getLack`( vForce BOOLEAN, vDays INT, vLongname VARCHAR(255), - vSupplierFk VARCHAR(255), + vProducerName VARCHAR(255), vColor VARCHAR(255), vSize INT, vOrigen INT, @@ -60,7 +60,7 @@ BEGIN AND it.code != 'GEN' AND (vSelf IS NULL OR i.id = vSelf) AND (vLongname IS NULL OR i.name = vLongname) - AND (vSupplierFk IS NULL OR p.`name` LIKE CONCAT('%', vSupplierFk, '%')) + AND (vProducerName IS NULL OR p.`name` LIKE CONCAT('%', vProducerName, '%')) AND (vColor IS NULL OR vColor = i.inkFk) AND (vSize IS NULL OR vSize = i.`size`) AND (vOrigen IS NULL OR vOrigen = w.id) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 3f27859576..27c6ac2161 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -256,5 +256,5 @@ "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.", "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", - "The tag or priority can't be repeated for an item": "The tag or priority can't be repeated for an item" + "The tag and priority can't be repeated": "The tag and priority can't be repeated" } diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 51d61c61c8..2479d08b52 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -32,9 +32,9 @@ module.exports = Self => { const query = [ filter.itemFk, where.warehouseFk, - where.date ?? Date.vnNew(), - where.showType ?? true, - where.scopeDays ?? 2 + where.date, + where.showType, + where.scopeDays ]; const [results] = await Self.rawSql('CALL vn.item_getSimilar(?, ?, ?, ?, ?)', query, myOptions); diff --git a/modules/supplier/back/methods/supplier/getItemsPackaging.js b/modules/supplier/back/methods/supplier/getItemsPackaging.js index 8a27c89c4b..8231e9936f 100644 --- a/modules/supplier/back/methods/supplier/getItemsPackaging.js +++ b/modules/supplier/back/methods/supplier/getItemsPackaging.js @@ -44,7 +44,7 @@ module.exports = Self => { JOIN hedera.imageConfig ic WHERE e.supplierFk = ? AND i.family IN ('EMB', 'CONT') - AND b.created > (util.VN_CURDATE() - INTERVAL bc.monthsAgo MONTH) + AND b.created > util.VN_CURDATE() - INTERVAL bc.monthsAgo MONTH) GROUP BY b.itemFk ORDER BY et.quantity DESC, quantityTotal DESC`, [entry, id, id]); }; diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 3ab22d9e58..10d6c8fa91 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -62,7 +62,7 @@ module.exports = Self => { IF(ISNULL(tr.saleFk),0,1) peticionCompra, DATE_FORMAT(IF(HOUR(t.shipped), t.shipped, IF(zc.hour, zc.hour, z.hour)),'%H:%i') minTimed, FALSE isBasket, - substitution.hasSubstitution, + substitution.hasObservation, IF(d.code = 'spainTeamVip', 1, 0) hasToIgnore FROM sale s LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = s.id @@ -81,7 +81,7 @@ module.exports = Self => { LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk LEFT JOIN department d ON d.id = wd.departmentFk LEFT JOIN ( - SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasSubstitution + SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasObservation FROM clientObservation co INNER JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' @@ -92,7 +92,7 @@ module.exports = Self => { AND s.quantity <> 0 AND t.shipped BETWEEN util.VN_CURDATE() AND DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) AND sgd.saleFk IS NULL - AND (al.id = ? OR al.id IS NULL) + AND (al.code IN (?) OR al.id IS NULL) UNION ALL SELECT r.id, NULL, @@ -117,7 +117,7 @@ module.exports = Self => { NULL, NULL, TRUE, - substitution.hasSubstitution, + substitution.hasObservation, IF(d.code = 'spainTeamVip', 1, 0) FROM hedera.orderRow r INNER JOIN hedera.order o ON o.id = r.orderFk @@ -127,7 +127,7 @@ module.exports = Self => { LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk LEFT JOIN department d ON d.id = wd.departmentFk LEFT JOIN ( - SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasSubstitution + SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasObservation FROM clientObservation co INNER JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' @@ -135,12 +135,20 @@ module.exports = Self => { ) substitution ON substitution.clientFk = c.id WHERE r.shipment BETWEEN util.VN_CURDATE() AND DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) AND r.warehouseFk = ? - AND r.created >= STR_TO_DATE(util.VN_CURDATE(), '%Y-%m-%d %H:%i:%s') + AND r.created >= util.VN_CURDATE() AND NOT o.confirmed AND r.itemFk = ? - AND r.amount <> 0 + AND r.amount ORDER BY hasToIgnore, isBasket;`, - [filter.where.warehouseFk, itemFk, 2, filter.where.stateFk ?? 0, 2, filter.where.warehouseFk, itemFk]); + [ + filter.where.warehouseFk, + itemFk, + 2, + filter.where.alertLevelCode, + 2, + filter.where.warehouseFk, + itemFk + ]); const sql = ParameterizedSQL.join([stmt], ';'); const result = await conn.executeStmt(sql, myOptions); From b2cbded2dc54c14054dabfdc7622ed6815c8a02f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 01:06:02 +0100 Subject: [PATCH 132/217] feat: refs #6321 defaultAlertLevelCode --- db/versions/11132-aquaDracena/00-firstScript.sql | 1 + modules/ticket/back/models/ticket-config.json | 3 +++ 2 files changed, 4 insertions(+) diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql index 08bfca3edc..d922fa54d0 100644 --- a/db/versions/11132-aquaDracena/00-firstScript.sql +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -1,2 +1,3 @@ ALTER TABLE vn.ticketConfig ADD lackAlertPrice int(11) DEFAULT 30 NOT NULL COMMENT 'Value to alert when item proposal exceed price'; +ALTER TABLE vn.ticketConfig ADD lackDefaultAlertLevelCode varchar(45) DEFAULT 'FREE' NOT NULL COMMENT 'Default alertLevelCode to retrieve tickets with negatives'; ALTER TABLE vn.ticketConfig ADD lackScopeDays int(11) DEFAULT 2 NOT NULL COMMENT 'Number of days to look back for ticket with negatives'; diff --git a/modules/ticket/back/models/ticket-config.json b/modules/ticket/back/models/ticket-config.json index 7a008f97e3..677695595c 100644 --- a/modules/ticket/back/models/ticket-config.json +++ b/modules/ticket/back/models/ticket-config.json @@ -30,6 +30,9 @@ "lackAlertPrice": { "type": "number" }, + "lackDefaultAlertLevelCode": { + "type": "string" + }, "lackScopeDays": { "type": "number" } From 24411f9af12f94dd0eece43c511b6ac3cc316bfd Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 08:17:03 +0100 Subject: [PATCH 133/217] fix: refs #6321 revert change --- modules/supplier/back/methods/supplier/getItemsPackaging.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/supplier/back/methods/supplier/getItemsPackaging.js b/modules/supplier/back/methods/supplier/getItemsPackaging.js index 8231e9936f..8a27c89c4b 100644 --- a/modules/supplier/back/methods/supplier/getItemsPackaging.js +++ b/modules/supplier/back/methods/supplier/getItemsPackaging.js @@ -44,7 +44,7 @@ module.exports = Self => { JOIN hedera.imageConfig ic WHERE e.supplierFk = ? AND i.family IN ('EMB', 'CONT') - AND b.created > util.VN_CURDATE() - INTERVAL bc.monthsAgo MONTH) + AND b.created > (util.VN_CURDATE() - INTERVAL bc.monthsAgo MONTH) GROUP BY b.itemFk ORDER BY et.quantity DESC, quantityTotal DESC`, [entry, id, id]); }; From 1af01ad747f7ce712d987f83a8d8f424fad248c0 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 10:26:38 +0100 Subject: [PATCH 134/217] feat: refs #6321 sql lackDetail step1 --- .../back/methods/ticket/itemLackDetail.js | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 10d6c8fa91..2b341e5e7c 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -35,11 +35,10 @@ module.exports = Self => { const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); - - const stmt = new ParameterizedSQL( - ` - SELECT - s.id, + const vDated = Date.vnNew(); + const scopeDays = filter.where.scopeDays ?? 2; + const stmt = new ParameterizedSQL(` + SELECT s.id, st.code, t.id, t.nickname, @@ -56,24 +55,24 @@ module.exports = Self => { al.code alertLevelCode, z.name zoneName, z.id zoneFk, - Format(z.hour, "hh:mm") theoreticalhour, + z.hour theoreticalhour, cn.isRookie, - IF(ISNULL(sc.saleClonedFk),0,1) turno, - IF(ISNULL(tr.saleFk),0,1) peticionCompra, + sc.saleClonedFk turno, + tr.saleFk peticionCompra, DATE_FORMAT(IF(HOUR(t.shipped), t.shipped, IF(zc.hour, zc.hour, z.hour)),'%H:%i') minTimed, FALSE isBasket, substitution.hasObservation, - IF(d.code = 'spainTeamVip', 1, 0) hasToIgnore + d.code = 'spainTeamVip' hasToIgnore FROM sale s LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = s.id - INNER JOIN ticket t ON t.id =s.ticketFk + JOIN ticket t ON t.id = s.ticketFk LEFT JOIN zone z ON z.id = t.zoneFk LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = DATE(t.shipped) - INNER JOIN client c ON c.id=t.clientFk + JOIN client c ON c.id=t.clientFk LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id - INNER JOIN agencyMode ag ON ag.id=t.agencyModeFk - INNER JOIN ticketState tls ON tls.ticketFk=t.id + JOIN agencyMode ag ON ag.id=t.agencyModeFk + JOIN ticketState tls ON tls.ticketFk=t.id LEFT JOIN state st ON st.id=tls.state LEFT JOIN alertLevel al ON al.id = st.alertLevel LEFT JOIN saleCloned sc ON sc.saleClonedFk = s.id @@ -83,7 +82,7 @@ module.exports = Self => { LEFT JOIN ( SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasObservation FROM clientObservation co - INNER JOIN observationType ot ON ot.id = co.observationTypeFk + JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' GROUP BY co.clientFk ) substitution ON substitution.clientFk = c.id @@ -118,11 +117,11 @@ module.exports = Self => { NULL, TRUE, substitution.hasObservation, - IF(d.code = 'spainTeamVip', 1, 0) + d.code = 'spainTeamVip' FROM hedera.orderRow r - INNER JOIN hedera.order o ON o.id = r.orderFk - INNER JOIN client c ON c.id = o.customer_id - INNER JOIN agencyMode ag ON ag.id=o.agency_id + JOIN hedera.order o ON o.id = r.orderFk + JOIN client c ON c.id = o.customer_id + JOIN agencyMode ag ON ag.id=o.agency_id LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk LEFT JOIN department d ON d.id = wd.departmentFk @@ -139,16 +138,17 @@ module.exports = Self => { AND NOT o.confirmed AND r.itemFk = ? AND r.amount - ORDER BY hasToIgnore, isBasket;`, - [ - filter.where.warehouseFk, - itemFk, - 2, - filter.where.alertLevelCode, - 2, - filter.where.warehouseFk, - itemFk - ]); + ORDER BY hasToIgnore, isBasket + `, + [ + filter.where.warehouseFk, + itemFk, + scopeDays, + filter.where.alertLevelCode, + scopeDays, + filter.where.warehouseFk, + itemFk + ]); const sql = ParameterizedSQL.join([stmt], ';'); const result = await conn.executeStmt(sql, myOptions); From e736c95fb69ec1bc4a08c37736c771a02ef16357 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 10:29:48 +0100 Subject: [PATCH 135/217] feat: refs #6321 sql lackDetail step2 --- modules/ticket/back/methods/ticket/itemLackDetail.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 2b341e5e7c..2f922e9860 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -68,7 +68,7 @@ module.exports = Self => { JOIN ticket t ON t.id = s.ticketFk LEFT JOIN zone z ON z.id = t.zoneFk LEFT JOIN zoneClosure zc ON zc.zoneFk = t.zoneFk - AND zc.dated = DATE(t.shipped) + AND t.shipped BETWEEN zc.dated AND util.dayEnd(t.shipped) JOIN client c ON c.id=t.clientFk LEFT JOIN bs.clientNewBorn cn ON cn.clientFk=c.id JOIN agencyMode ag ON ag.id=t.agencyModeFk @@ -128,13 +128,13 @@ module.exports = Self => { LEFT JOIN ( SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasObservation FROM clientObservation co - INNER JOIN observationType ot ON ot.id = co.observationTypeFk + JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' GROUP BY co.clientFk ) substitution ON substitution.clientFk = c.id WHERE r.shipment BETWEEN util.VN_CURDATE() AND DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) + AND r.created >= ? AND r.warehouseFk = ? - AND r.created >= util.VN_CURDATE() AND NOT o.confirmed AND r.itemFk = ? AND r.amount @@ -146,6 +146,7 @@ module.exports = Self => { scopeDays, filter.where.alertLevelCode, scopeDays, + vDated, filter.where.warehouseFk, itemFk ]); From 3dd64e4257127f93370614b785a49280de2a718a Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 10:31:43 +0100 Subject: [PATCH 136/217] feat: refs #6321 sql lackDetail step3 --- modules/ticket/back/methods/ticket/itemLackDetail.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 2f922e9860..68fe8c44dd 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -132,7 +132,7 @@ module.exports = Self => { WHERE ot.code = 'substitution' GROUP BY co.clientFk ) substitution ON substitution.clientFk = c.id - WHERE r.shipment BETWEEN util.VN_CURDATE() AND DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) + WHERE r.shipment BETWEEN ? AND ? + INTERVAL ? DAY AND r.created >= ? AND r.warehouseFk = ? AND NOT o.confirmed @@ -146,7 +146,7 @@ module.exports = Self => { scopeDays, filter.where.alertLevelCode, scopeDays, - vDated, + vDated, vDated, vDated, filter.where.warehouseFk, itemFk ]); From 4c7b8212da78d4a1827dc178da14d557d77bdcb9 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 12:27:59 +0100 Subject: [PATCH 137/217] feat: refs #6321 changes --- .../back/methods/ticket/itemLackDetail.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 68fe8c44dd..f7317e990a 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -35,8 +35,14 @@ module.exports = Self => { const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); - const vDated = Date.vnNew(); + const vDated = (Date.vnNew()); + vDated.setHours(0, 0, 0, 0); const scopeDays = filter.where.scopeDays ?? 2; + let alertLevels = filter.where.alertLevelCode; + + if (!alertLevels) + alertLevels = (await Self.app.models.AlertLevel.find({fields: ['code']})).map(({code}) => code); + const stmt = new ParameterizedSQL(` SELECT s.id, st.code, @@ -89,7 +95,9 @@ module.exports = Self => { WHERE t.warehouseFk = ? AND s.itemFk = ? AND s.quantity <> 0 - AND t.shipped BETWEEN util.VN_CURDATE() AND DATE_ADD(util.VN_CURDATE(), INTERVAL ? DAY) + + AND t.shipped BETWEEN ? AND (? + INTERVAL ? DAY) + AND sgd.saleFk IS NULL AND (al.code IN (?) OR al.id IS NULL) UNION ALL @@ -133,7 +141,7 @@ module.exports = Self => { GROUP BY co.clientFk ) substitution ON substitution.clientFk = c.id WHERE r.shipment BETWEEN ? AND ? + INTERVAL ? DAY - AND r.created >= ? + AND r.created >= ? AND r.warehouseFk = ? AND NOT o.confirmed AND r.itemFk = ? @@ -143,8 +151,9 @@ module.exports = Self => { [ filter.where.warehouseFk, itemFk, + vDated, vDated, scopeDays, - filter.where.alertLevelCode, + alertLevels, scopeDays, vDated, vDated, vDated, filter.where.warehouseFk, From 110a5212c03748e6fcee086cf72a9093b96a7de3 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 6 Feb 2025 12:55:01 +0100 Subject: [PATCH 138/217] fix: refs #8535 deploy --- back/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/back/Dockerfile b/back/Dockerfile index 0f75f6949f..b2c3298966 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -13,6 +13,7 @@ RUN apt-get update \ graphicsmagick \ && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y --no-install-recommends nodejs \ + && npm install -g corepack@0.31.0 \ && corepack enable pnpm # Puppeteer From ab0667f85c804eb3c4797756c0cb62dac946a6ac Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 12:31:46 +0000 Subject: [PATCH 139/217] feat: retrive requested fields --- .../vn/procedures/ticket_canbePostponed.sql | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/db/routines/vn/procedures/ticket_canbePostponed.sql b/db/routines/vn/procedures/ticket_canbePostponed.sql index a21e171cfa..f8457adf1d 100644 --- a/db/routines/vn/procedures/ticket_canbePostponed.sql +++ b/db/routines/vn/procedures/ticket_canbePostponed.sql @@ -30,11 +30,16 @@ BEGIN st.code stateCode, sub2.code futureStateCode, st.classColor, - sub2.classColor futureClassColor + sub2.classColor futureClassColor, + am.id agencyFk, + am.name agency, + sub2.agencyModeFk futureAgencyFk, + sub2.agencyMode futureAgency FROM vn.saleVolume sv JOIN vn.sale s ON s.id = sv.saleFk JOIN vn.item i ON i.id = s.itemFk JOIN vn.ticket t ON t.id = sv.ticketFk + JOIN vn.agencyMode am ON am.id = t.agencyModeFk JOIN vn.address a ON a.id = t.addressFk JOIN vn.province p ON p.id = a.provinceFk JOIN vn.country c ON c.id = p.countryFk @@ -54,16 +59,19 @@ BEGIN st.name state, st.code, st.classColor, + am.id agencyModeFk, + am.name agencyMode, GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) iptd - FROM vn.ticket t - JOIN vn.ticketState ts ON ts.ticketFk = t.id - JOIN vn.state st ON st.id = ts.stateFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - WHERE t.shipped BETWEEN vFutureDated - AND util.dayend(vFutureDated) - AND t.warehouseFk = vWarehouseFk - GROUP BY t.id + FROM vn.ticket t + JOIN vn.agencyMode am ON am.id = t.agencyModeFk + JOIN vn.ticketState ts ON ts.ticketFk = t.id + JOIN vn.state st ON st.id = ts.stateFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + WHERE t.shipped BETWEEN vFutureDated + AND util.dayend(vFutureDated) + AND t.warehouseFk = vWarehouseFk + GROUP BY t.id ) sub GROUP BY sub.addressFk ) sub2 ON sub2.addressFk = t.addressFk AND t.id != sub2.id From 8170eafa3694ab41d52809f3176db227c3f7cccc Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 15:19:07 +0100 Subject: [PATCH 140/217] feat: refs #6321 remove ticketConfig var --- db/versions/11132-aquaDracena/00-firstScript.sql | 1 - modules/ticket/back/models/ticket-config.json | 3 --- 2 files changed, 4 deletions(-) diff --git a/db/versions/11132-aquaDracena/00-firstScript.sql b/db/versions/11132-aquaDracena/00-firstScript.sql index d922fa54d0..08bfca3edc 100644 --- a/db/versions/11132-aquaDracena/00-firstScript.sql +++ b/db/versions/11132-aquaDracena/00-firstScript.sql @@ -1,3 +1,2 @@ ALTER TABLE vn.ticketConfig ADD lackAlertPrice int(11) DEFAULT 30 NOT NULL COMMENT 'Value to alert when item proposal exceed price'; -ALTER TABLE vn.ticketConfig ADD lackDefaultAlertLevelCode varchar(45) DEFAULT 'FREE' NOT NULL COMMENT 'Default alertLevelCode to retrieve tickets with negatives'; ALTER TABLE vn.ticketConfig ADD lackScopeDays int(11) DEFAULT 2 NOT NULL COMMENT 'Number of days to look back for ticket with negatives'; diff --git a/modules/ticket/back/models/ticket-config.json b/modules/ticket/back/models/ticket-config.json index 677695595c..7a008f97e3 100644 --- a/modules/ticket/back/models/ticket-config.json +++ b/modules/ticket/back/models/ticket-config.json @@ -30,9 +30,6 @@ "lackAlertPrice": { "type": "number" }, - "lackDefaultAlertLevelCode": { - "type": "string" - }, "lackScopeDays": { "type": "number" } From 338e833c0bff375eca53d87846008839bf3bf8f5 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 15:19:23 +0100 Subject: [PATCH 141/217] feat: refs #6321 i18n --- loopback/locale/en.json | 2 +- loopback/locale/fr.json | 2 +- loopback/locale/pt.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 27c6ac2161..8db0bb026f 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -255,6 +255,6 @@ "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.", - "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", "The tag and priority can't be repeated": "The tag and priority can't be repeated" } diff --git a/loopback/locale/fr.json b/loopback/locale/fr.json index 5db9e178fe..b61c46a760 100644 --- a/loopback/locale/fr.json +++ b/loopback/locale/fr.json @@ -369,6 +369,6 @@ "The web user's email already exists": "L'email de l'internaute existe déjà", "Incorrect delivery order alert on route": "Alerte de bon de livraison incorrect sur l'itinéraire: {{ route }} zone : {{ zone }}", "Ticket has been delivered out of order": "Le ticket {{ticket}} de la route {{{fullUrl}}} a été livré hors service.", - "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", } diff --git a/loopback/locale/pt.json b/loopback/locale/pt.json index 44ad468c33..9ad3afa4d8 100644 --- a/loopback/locale/pt.json +++ b/loopback/locale/pt.json @@ -368,6 +368,6 @@ "The web user's email already exists": "O e-mail do utilizador da web já existe.", "Incorrect delivery order alert on route": "Alerta de ordem de entrega incorreta na rota: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "O ticket {{ticket}} da rota {{{fullUrl}}} foi entregue fora de ordem.", - "negativeReplaced": "(Negativos) Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", } From 9626b6c0ff9d54f6ce65d460bf3c3a436a5ecfa5 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 15:19:39 +0100 Subject: [PATCH 142/217] feat: refs #6321 update itemLackDetail --- modules/ticket/back/methods/ticket/itemLackDetail.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index f7317e990a..4b8d048f87 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -53,8 +53,8 @@ module.exports = Self => { s.quantity, ag.name, ag.id agencyFk, - IF(ISNULL(tls.alertLevel),0,tls.alertLevel) alertLevel, - IF(ISNULL(st.name),'Libre',st.name) stateName, + tls.alertLevel alertLevel, + st.name stateName, s.id saleFk, s.itemFk, s.price price, @@ -68,7 +68,7 @@ module.exports = Self => { DATE_FORMAT(IF(HOUR(t.shipped), t.shipped, IF(zc.hour, zc.hour, z.hour)),'%H:%i') minTimed, FALSE isBasket, substitution.hasObservation, - d.code = 'spainTeamVip' hasToIgnore + (d.code = 'spainTeamVip') hasToIgnore FROM sale s LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = s.id JOIN ticket t ON t.id = s.ticketFk From 4e4d6c3b6a1f1791625e04f5a364c096d9c5ffe2 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 15:20:44 +0100 Subject: [PATCH 143/217] fix: refs #6321 fixtures --- db/dump/fixtures.before.sql | 64 +++++++++++-------------------------- 1 file changed, 18 insertions(+), 46 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 389b224284..61341e878a 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -798,7 +798,8 @@ INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeF (34, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1103, 'BEJAR', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL); + (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), + (1000000, NULL, 1, 1, NULL, '2001-01-01 00:00:00.000', '2001-01-01', 1, 'employee', 131, NULL, 0, 1, 1.00, 0.00, '2025-02-06 00:00:00.000', NULL, NULL, '', NULL); INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`) VALUES @@ -1002,7 +1003,8 @@ VALUES (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 0), (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), - (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0); + (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), + (88, 1, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', 'Stark Industries', 10.0, 'VT', 0, NULL, NULL, 1, NULL, 0); -- Update the taxClass after insert of the items @@ -1125,7 +1127,8 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack'), (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'), - (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'); + (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'), + (43, 88, 1000000, 'Chest medical box 2', 15.00, 10.00, 0, 0, 0, '2025-02-06 00:00:00.000', ''); INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) VALUES @@ -1452,12 +1455,19 @@ INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`) (93, 14, 58, 'medical box', 2), (94, 14, 27, '100cm', 3), (95, 14, 36, 'Stark Industries', 4), - (96, 14, 1, 'White', 5), + (96, 14, 1, 'White', 5), (97, 14, 67, 'supply', 6), (98, 14, 23, '1', 7), (99, 15, 92, 'Trolley', 2), (100, 16, 92, 'Pallet', 2), - (101, 71, 92, 'Shipping cost', 2); + (101, 71, 92, 'Shipping cost', 2), + (102, 88, 56, 'Chest', 1), + (103, 88, 58, 'ammo box', 2), + (104, 88, 27, '100cm', 3), + (105, 88, 36, 'Stark Industries', 4), + (106, 88, 1, 'Green', 5), + (107, 88, 67, 'supply', 6), + (108, 88, 23, '13', 7); INSERT INTO `vn`.`itemTypeTag`(`id`, `itemTypeFk`, `tagFk`, `priority`) VALUES @@ -1585,7 +1595,8 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal (15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, 4, util.VN_CURDATE()), (16, 99,1,50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, '2024-07-30 08:13:51.000'), (17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), - (18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH); + (18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), + (10000002, 12, 88, 50.0000, 5000, '4', 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, util.VN_CURDATE() - INTERVAL 2 MONTH); INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`,`total`, `date_make`, `first_row_stamp`, `confirm_date`) VALUES @@ -4111,43 +4122,4 @@ INSERT IGNORE INTO vn.vehicleType (id, name) VALUES (1,'vehículo empresa'), (2, 'furgoneta'), (3, 'cabeza tractora'), - (4, 'remolque');-- Negativos - -INSERT INTO `vn`.`item` (id, name, `size`, stems, minPrice, isToPrint, family, box, originFk, doPhoto, image, inkFk, intrastatFk, hasMinPrice, created, typeFk, generic, density, relevancy, expenseFk, isActive, longName, subName, tag5, value5, tag6, value6, tag7, value7, minimum, upToDown, hasKgPrice, isFloramondo, isFragile, stemMultiplier, isLaid, lastUsed, editorFk, isBoxPickingMode) - VALUES - (88, 'Lack negative', 200, 1, 10.0, 0, 'VT', 0, 2, 0, '', 'WHT', 6021010, 1, util.VN_CURDATE(), 1, 0, 167, 0, '4751000000', 1, 'Lack negative origin', 'Stark Industries', 'Color', 'White', 'Categoria', 'supply', 'Tallos', '1', 3, 0, 0, 0, 0, 1.0, 0, util.VN_CURDATE(), 100, 0); - -INSERT INTO `vn`.`ticket` (id, clientFk, warehouseFk, shipped, nickname, refFk, addressFk, workerFk, observations, isSigned, isLabeled, isPrinted, packages, location, `hour`, created, isBlocked, solution, routeFk, priority, hasPriority, companyFk, agencyModeFk, landed, isBoxed, isDeleted, zoneFk, zonePrice, zoneBonus, totalWithVat, totalWithoutVat, weight, clonedFrom, cmrFk, editorFk, problem, risk) - VALUES - (1000000, 1, 1, util.VN_CURDATE(), 'employee', NULL, 131, NULL, NULL, 0, 0, 0, 0, NULL, 0, CURDATE(), 1, NULL, NULL, NULL, 1, 442, 1, util.VN_CURDATE(), 0, 0, 1, 1.00, 0.00, 0.00, NULL, NULL, NULL, NULL, 9, '', NULL); - -INSERT INTO `vn`.`sale` (id, itemFk, ticketFk, concept, quantity, originalQuantity, price, discount, priceFixed, reserved, isPicked, isPriceFixed, created, isAdded, total, editorFk, problem) - VALUES - (43, 88, 1000000, 'Chest medical box 2', 15.00, 155.0, 10.00, 0, 0.00, 0, 0, 0, CURDATE(), 0, 1550.00, 100, ''); --- Negativos - --- Item proposal - -INSERT INTO `cache`.`visible` (`calc_id`, `item_id`, `visible`) - VALUES - (16, 5, 5500), - (16, 1, 5500), - (16, 2, 5500), - (16, 3, 5500), - (16, 4, 5500), - (16, 88, 5500), - (16, 6, 5500), - (16, 10, 5500); - -INSERT INTO `cache`.`available` (`calc_id`, `item_id`, `available`) - VALUES - (14, 1, 5000), - (14, 2, 5000), - (14, 3, 5000), - (14, 4, 5000), - (14, 5, 5000), - (14, 88, 5000), - (14, 6, 5000), - (14, 10, 5000); - --- Item proposal + (4, 'remolque'); From ba58746a030c1ca025e1e8e101ca3cadf596f989 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 23:22:58 +0100 Subject: [PATCH 144/217] fix: refs #6321 test --- db/dump/fixtures.before.sql | 2 +- modules/ticket/back/methods/ticket/itemLackDetail.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 61341e878a..733a04aa8e 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1465,7 +1465,7 @@ INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`) (103, 88, 58, 'ammo box', 2), (104, 88, 27, '100cm', 3), (105, 88, 36, 'Stark Industries', 4), - (106, 88, 1, 'Green', 5), + (106, 88, 1, 'White', 5), (107, 88, 67, 'supply', 6), (108, 88, 23, '13', 7); diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 4b8d048f87..44c26bb3bd 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -86,7 +86,7 @@ module.exports = Self => { LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk LEFT JOIN department d ON d.id = wd.departmentFk LEFT JOIN ( - SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasObservation + SELECT co.clientFk, COUNT(*) hasObservation FROM clientObservation co JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' @@ -134,7 +134,7 @@ module.exports = Self => { LEFT JOIN workerDepartment wd ON wd.workerFk = c.salesPersonFk LEFT JOIN department d ON d.id = wd.departmentFk LEFT JOIN ( - SELECT co.clientFk, IF(COUNT(*) > 0, FALSE, TRUE) hasObservation + SELECT co.clientFk, COUNT(*) hasObservation FROM clientObservation co JOIN observationType ot ON ot.id = co.observationTypeFk WHERE ot.code = 'substitution' From 9390c0efedb180902b0cdf7c140f1391ef639bf7 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 07:53:00 +0100 Subject: [PATCH 145/217] test: refs #6321 getSimilar.spec.js --- modules/item/back/methods/item/getSimilar.js | 2 +- .../methods/item/specs/getSimilar.spec.js | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 modules/item/back/methods/item/specs/getSimilar.spec.js diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 2479d08b52..05c4a20e53 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -1,5 +1,5 @@ module.exports = Self => { - Self.remoteMethodCtx('getSimilar', { + Self.remoteMethod('getSimilar', { description: 'Returns list of items with similar item requested', accessType: 'READ', accepts: [ diff --git a/modules/item/back/methods/item/specs/getSimilar.spec.js b/modules/item/back/methods/item/specs/getSimilar.spec.js new file mode 100644 index 0000000000..5dec077b66 --- /dev/null +++ b/modules/item/back/methods/item/specs/getSimilar.spec.js @@ -0,0 +1,49 @@ +const models = require('vn-loopback/server/server').models; + +describe('Item get similar', () => { + let options; + let tx; + const ctx = beforeAll.getCtx(); + beforeAll.mockLoopBackContext(); + beforeEach(async() => { + tx = await models.Item.beginTransaction({}); + options = {transaction: tx}; + }); + + afterEach(async() => { + if (tx) + await tx.rollback(); + }); + + it('should return similar items', async() => { + const filter = { + itemFk: 88, sales: 43, + where: { + 'scopeDays': '2', + 'showType': true, + 'alertLevelCode': 'FREE', + 'date': '2001-01-01T11:00:00.000Z', + 'warehouseFk': 1 + } + }; + const result = await models.Item.getSimilar(ctx, filter, options); + + expect(result.length).toEqual(2); + }); + + it('should return empty array is if not exists', async() => { + const filter = { + itemFk: 88, sales: 43, + where: { + 'scopeDays': '2', + 'showType': true, + 'alertLevelCode': 'FREE', + 'date': '2001-01-01T11:00:00.000Z', + 'warehouseFk': 60 + } + }; + const result = await models.Item.getSimilar(ctx, filter, options); + + expect(result.length).toEqual(0); + }); +}); From e035a73e064d7eddb2d0e12d8b8d08e70fc9b979 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 07:57:10 +0100 Subject: [PATCH 146/217] feat: refs #6321 i18n es negativeReplaced --- loopback/locale/es.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 4abf005318..a56d4eaa40 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -397,5 +397,6 @@ "Incorrect delivery order alert on route": "Alerta de orden de entrega incorrecta en ruta: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sido entregado en su orden.", "Price cannot be blank": "El precio no puede estar en blanco", - "clonedFromTicketWeekly": ", que es una linea clonada del ticket {{ticketWeekly}}" -} \ No newline at end of file + "clonedFromTicketWeekly": ", que es una linea clonada del ticket {{ticketWeekly}}", + "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", +} From 9322360979a8fbcb57a86a42d79326907f9f6fca Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 08:41:49 +0100 Subject: [PATCH 147/217] fix: refs #6321 dates in fixtures.before --- db/dump/fixtures.before.sql | 4 ++-- .../back/methods/route/specs/getSuggestedTickets.spec.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 733a04aa8e..5a35e26434 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -799,7 +799,7 @@ INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeF (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (1000000, NULL, 1, 1, NULL, '2001-01-01 00:00:00.000', '2001-01-01', 1, 'employee', 131, NULL, 0, 1, 1.00, 0.00, '2025-02-06 00:00:00.000', NULL, NULL, '', NULL); + (1000000, NULL, 1, 1, NULL, util.VN_CURDATE(), CURDATE(), 1, 'employee', 131, NULL, 0, 1, 1.00, 0.00, util.VN_CURDATE(), NULL, NULL, '', NULL); INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`) VALUES @@ -1128,7 +1128,7 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'), (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'), - (43, 88, 1000000, 'Chest medical box 2', 15.00, 10.00, 0, 0, 0, '2025-02-06 00:00:00.000', ''); + (43, 88, 1000000, 'Chest medical box 2', 15.00, 10.00, 0, 0, 0, util.VN_CURDATE(), ''); INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) VALUES diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js index 3d6702482d..0acc6c1a7b 100644 --- a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -31,7 +31,7 @@ describe('route getSuggestedTickets()', () => { const length = result.length; const anyResult = result[Math.floor(Math.random() * Math.floor(length))]; - expect(result.length).toEqual(5); + expect(result.length).toEqual(4); expect(anyResult.zoneFk).toEqual(1); expect(anyResult.agencyModeFk).toEqual(8); From f4dbddbe153615381c38cff94c0ded16d5887388 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 09:54:55 +0100 Subject: [PATCH 148/217] fix: refs #6321 dates in fixtures.before --- db/dump/fixtures.before.sql | 4 ++-- loopback/locale/es.json | 2 +- .../back/methods/route/specs/getSuggestedTickets.spec.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 5a35e26434..b255d169a3 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -799,7 +799,7 @@ INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeF (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (1000000, NULL, 1, 1, NULL, util.VN_CURDATE(), CURDATE(), 1, 'employee', 131, NULL, 0, 1, 1.00, 0.00, util.VN_CURDATE(), NULL, NULL, '', NULL); + (1000000, NULL, 1, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1, 'employee', 131, NULL, 0, 1, 1.00, 0.00, CURDATE(), NULL, NULL, '', NULL); INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`) VALUES @@ -1128,7 +1128,7 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasItemLost'), (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'), (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE(), 'hasComponentLack,hasRounding,hasItemLost'), - (43, 88, 1000000, 'Chest medical box 2', 15.00, 10.00, 0, 0, 0, util.VN_CURDATE(), ''); + (43, 88, 1000000, 'Chest medical box 2', 15.00, 10.00, 0, 0, 0, CURDATE(), ''); INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) VALUES diff --git a/loopback/locale/es.json b/loopback/locale/es.json index a56d4eaa40..0dbfc45d0e 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -22,7 +22,7 @@ "Cannot change the payment method if no salesperson": "No se puede cambiar la forma de pago si no hay comercial asignado", "can't be blank": "El campo no puede estar vacío", "Observation type must be unique": "El tipo de observación no puede repetirse", - "The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero", + "The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero", "The grade must be similar to the last one": "El grade debe ser similar al último", "Only manager can change the credit": "Solo el gerente puede cambiar el credito de este cliente", "Name cannot be blank": "El nombre no puede estar en blanco", diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js index 0acc6c1a7b..3d6702482d 100644 --- a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -31,7 +31,7 @@ describe('route getSuggestedTickets()', () => { const length = result.length; const anyResult = result[Math.floor(Math.random() * Math.floor(length))]; - expect(result.length).toEqual(4); + expect(result.length).toEqual(5); expect(anyResult.zoneFk).toEqual(1); expect(anyResult.agencyModeFk).toEqual(8); From a4f3975340e06c72e1d672e20faecd1d33bef380 Mon Sep 17 00:00:00 2001 From: Pako Date: Fri, 7 Feb 2025 10:40:00 +0100 Subject: [PATCH 149/217] feat(catalog_calculate): refs #8408 new concept availabled Refs: #8408 --- db/dump/fixtures.before.sql | 7 ++--- .../vn/procedures/catalog_calculate.sql | 27 +++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 76ccc7c1e3..54a79024a3 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -710,7 +710,7 @@ VALUES (6, 'Zone expensive B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100, 500), (7, 'Zone refund', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 23, 0, 1, 0, 100, 0.5), (8, 'Zone others', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 10, 0, 1, 0, 100, 0.5), - (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 2, 0, 1, 0, 100, 0.5), + (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('13:00')), 2, 0, 1, 0, 100, 0.5), (10, 'Zone teleportation', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 3, 0, 1, 0, 100, 0.5), (11, 'Zone pickup C', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100, 0.5), (12, 'Zone entanglement', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 4, 0, 1, 0, 100, 0.5), @@ -742,7 +742,7 @@ INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`) (6, util.VN_CURDATE(), '23:59'), (7, util.VN_CURDATE(), '23:59'), (8, util.VN_CURDATE(), '23:59'), - (9, util.VN_CURDATE(), '23:59'), + (9, util.VN_CURDATE(), '13:00'), (10, util.VN_CURDATE(), '23:59'), (11, util.VN_CURDATE(), '23:59'), (12, util.VN_CURDATE(), '23:59'), @@ -2747,7 +2747,8 @@ INSERT INTO `vn`.`zoneAgencyMode`(`id`, `agencyModeFk`, `zoneFk`) (1, 1, 1), (2, 1, 2), (3, 6, 5), - (4, 7, 1); + (4, 7, 1), + (5, 9, 9); INSERT INTO `vn`.`roadmapAddress` (`addressFk`) VALUES diff --git a/db/routines/vn/procedures/catalog_calculate.sql b/db/routines/vn/procedures/catalog_calculate.sql index 39bf2b441b..8af192d2e5 100644 --- a/db/routines/vn/procedures/catalog_calculate.sql +++ b/db/routines/vn/procedures/catalog_calculate.sql @@ -19,13 +19,16 @@ BEGIN * @return tmp.ticketComponentPrice */ DECLARE vAvailableCalc INT; - DECLARE vAvailableNoRaidsCalc INT; + DECLARE vAvailabled DATETIME; + -- DECLARE vAvailableNoRaidsCalc INT; + DECLARE vDone BOOL; + DECLARE vHour INT; DECLARE vShipped DATE; DECLARE vWarehouseFk SMALLINT; DECLARE vZoneFk INT; - DECLARE vDone BOOL; + DECLARE cTravelTree CURSOR FOR - SELECT zoneFk, warehouseFk, shipped FROM tmp.zoneGetShipped; + SELECT zoneFk, warehouseFk, shipped, `hour` FROM tmp.zoneGetShipped; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; @@ -66,14 +69,16 @@ BEGIN OPEN cTravelTree; l: LOOP SET vDone = FALSE; - FETCH cTravelTree INTO vZoneFk, vWarehouseFk, vShipped; + FETCH cTravelTree INTO vZoneFk, vWarehouseFk, vShipped, vHour; + + SET vAvailabled = vShipped + INTERVAL vHour HOUR; IF vDone THEN LEAVE l; END IF; - CALL `cache`.available_refresh(vAvailableCalc, FALSE, vWarehouseFk, vShipped); - CALL `cache`.availableNoRaids_refresh(vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped); + CALL `cache`.available_refresh(vAvailableCalc, FALSE, vWarehouseFk, vAvailabled); + -- CALL `cache`.availableNoRaids_refresh(vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped); CALL buy_getUltimate(NULL, vWarehouseFk, vShipped); INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk, zoneFk) @@ -83,13 +88,13 @@ BEGIN bu.buyFk, vZoneFk FROM `cache`.available a - LEFT JOIN cache.availableNoRaids anr ON anr.item_id = a.item_id - AND anr.calc_id = vAvailableNoRaidsCalc + -- LEFT JOIN cache.availableNoRaids anr ON anr.item_id = a.item_id + -- AND anr.calc_id = vAvailableNoRaidsCalc JOIN tmp.item i ON i.itemFk = a.item_id JOIN item it ON it.id = i.itemFk JOIN `zone` z ON z.id = vZoneFk LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = a.item_id - LEFT JOIN edi.supplyResponse sr ON sr.ID = it.supplyResponseFk + /* LEFT JOIN edi.supplyResponse sr ON sr.ID = it.supplyResponseFk LEFT JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID LEFT JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID LEFT JOIN (SELECT isVNHSupplier, isEarlyBird, TRUE AS itemAllowed @@ -107,7 +112,7 @@ BEGIN OR vShipped > af.afterDated OR ISNULL(af.afterDated)) ) sub ON sub.isVNHSupplier = v.isVNHSupplier - AND (sub.isEarlyBird = mp.isEarlyBird OR ISNULL(sub.isEarlyBird)) + AND (sub.isEarlyBird = mp.isEarlyBird OR ISNULL(sub.isEarlyBird)) */ JOIN agencyMode am ON am.id = vAgencyModeFk JOIN agency ag ON ag.id = am.agencyFk JOIN itemType itt ON itt.id = it.typeFk @@ -124,7 +129,7 @@ BEGIN AND ait.itemTypeFk = itt.id WHERE a.calc_id = vAvailableCalc AND a.available > 0 - AND (sub.itemAllowed OR NOT it.isFloramondo OR anr.available > 0) + -- AND (sub.itemAllowed OR NOT it.isFloramondo OR anr.available > 0) AND (ag.isAnyVolumeAllowed OR NOT itt.isUnconventionalSize) AND (it.`size` IS NULL OR IF(itc.isReclining, From 21d9369250bec18b78a32d197a9c40d8dd0b1e31 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 7 Feb 2025 11:04:10 +0100 Subject: [PATCH 150/217] fix: refs #8172 Version fix --- db/versions/11389-yellowChico/00-firstScript.sql | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/db/versions/11389-yellowChico/00-firstScript.sql b/db/versions/11389-yellowChico/00-firstScript.sql index e8fd57e287..feaca12788 100644 --- a/db/versions/11389-yellowChico/00-firstScript.sql +++ b/db/versions/11389-yellowChico/00-firstScript.sql @@ -10,14 +10,12 @@ ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; -UPDATE vn.parkingCoordinates pc - JOIN vn.parking p ON p.id = pc.parkingFk - SET pc.x = IFNULL(p.`column`, 0), - pc.y = IFNULL(p.`row`, 0), - pc.z = IFNULL(p.`floor`, 0) - WHERE p.`column` IS NOT NULL - OR p.`row` IS NOT NULL - OR p.`floor` IS NOT NULL; +INSERT INTO vn.parkingCoordinates (parkingFk, x, y, z) + SELECT id, `column`, `row`, `floor` + FROM vn.parking + WHERE `column` IS NOT NULL + OR `row` IS NOT NULL + OR `floor` IS NOT NULL; ALTER TABLE vn.parking DROP COLUMN `column`, From ba323bb7bf3f6b1cb0ede117ab678808ca6a38fb Mon Sep 17 00:00:00 2001 From: Pako Date: Fri, 7 Feb 2025 12:53:15 +0100 Subject: [PATCH 151/217] fix(fixtures.before): refs #8408 rollback changes refs#8408 --- db/dump/fixtures.before.sql | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 54a79024a3..76ccc7c1e3 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -710,7 +710,7 @@ VALUES (6, 'Zone expensive B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100, 500), (7, 'Zone refund', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 23, 0, 1, 0, 100, 0.5), (8, 'Zone others', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 10, 0, 1, 0, 100, 0.5), - (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('13:00')), 2, 0, 1, 0, 100, 0.5), + (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 2, 0, 1, 0, 100, 0.5), (10, 'Zone teleportation', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 3, 0, 1, 0, 100, 0.5), (11, 'Zone pickup C', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 1, 0, 100, 0.5), (12, 'Zone entanglement', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 4, 0, 1, 0, 100, 0.5), @@ -742,7 +742,7 @@ INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`) (6, util.VN_CURDATE(), '23:59'), (7, util.VN_CURDATE(), '23:59'), (8, util.VN_CURDATE(), '23:59'), - (9, util.VN_CURDATE(), '13:00'), + (9, util.VN_CURDATE(), '23:59'), (10, util.VN_CURDATE(), '23:59'), (11, util.VN_CURDATE(), '23:59'), (12, util.VN_CURDATE(), '23:59'), @@ -2747,8 +2747,7 @@ INSERT INTO `vn`.`zoneAgencyMode`(`id`, `agencyModeFk`, `zoneFk`) (1, 1, 1), (2, 1, 2), (3, 6, 5), - (4, 7, 1), - (5, 9, 9); + (4, 7, 1); INSERT INTO `vn`.`roadmapAddress` (`addressFk`) VALUES From 466a0a58d96cf06bcb32aefb6d3889ba24648b45 Mon Sep 17 00:00:00 2001 From: Pako Date: Fri, 7 Feb 2025 12:59:41 +0100 Subject: [PATCH 152/217] fix(catalog_calculate): refs #8408 delete commented lines refs#8408 --- .../vn/procedures/catalog_calculate.sql | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/db/routines/vn/procedures/catalog_calculate.sql b/db/routines/vn/procedures/catalog_calculate.sql index 8af192d2e5..b0257bc678 100644 --- a/db/routines/vn/procedures/catalog_calculate.sql +++ b/db/routines/vn/procedures/catalog_calculate.sql @@ -78,7 +78,6 @@ BEGIN END IF; CALL `cache`.available_refresh(vAvailableCalc, FALSE, vWarehouseFk, vAvailabled); - -- CALL `cache`.availableNoRaids_refresh(vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped); CALL buy_getUltimate(NULL, vWarehouseFk, vShipped); INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk, zoneFk) @@ -88,31 +87,10 @@ BEGIN bu.buyFk, vZoneFk FROM `cache`.available a - -- LEFT JOIN cache.availableNoRaids anr ON anr.item_id = a.item_id - -- AND anr.calc_id = vAvailableNoRaidsCalc JOIN tmp.item i ON i.itemFk = a.item_id JOIN item it ON it.id = i.itemFk JOIN `zone` z ON z.id = vZoneFk LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = a.item_id - /* LEFT JOIN edi.supplyResponse sr ON sr.ID = it.supplyResponseFk - LEFT JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID - LEFT JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID - LEFT JOIN (SELECT isVNHSupplier, isEarlyBird, TRUE AS itemAllowed - FROM addressFilter af - JOIN (SELECT ad.provinceFk, p.countryFk, ad.isLogifloraAllowed - FROM address ad - JOIN province p ON p.id = ad.provinceFk - WHERE ad.id = vAddressFk - ) sub2 ON sub2.provinceFk <=> IFNULL(af.provinceFk, sub2.provinceFk) - AND sub2.countryFk <=> IFNULL(af.countryFk, sub2.countryFk) - AND sub2.isLogifloraAllowed <=> IFNULL(af.isLogifloraAllowed, sub2.isLogifloraAllowed) - WHERE vWarehouseFk = af.warehouseFk - AND (vShipped < af.beforeDated - OR ISNULL(af.beforeDated) - OR vShipped > af.afterDated - OR ISNULL(af.afterDated)) - ) sub ON sub.isVNHSupplier = v.isVNHSupplier - AND (sub.isEarlyBird = mp.isEarlyBird OR ISNULL(sub.isEarlyBird)) */ JOIN agencyMode am ON am.id = vAgencyModeFk JOIN agency ag ON ag.id = am.agencyFk JOIN itemType itt ON itt.id = it.typeFk @@ -129,7 +107,6 @@ BEGIN AND ait.itemTypeFk = itt.id WHERE a.calc_id = vAvailableCalc AND a.available > 0 - -- AND (sub.itemAllowed OR NOT it.isFloramondo OR anr.available > 0) AND (ag.isAnyVolumeAllowed OR NOT itt.isUnconventionalSize) AND (it.`size` IS NULL OR IF(itc.isReclining, From d76db10e672eda424c81cfe0a2eed8aa2f0aa316 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 7 Feb 2025 13:39:53 +0100 Subject: [PATCH 153/217] fix: fixed item name filter --- modules/item/back/methods/fixed-price/filter.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/item/back/methods/fixed-price/filter.js b/modules/item/back/methods/fixed-price/filter.js index 488c2441df..cd9fa08ba2 100644 --- a/modules/item/back/methods/fixed-price/filter.js +++ b/modules/item/back/methods/fixed-price/filter.js @@ -22,6 +22,11 @@ module.exports = Self => { type: 'integer', description: 'The item id', }, + { + arg: 'name', + type: 'string', + description: 'The item name', + }, { arg: 'typeFk', type: 'integer', @@ -112,6 +117,8 @@ module.exports = Self => { : {'it.code': {like: `%${value}%`}}; case 'categoryFk': return {'it.categoryFk': value}; + case 'name': + return {'i.name': {like: `%${value}%`}}; case 'buyerFk': return {'it.workerFk': value}; case 'warehouseFk': From ca39edd01041199c45604a33398fb0db2ce61ec1 Mon Sep 17 00:00:00 2001 From: Pako Date: Fri, 7 Feb 2025 14:04:17 +0100 Subject: [PATCH 154/217] fix: refs #8408 test --- db/dump/fixtures.local--.sql | 1110 ++++++++++++++++++++++++++++++++++ 1 file changed, 1110 insertions(+) create mode 100644 db/dump/fixtures.local--.sql diff --git a/db/dump/fixtures.local--.sql b/db/dump/fixtures.local--.sql new file mode 100644 index 0000000000..8d04d777d9 --- /dev/null +++ b/db/dump/fixtures.local--.sql @@ -0,0 +1,1110 @@ +-- Semillero +SET @item = 100000; +SET @isTriggerDisabled := TRUE; +SET @buyNumMaxPerENtry := 25; +SET @buyingValueMax := 1; +SET @packagingValueMax := 0.2; +SET @comissionValueMax := 0.1; +SET @freightValueMax := 0.15; +SET @groupingMax := 20; +SET @packingMax := 150; +SET @stemsStep := 1; +SET @stickersMax := 40; +SET @weightMax := 20; +SET @margin := 25; +SET @marginGap := 5; +SET @landed := CURDATE(); +SET @warehouseFk := 1; +SET @entryNumberPerDayMax := 4; +SET @entryScopeDaysMax := 10; +SET @allEntryReceived := TRUE; +SET @ticketNumberMaxByDay = 100; +SET @saleNumberMaxByTicket = 25; +SET @company := 442; +SET @deliveryRatio := 0.10; +SET @itemPackingTypeCount := 4; +SET @itemPackingTypeNullRate := 0.5; + +-- Vaciado de tablas +USE vn; + +DELETE FROM bs.waste; +DELETE FROM hedera.orderRow; +DELETE FROM itemShelving; +DELETE FROM buy; +DELETE FROM sale; +DELETE FROM expedition; +DELETE FROM packagingConfig; +DELETE FROM ticketPackaging; +DELETE FROM packaging; +DELETE FROM expeditionBoxVol; +DELETE FROM item; +DELETE FROM origin; +DELETE FROM entryDms; +DELETE FROM entry; +DELETE FROM travelThermograph; +DELETE FROM travel; +DELETE FROM cache.stock; +DELETE FROM claim; +DELETE FROM ticketRefund; +DELETE FROM ticket; +DELETE FROM itemPackingType; + + + + + +INSERT INTO vn.origin + (code, name, warehouseFk) + VALUES + ('RU', 'Rusia', @warehouseFk), + ('ES', 'España', @warehouseFk), + ('CH', 'China', @warehouseFk); + + +REPLACE vn.packaging + (id, volume, width, `depth`, height,base,isPackageReturnable,upload) + VALUES + ('577',48000,40,30,40,4, TRUE,TRUE), + ('566',30000,30,25,40,3, TRUE,TRUE), + ('94',150000,100,50,30,1.1, FALSE, FALSE); +-- Generación de items +CREATE OR REPLACE TEMPORARY TABLE tGenero + (name VARCHAR(50) PRIMARY KEY) + ENGINE = MEMORY; + + +INSERT INTO tGenero + VALUES + ("Amuleto"), + ("Casco"), + ("Cetro"), + ("Colgante"), + ("Escudo"), + ("Mandoble"), + ("Fáser"), + ("Látigo"), + ("Guantelete"), + ("Martillo"), + ("Maletín"), + ("Peto"), + ("Puño"), + ("Yelmo"); + + +CREATE OR REPLACE TEMPORARY TABLE tVariedad + (name VARCHAR(50) PRIMARY KEY) + ENGINE = MEMORY; + + +INSERT INTO tVariedad + VALUES + ("cósmico"), + ("de Ablación"), + ("de Adamantium"), + ("extremis"), + ("inhibidor"), + ("maldito"), + ("místico"), + ("Muramasa"), + ("Nega"), + ("borgiano"), + ("terrígeno"); + + +CREATE OR REPLACE TEMPORARY TABLE tSize + (value INT PRIMARY KEY) + ENGINE = MEMORY; + + +INSERT INTO tSize + VALUES(45),(50),(65),(70),(80),(90); + + +-- IPT +DROP PROCEDURE IF EXISTS vn.itemPackingType_add; + + +DELIMITER $$ +$$ +CREATE PROCEDURE vn.itemPackingType_add(vItemPackingTypeCount INT) +BEGIN +/** Create records for itemPackingType table +*/ + DECLARE vCounter INT DEFAULT 0; + + + WHILE vCounter < vItemPackingTypeCount DO + INSERT INTO vn.itemPackingType + SET code = CHR(65 + vCounter), + isActive = TRUE, + description = CONCAT('Tipo ',code); + + SET vCounter = vCounter + 1; + END WHILE; +END;$$ +DELIMITER ; + + +CALL vn.itemPackingType_add(@itemPackingTypeCount); + + +UPDATE itemConfig + JOIN (SELECT code FROM itemPackingType ORDER BY RAND() LIMIT 1) ipt + SET defaultPackingTypeFk = ipt.code; + + +REPLACE vn.item( + id, + name, + longName, + `size`, + originFk, + intrastatFk, + typeFk, + inkFk, + itemPackingTypeFk + ) + SELECT + @item := @item + 1, + CONCAT(tg.name,' ',tv.name), + CONCAT(tg.name,' ',tv.name), + ts.value, + (SELECT id FROM origin ORDER BY RAND() LIMIT 1), + (SELECT id FROM intrastat i ORDER BY RAND() LIMIT 1), + (SELECT it.id FROM itemType it + JOIN itemCategory ic ON ic.id = it.categoryFk + WHERE ic.code = 'flower' ORDER BY RAND() LIMIT 1), + (SELECT id FROM ink ORDER BY RAND() LIMIT 1), + (SELECT IF(RAND() > @itemPackingTypeNullRate,code, NULL) FROM itemPackingType ORDER BY RAND() LIMIT 1) + FROM tGenero tg + JOIN tVariedad tv + JOIN tSize ts; + + +CREATE OR REPLACE TEMPORARY TABLE tItem + SELECT i.id, tg.name + FROM item i + JOIN tGenero tg ON i.name LIKE CONCAT(tg.name,'%'); + + +REPLACE vn.itemTag + ( + itemFk, + tagFk, + value, + priority + ) + SELECT + ti.id, + t.id, + ti.name, + 1 + FROM tItem ti + JOIN tag t ON t.name = 'Genero' + ; + + +CREATE OR REPLACE TEMPORARY TABLE tItem + SELECT i.id, tv.name + FROM item i + JOIN tVariedad tv ON i.name LIKE CONCAT('%',tv.name); + + +REPLACE vn.itemTag + ( + itemFk, + tagFk, + value, + priority + ) + SELECT + ti.id, + t.id, + ti.name, + 2 + FROM tItem ti + JOIN tag t ON t.name = 'Variedad' + ; + + +CREATE OR REPLACE TEMPORARY TABLE tItem + SELECT i.id, i.`size` + FROM item i; + + +REPLACE vn.itemTag + ( + itemFk, + tagFk, + value, + priority + ) + SELECT + ti.id, + t.id, + ti.`size`, + 3 + FROM tItem ti + JOIN tag t ON t.name = 'Longitud' + ; + + +CREATE OR REPLACE TEMPORARY TABLE tItem + SELECT i.id, inkFk value + FROM item i; + + +REPLACE vn.itemTag + ( + itemFk, + tagFk, + value, + priority + ) + SELECT + ti.id, + t.id, + ti.value, + 5 + FROM tItem ti + JOIN tag t ON t.name = 'Color' + ; + + +CREATE OR REPLACE TEMPORARY TABLE tmp.item + SELECT id FROM item; + + +-- CALL item_refreshTags(); + + +SET @isTriggerDisabled := FALSE; + + +DROP TEMPORARY TABLE IF EXISTS tmp.item, tGenero, tVariedad, tSize; + + +-- Entradas +DROP PROCEDURE IF EXISTS vn.buy_creation; + + +DELIMITER $$ +$$ +CREATE PROCEDURE vn.buy_creation() +BEGIN +/** Create records and all related ecosystem for random purchases. +*/ + + +DECLARE vEntryNumber INT; +DECLARE vEntryScopeDays INT; +DECLARE vLanded DATE; +DECLARE vIsReceived BOOL; +DECLARE vDone INT DEFAULT FALSE; +DECLARE trv CURSOR FOR SELECT * FROM tTravel; +DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + +CREATE OR REPLACE TEMPORARY TABLE tTravel + (landed DATE, + received BOOL) + ENGINE = MEMORY; + + +-- Today arrivals, not received yet +SET vEntryNumber = CEIL(RAND() * @entryNumberPerDayMax); + + +WHILE vEntryNumber > 0 DO + SET vEntryNumber = vEntryNumber - 1; + + INSERT INTO tTravel(landed,received) + VALUES(@landed,@allEntryReceived); +END WHILE; + + +-- Today arrivals, received +SET vEntryNumber = CEIL(RAND() * @entryNumberPerDayMax); + + +WHILE vEntryNumber > 0 DO + SET vEntryNumber = vEntryNumber - 1; + + INSERT INTO tTravel(landed,received) + VALUES(@landed,TRUE); +END WHILE; + + +-- Past arrivals +SET vEntryNumber = CEIL(RAND() * @entryNumberPerDayMax); +SET vEntryScopeDays = CEIL(RAND() * @entryScopeDaysMax); + + +WHILE vEntryNumber > 0 DO + SET vEntryNumber = vEntryNumber - 1; + + + SET @dated = @landed - INTERVAL (CEIL(RAND() * vEntryScopeDays)) DAY; + + + INSERT INTO tTravel(landed,received) + VALUES(@dated,TRUE); +END WHILE; + + +-- Future arrivals +SET vEntryNumber = FLOOR(RAND() * @entryNumberPerDayMax); +SET vEntryScopeDays = CEIL(RAND() * @entryScopeDaysMax); + + +WHILE vEntryNumber > 0 DO + SET vEntryNumber = vEntryNumber - 1; + + + SET @dated = @landed + INTERVAL (CEIL(RAND() * vEntryScopeDays)) DAY; + + + INSERT INTO tTravel(landed,received) + VALUES(@dated,FALSE); +END WHILE; + + +OPEN trv; + + +read_loop:LOOP + SET vDone = FALSE; + + + FETCH trv INTO vLanded, vIsReceived; + + + IF vDone THEN + LEAVE read_loop; + END IF; + + + INSERT INTO + travel( + shipped, + landed, + warehouseOutFk, + warehouseInFk, + isReceived + ) + SELECT + vLanded - INTERVAL 1 DAY, + vlanded, + (SELECT id FROM warehouse WHERE NOT code <=> 'ALG' ORDER BY RAND() LIMIT 1), + id, + vIsReceived + FROM warehouse + WHERE code = 'ALG'; + + + SELECT LAST_INSERT_ID() INTO @travel; + + + INSERT INTO + entry( + travelFk, + supplierFk, + dated + ) + SELECT + @travel, + id, + CURDATE() + FROM supplier + ORDER BY RAND() + LIMIT 1; + + + CREATE OR REPLACE TEMPORARY TABLE tItem + SELECT ROW_NUMBER() OVER(ORDER BY random DESC) random2, + sub.* + FROM ( + SELECT + RAND() random, + id itemFk + FROM item + LIMIT 1000000000000 + ) sub; + + + SELECT LAST_INSERT_ID() INTO @entry; + + + INSERT INTO buy( + entryFk, + itemFk, + buyingValue, + freightValue, + stickers, + `grouping`, + packing, + packagingFk, + comissionValue, + packageValue, + price2, + price1, + price3, + weight, + quantity + ) + SELECT + @entry, + itemFk, + @bv := ROUND(RAND()*@buyingValueMax,3), + @fv := ROUND(RAND()*@freightValueMax,3), + @stickers := CEIL(RAND() * @stickersMax), + @grouping := CEIL(RAND() * @groupingMax / @stemsStep) * @stemsStep, + @packing := CEIL(RAND() * @packingMax / @grouping) * @grouping, + (SELECT id FROM packaging ORDER BY RAND() LIMIT 1), + @cv := ROUND(RAND()*@comissionValueMax,3), + @pv := ROUND(RAND()*@packagingValueMax,3), + @p2 := (@bv + @fv + @cv + @pv) * (100 + @margin) / 100, + @p2 * (100 + @margingGap) / 100, + @p2 * (100 - @margingGap) / 100, + CEIL(RAND() * @weightMax), + @stickers * @packing + FROM tItem + WHERE random2 < CEIL(RAND() * @buyNumMaxPerENtry); + + +END LOOP; + + + DROP TEMPORARY TABLE tItem; +END;$$ +DELIMITER ; + + +CALL vn.buy_creation(); + + +-- Ubicacion +DELETE FROM shelving; + + +DROP PROCEDURE IF EXISTS vn.shelving_creation; + + +DELIMITER $$ +$$ +CREATE PROCEDURE vn.shelving_creation(vWarehouseFk INT) +BEGIN +/** Create random shelves. + */ +DECLARE vShelvingNumMin INT DEFAULT 30; +DECLARE vShelvingNumMax INT DEFAULT 100; +DECLARE vShelvingNum INT; + + +SET vShelvingNum = vShelvingNumMin + FLOOR(RAND() * (vShelvingNumMax - vShelvingNumMin)); + + +WHILE vShelvingNum > 0 DO + SET vShelvingNum = vShelvingNum - 1; + + + REPLACE shelving(code,priority) + VALUES(CONCAT( + CHAR(65 + FLOOR(RAND() * 26)), + CHAR(65 + FLOOR(RAND() * 26)), + CHAR(65 + FLOOR(RAND() * 26))), + CEIL(RAND() * 99)); +END WHILE; + + +UPDATE shelving sh + SET parkingFk = + ( + SELECT p.id + FROM parking p + JOIN sector s ON s.id = p.sectorFk + WHERE s.warehouseFk = vWarehouseFk + ORDER BY RAND() LIMIT 1); +END$$ +DELIMITER ; + + +CALL vn.shelving_creation(@warehouseFk); + + +/****************************************************************************** + Ubicación y parkineado + *****************************************************************************/ +DROP PROCEDURE IF EXISTS vn.shelving_location; + + +DELIMITER $$ +$$ +CREATE PROCEDURE vn.shelving_location() +BEGIN +/** Locate items in random shelves. + */ +DECLARE vShelvingFk INT; +DECLARE vDone INT DEFAULT FALSE; +DECLARE vItemFk INT; +DECLARE vQuantity INT; +DECLARE vGrouping INT; +DECLARE vPacking INT; +DECLARE vPackagingFk INT; +DECLARE vLanded DATE; +DECLARE vRemainingQuantity INT; + + +DECLARE cur1 CURSOR FOR + SELECT + b.itemFk, + b.quantity, + b.`grouping`, + b.packing, + b.packagingFk, + tr.landed + FROM buy b + JOIN entry e ON e.id = b.entryFk + JOIN travel tr ON tr.id = e.travelFk + WHERE tr.isReceived; + + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + +OPEN cur1; + + +read_loop: LOOP + SET vDone = FALSE; + + + FETCH cur1 INTO + vItemFk, + vQuantity, + vGrouping, + vPacking, + vPackagingFk, + vLanded; + + + IF vDone THEN + LEAVE read_loop; + END IF; + + + SET vRemainingQuantity = vQuantity; + + + WHILE vRemainingQuantity > 0 DO + SET vQuantity = vGrouping * CEIL((vRemainingQuantity / vGrouping / CEIL(RAND() * 3))); + + SELECT id INTO vShelvingFk + FROM shelving s + ORDER BY RAND() LIMIT 1; + + INSERT INTO itemShelving( + itemFk, + shelvingFk, + visible, + `grouping`, + packing, + packagingFk, + created + ) + VALUES( + vItemFk, + vShelvingFk, + vQuantity, + vGrouping, + vPacking, + vPackagingFk, + vLanded); + + + SET vRemainingQuantity = vRemainingQuantity - vQuantity; + END WHILE; +END LOOP; + + +CLOSE cur1; + + +END$$ +DELIMITER ; + + +CALL shelving_location(); + + +DROP FUNCTION IF EXISTS util.mockTime; + + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` FUNCTION `util`.`mockTime`() RETURNS datetime + DETERMINISTIC +BEGIN + RETURN CURDATE(); +END$$ +DELIMITER ; + + +CALL cache.stock_refresh(TRUE); + + +/****************************************************************************** + Clientes, consignatarios y tickets + *****************************************************************************/ +UPDATE vn.client c SET c.isTaxDataChecked = TRUE; + +UPDATE vn.client + SET isRelevant = TRUE + WHERE id BETWEEN 1101 AND 1110; + +DELIMITER $$ +$$ +CREATE OR REPLACE PROCEDURE vn.ticket_creation() +BEGIN +/** Create tickets and sales for current items + * + */ + DECLARE vAddressFk INT; + DECLARE vClientMaxId INT; + DECLARE vClientMinId INT; + DECLARE vDated DATE; + DECLARE vEndDated DATE; + DECLARE vItemMaxRowNumber INT; + DECLARE vNewTicket INT; + DECLARE vRowNumber INT; + DECLARE vSaleFk INT; + DECLARE vSaleNumber INT; + DECLARE vStartDated DATE; + DECLARE vTicketNumber INT; + DECLARE vZone INT; + + + SELECT + MIN(landed), + MAX(landed) + INTO + vStartDated, + vEndDated + FROM + travel; + + SELECT + MIN(id), + MAX(id) + INTO + vClientMinId, + vClientMaxId + FROM client + WHERE isRelevant; + + SET vDated = vStartDated; + + WHILE DATEDIFF(vEndDated,vDated) >= 0 DO + SET vTicketNumber = FLOOR(RAND() * (@ticketNumberMaxByDay + 1)); + + CALL cache.available_refresh(@calc, TRUE, @warehouseFk, vDated); + + CREATE OR REPLACE TEMPORARY TABLE tAvailable + SELECT + ROW_NUMBER() OVER() rn, + a.item_id itemFk, + a.available, + b.`grouping`, + b.price2 price, + b.buyingValue + FROM cache.available a + JOIN buy b ON b.itemFk = a.item_id + WHERE a.calc_id = @calc + AND a.available > 0 + GROUP BY a.item_id; + + SELECT MAX(rn) INTO vItemMaxRowNumber + FROM tAvailable; + + WHILE vTicketNumber > 0 DO + SELECT a.id INTO vAddressFk + FROM address a + WHERE a.clientFk BETWEEN vClientMinId AND vClientMaxId + AND a.isDefaultAddress + ORDER BY RAND() + LIMIT 1; + + INSERT INTO ticket ( + clientFk, + shipped, + addressFk, + agencyModeFk, + nickname, + warehouseFk, + companyFk, + landed, + zoneFk + ) + SELECT + a.clientFk, + vDated, + a.id, + a.agencyModeFk, + a.nickname, + @warehouseFk, + @company, + vDated + INTERVAL 1 DAY, + 9 + FROM address a + WHERE a.id = vAddressFk; + + + SET vNewTicket = LAST_INSERT_ID(); + + + SET vSaleNumber = CEIL(RAND() * @saleNumberMaxByTicket); + + + WHILE vSaleNumber > 0 DO + SELECT rn INTO vRowNumber + FROM tAvailable + WHERE available > 0 + ORDER BY RAND() + LIMIT 1; + + + INSERT INTO sale( + ticketFk, + itemFk, + concept, + quantity) + SELECT + vNewTicket, + ta.itemFk, + i.name, + @quantity := CEIL(LOG(RAND() * ta.available )) * ta.`grouping` + FROM tAvailable ta + JOIN item i ON i.id = ta.itemFk + WHERE ta.rn = vRowNumber; + + + SELECT LAST_INSERT_ID() INTO vSaleFk; + + + INSERT INTO saleComponent( + saleFk, + componentFk, + value) + SELECT + vSaleFk, + c.id, + ta.buyingValue + FROM tAvailable ta + JOIN component c ON c.code = 'purchaseValue' + WHERE ta.rn = vRowNumber; + + + INSERT INTO saleComponent( + saleFk, + componentFk, + value) + SELECT + vSaleFk, + c.id, + ta.price - ta.buyingValue + FROM tAvailable ta + JOIN component c ON c.code = 'margin' + WHERE ta.rn = vRowNumber; + + + INSERT INTO saleComponent( + saleFk, + componentFk, + value) + SELECT + vSaleFk, + c.id, + ta.price * @deliveryRatio + FROM tAvailable ta + JOIN component c ON c.code = 'delivery' + WHERE ta.rn = vRowNumber; + + + UPDATE tAvailable + SET available = available - @quantity + WHERE rn = vRowNumber; + + + SET vSaleNumber = vSaleNumber - 1; + END WHILE; + + + SET vTicketNumber = vTicketNumber - 1; + END WHILE; + + + SET vDated = vDated + INTERVAL 1 DAY; + END WHILE; + + + UPDATE sale s + JOIN ( + SELECT saleFk, SUM(value) price + FROM saleComponent + GROUP BY saleFk + ) sub ON sub.saleFk = s.id + SET s.price = sub.price; +END$$ +DELIMITER ; + + +CALL ticket_creation(); + + +CALL cache.visible_refresh(@calc, TRUE, 1); +CALL cache.available_refresh(@calc, TRUE, @warehouseFk, @landed); +CALL cache.last_buy_refresh(@warehouseFk); + + +/****************************************************************************** + Rutas, camiones y gateControl + *****************************************************************************/ +/*UPDATE IGNORE ticket t + SET t.routeFk = t.id MOD 10;*/ + +REPLACE vn.supplier (id, name, account, street, city, provinceFk, countryFk, nif, isOfficial, retAccount, phone, commission, nickname, payMethodFk, payDay, payDemFk, created, isReal, note, postcodeFk, postCode, isActive, taxTypeSageFk, withholdingSageFk, transactionTypeSageFk, isTrucker, workerFk, supplierActivityFk, healthRegister, isPayMethodChecked, isVies, stamp, companySize, geoFk, editorFk) +VALUES(1382, 'TRIDENT INTERCONTINENTAL SHIPPING', '4100021382', 'Gotham Docklands, s/n', 'GOTHAM', 2, 1, '11223344T', 1, NULL, NULL, 0.0, 'TRIDENT', 1, 10, 2, '2001-01-01 00:00:00.000', 0, NULL, NULL, '46000', 1, 93, 2, 8, 1, 18, 'flowerPlants', '400664487V', 1, 0, NULL, NULL, NULL, 100), +(1383, 'BARBARA KEAN MONSTER TRUCK', '4100021383', 'East Apple Street, 6', 'GOTHAM', 2, 1, '10203040B', 1, NULL, NULL, 0.0, 'MONSTER TRUCK', 1, 10, 2, '2001-01-01 00:00:00.000', 0, NULL, NULL, '46000', 1, 93, 2, 8, 1, 18, 'flowerPlants', '400664487V', 1, 0, NULL, NULL, NULL, 100), +(1384, 'GOTHAM TRANSIT AUTHORITY', '4100021384', 'Grundy Street, 1552', 'GOTHAM', 2, 1, '12233445G', 1, NULL, NULL, 0.0, 'GTA', 1, 10, 2, '2001-01-01 00:00:00.000', 0, NULL, NULL, '46000', 1, 93, 2, 8, 1, 18, 'flowerPlants', '400664487V', 1, 0, NULL, NULL, NULL, 100); + +INSERT INTO vn.roadmap (name, tractorPlate, trailerPlate, phone, supplierFk, etd, observations, created, userFk, price, driverName, kmStart, kmEnd, started, finished, m3, driver2Fk, driver1Fk) +VALUES + ('NORTHWEST', '1111-AAA', NULL, NULL, 442, CURDATE() + INTERVAL 9 HOUR, NULL, '2024-11-26 07:53:06.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), + ('NORTH', '2222-BBB', NULL, NULL, 442, CURDATE() + INTERVAL 9 HOUR, NULL, '2024-11-26 07:53:31.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), + ('CENTER 1', '3333-CCC', NULL, NULL, 442, CURDATE() + INTERVAL 10 HOUR, NULL, '2024-11-26 07:54:04.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), + ('SOUTH', '4444-DDD', NULL, NULL, 442, CURDATE() + INTERVAL 11 HOUR, NULL, '2024-11-26 07:54:28.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), + ('MRW', NULL, NULL, NULL, NULL, CURDATE() + INTERVAL 12 HOUR, NULL, '2024-11-26 07:55:28.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + ('NORTHEAST', '5555-EEE', NULL, NULL, 442, CURDATE() + INTERVAL 17 HOUR, NULL, '2024-11-26 07:56:01.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), + ('CENTER DUO', '6666-FFF', NULL, NULL, 442, CURDATE() + INTERVAL 18 HOUR, NULL, '2024-11-26 07:56:22.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 70, NULL, NULL); + +UPDATE roadmapStop + SET eta = CURDATE() + INTERVAL FLOOR(RAND() * 24) HOUR; + +REPLACE routesMonitor( routeFk, + name, + beachFk, + dated, + etd, + roadmapStopFk, + bufferFk, + isPickingAllowed) + SELECT r.id, + z.name, + (SELECT code FROM beach ORDER BY RAND() LIMIT 1), + CURDATE() + INTERVAL 1 DAY, + TIME(CURDATE()) + INTERVAL FLOOR(24 * RAND()) HOUR, + (SELECT id FROM roadmapStop ORDER BY RAND() LIMIT 1), + (SELECT id FROM srt.buffer WHERE isActive ORDER BY RAND() LIMIT 1), + (RAND() > 0.5) + FROM route r + JOIN `zone` z ON z.id = r.zoneFk; + + +-- Recuentos +WITH tBuy AS + (SELECT + MIN(tr.landed) dateFrom, + MAX(tr.landed) dateTo, + COUNT(DISTINCT tr.id) travelCount, + COUNT(DISTINCT e.id) entryCount, + COUNT(DISTINCT b.id) buyCount, + COUNT(DISTINCT b.itemFk) itemCount + FROM travel tr + JOIN entry e ON e.travelFk = tr.id + JOIN buy b ON b.entryFk = e.id + ), + tSale AS + (SELECT + MIN(t.shipped) dateFrom, + MAX(t.shipped) dateTo, + COUNT(DISTINCT t.id) ticketCount, + COUNT(DISTINCT s.id) saleCount, + COUNT(DISTINCT sc.componentFk) saleComponentCount, + COUNT(DISTINCT s.itemFk) itemCount + FROM ticket t + JOIN sale s ON s.ticketFk = t.id + JOIN saleComponent sc ON sc.saleFk = s.id + ), + tShelving AS + (SELECT + MIN(ish.created) dateFrom, + MAX(ish.created) dateTo, + COUNT(DISTINCT p.id) parkingCount, + COUNT(DISTINCT sh.id) shelvingCount, + COUNT(DISTINCT ish.id) itemShelvingCount, + COUNT(DISTINCT ish.itemFk) itemCount + FROM parking p + JOIN shelving sh ON sh.parkingFk = p.id + JOIN itemShelving ish ON ish.shelvingFk = sh.id + ), + tRoutes AS + (SELECT + MIN(r.created) dateFrom, + MAX(r.created) dateTo, + COUNT(DISTINCT r.id) routesCount, + COUNT(DISTINCT rms.id) rmsCount, + SUM(rm.isPickingAllowed = TRUE) allowedCount + FROM route r + JOIN routesMonitor rm ON rm.routeFk = r.id + JOIN roadmapStop rms ON rms.id = rm.roadMapStopFk + ) +SELECT '==========' Variable,'== COMPRAS ==' Total,'==========' Media +UNION ALL +SELECT 'Starting date ' ,dateFrom , NULL FROM tSale +UNION ALL +SELECT 'Last date ',dateTo, NULL FROM tBuy +UNION ALL +SELECT 'Travels ',travelCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM vn.travel tr + GROUP BY tr.landed + ) sub + ) FROM tBuy +UNION ALL +SELECT 'Entries ' ,entryCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM vn.entry e + GROUP BY e.travelFk + ) sub + ) FROM tBuy +UNION ALL +SELECT 'Buys ' ,buyCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM vn.buy b + GROUP BY b.entryFk + ) sub + ) FROM tBuy +UNION ALL +SELECT 'Items ' ,itemCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(DISTINCT itemFk) num + FROM vn.buy b + GROUP BY b.entryFk + ) sub + ) FROM tBuy +UNION ALL +SELECT '==========','== VENTAS ==','==========' +UNION ALL +SELECT 'Starting date ',dateFrom, NULL Media FROM tSale +UNION ALL +SELECT 'Last date ',dateTo, NULL FROM tSale +UNION ALL +SELECT 'Tickets ',ticketCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM ticket t + GROUP BY t.shipped + ) sub + ) FROM tSale +UNION ALL +SELECT 'Sales ' ,saleCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM sale s + GROUP BY s.ticketFk + ) sub + ) FROM tSale +UNION ALL +SELECT 'SaleComponents ' ,saleComponentCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM saleComponent sc + GROUP BY sc.saleFk + ) sub + ) FROM tSale +UNION ALL +SELECT 'Items ' ,itemCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(DISTINCT itemFk) num + FROM sale s + GROUP BY s.ticketFk + ) sub + ) FROM tSale +UNION ALL +SELECT '==========','== PARKING ==','==========' +UNION ALL +SELECT 'Starting date ',dateFrom, NULL Media FROM tShelving +UNION ALL +SELECT 'Last date ',dateTo, NULL FROM tShelving +UNION ALL +SELECT 'Parkings ',parkingCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM parking p + GROUP BY p.sectorFk + ) sub + ) FROM tShelving +UNION ALL +SELECT 'Shelvings ' ,shelvingCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM shelving sh + GROUP BY sh.parkingFk + ) sub + ) FROM tShelving +UNION ALL +SELECT 'ItemShelvings ' ,itemShelvingCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(*) num + FROM itemShelving ish + GROUP BY ish.shelvingFk + ) sub + ) FROM tShelving +UNION ALL +SELECT 'Items ' ,itemCount, ( + SELECT floor(avg(num)) + FROM + (SELECT count(DISTINCT itemFk) num + FROM itemShelving ish + GROUP BY ish.shelvingFk + ) sub + ) FROM tShelving +UNION ALL +SELECT '==========','== RUTAS ==','==========' +UNION ALL +SELECT 'Starting date ',dateFrom, NULL Media + FROM tRoutes +UNION ALL +SELECT 'Last date ',dateTo, NULL + FROM tRoutes +UNION ALL +SELECT 'routesCount ',routesCount, NULL + FROM tRoutes +UNION ALL +SELECT 'roadmapStopCount ',rmsCount, NULL + FROM tRoutes +UNION ALL +SELECT 'allowedCount ',allowedCount, NULL + FROM tRoutes; + + + + + + + From adf416a086834e2d4b8c5ce551af1bae3ee821a5 Mon Sep 17 00:00:00 2001 From: Pako Date: Fri, 7 Feb 2025 14:29:50 +0100 Subject: [PATCH 155/217] fix: refs #8408 hour time on catalog_calculate --- db/dump/fixtures.local--.sql | 1110 ----------------- .../vn/procedures/catalog_calculate.sql | 2 +- 2 files changed, 1 insertion(+), 1111 deletions(-) delete mode 100644 db/dump/fixtures.local--.sql diff --git a/db/dump/fixtures.local--.sql b/db/dump/fixtures.local--.sql deleted file mode 100644 index 8d04d777d9..0000000000 --- a/db/dump/fixtures.local--.sql +++ /dev/null @@ -1,1110 +0,0 @@ --- Semillero -SET @item = 100000; -SET @isTriggerDisabled := TRUE; -SET @buyNumMaxPerENtry := 25; -SET @buyingValueMax := 1; -SET @packagingValueMax := 0.2; -SET @comissionValueMax := 0.1; -SET @freightValueMax := 0.15; -SET @groupingMax := 20; -SET @packingMax := 150; -SET @stemsStep := 1; -SET @stickersMax := 40; -SET @weightMax := 20; -SET @margin := 25; -SET @marginGap := 5; -SET @landed := CURDATE(); -SET @warehouseFk := 1; -SET @entryNumberPerDayMax := 4; -SET @entryScopeDaysMax := 10; -SET @allEntryReceived := TRUE; -SET @ticketNumberMaxByDay = 100; -SET @saleNumberMaxByTicket = 25; -SET @company := 442; -SET @deliveryRatio := 0.10; -SET @itemPackingTypeCount := 4; -SET @itemPackingTypeNullRate := 0.5; - --- Vaciado de tablas -USE vn; - -DELETE FROM bs.waste; -DELETE FROM hedera.orderRow; -DELETE FROM itemShelving; -DELETE FROM buy; -DELETE FROM sale; -DELETE FROM expedition; -DELETE FROM packagingConfig; -DELETE FROM ticketPackaging; -DELETE FROM packaging; -DELETE FROM expeditionBoxVol; -DELETE FROM item; -DELETE FROM origin; -DELETE FROM entryDms; -DELETE FROM entry; -DELETE FROM travelThermograph; -DELETE FROM travel; -DELETE FROM cache.stock; -DELETE FROM claim; -DELETE FROM ticketRefund; -DELETE FROM ticket; -DELETE FROM itemPackingType; - - - - - -INSERT INTO vn.origin - (code, name, warehouseFk) - VALUES - ('RU', 'Rusia', @warehouseFk), - ('ES', 'España', @warehouseFk), - ('CH', 'China', @warehouseFk); - - -REPLACE vn.packaging - (id, volume, width, `depth`, height,base,isPackageReturnable,upload) - VALUES - ('577',48000,40,30,40,4, TRUE,TRUE), - ('566',30000,30,25,40,3, TRUE,TRUE), - ('94',150000,100,50,30,1.1, FALSE, FALSE); --- Generación de items -CREATE OR REPLACE TEMPORARY TABLE tGenero - (name VARCHAR(50) PRIMARY KEY) - ENGINE = MEMORY; - - -INSERT INTO tGenero - VALUES - ("Amuleto"), - ("Casco"), - ("Cetro"), - ("Colgante"), - ("Escudo"), - ("Mandoble"), - ("Fáser"), - ("Látigo"), - ("Guantelete"), - ("Martillo"), - ("Maletín"), - ("Peto"), - ("Puño"), - ("Yelmo"); - - -CREATE OR REPLACE TEMPORARY TABLE tVariedad - (name VARCHAR(50) PRIMARY KEY) - ENGINE = MEMORY; - - -INSERT INTO tVariedad - VALUES - ("cósmico"), - ("de Ablación"), - ("de Adamantium"), - ("extremis"), - ("inhibidor"), - ("maldito"), - ("místico"), - ("Muramasa"), - ("Nega"), - ("borgiano"), - ("terrígeno"); - - -CREATE OR REPLACE TEMPORARY TABLE tSize - (value INT PRIMARY KEY) - ENGINE = MEMORY; - - -INSERT INTO tSize - VALUES(45),(50),(65),(70),(80),(90); - - --- IPT -DROP PROCEDURE IF EXISTS vn.itemPackingType_add; - - -DELIMITER $$ -$$ -CREATE PROCEDURE vn.itemPackingType_add(vItemPackingTypeCount INT) -BEGIN -/** Create records for itemPackingType table -*/ - DECLARE vCounter INT DEFAULT 0; - - - WHILE vCounter < vItemPackingTypeCount DO - INSERT INTO vn.itemPackingType - SET code = CHR(65 + vCounter), - isActive = TRUE, - description = CONCAT('Tipo ',code); - - SET vCounter = vCounter + 1; - END WHILE; -END;$$ -DELIMITER ; - - -CALL vn.itemPackingType_add(@itemPackingTypeCount); - - -UPDATE itemConfig - JOIN (SELECT code FROM itemPackingType ORDER BY RAND() LIMIT 1) ipt - SET defaultPackingTypeFk = ipt.code; - - -REPLACE vn.item( - id, - name, - longName, - `size`, - originFk, - intrastatFk, - typeFk, - inkFk, - itemPackingTypeFk - ) - SELECT - @item := @item + 1, - CONCAT(tg.name,' ',tv.name), - CONCAT(tg.name,' ',tv.name), - ts.value, - (SELECT id FROM origin ORDER BY RAND() LIMIT 1), - (SELECT id FROM intrastat i ORDER BY RAND() LIMIT 1), - (SELECT it.id FROM itemType it - JOIN itemCategory ic ON ic.id = it.categoryFk - WHERE ic.code = 'flower' ORDER BY RAND() LIMIT 1), - (SELECT id FROM ink ORDER BY RAND() LIMIT 1), - (SELECT IF(RAND() > @itemPackingTypeNullRate,code, NULL) FROM itemPackingType ORDER BY RAND() LIMIT 1) - FROM tGenero tg - JOIN tVariedad tv - JOIN tSize ts; - - -CREATE OR REPLACE TEMPORARY TABLE tItem - SELECT i.id, tg.name - FROM item i - JOIN tGenero tg ON i.name LIKE CONCAT(tg.name,'%'); - - -REPLACE vn.itemTag - ( - itemFk, - tagFk, - value, - priority - ) - SELECT - ti.id, - t.id, - ti.name, - 1 - FROM tItem ti - JOIN tag t ON t.name = 'Genero' - ; - - -CREATE OR REPLACE TEMPORARY TABLE tItem - SELECT i.id, tv.name - FROM item i - JOIN tVariedad tv ON i.name LIKE CONCAT('%',tv.name); - - -REPLACE vn.itemTag - ( - itemFk, - tagFk, - value, - priority - ) - SELECT - ti.id, - t.id, - ti.name, - 2 - FROM tItem ti - JOIN tag t ON t.name = 'Variedad' - ; - - -CREATE OR REPLACE TEMPORARY TABLE tItem - SELECT i.id, i.`size` - FROM item i; - - -REPLACE vn.itemTag - ( - itemFk, - tagFk, - value, - priority - ) - SELECT - ti.id, - t.id, - ti.`size`, - 3 - FROM tItem ti - JOIN tag t ON t.name = 'Longitud' - ; - - -CREATE OR REPLACE TEMPORARY TABLE tItem - SELECT i.id, inkFk value - FROM item i; - - -REPLACE vn.itemTag - ( - itemFk, - tagFk, - value, - priority - ) - SELECT - ti.id, - t.id, - ti.value, - 5 - FROM tItem ti - JOIN tag t ON t.name = 'Color' - ; - - -CREATE OR REPLACE TEMPORARY TABLE tmp.item - SELECT id FROM item; - - --- CALL item_refreshTags(); - - -SET @isTriggerDisabled := FALSE; - - -DROP TEMPORARY TABLE IF EXISTS tmp.item, tGenero, tVariedad, tSize; - - --- Entradas -DROP PROCEDURE IF EXISTS vn.buy_creation; - - -DELIMITER $$ -$$ -CREATE PROCEDURE vn.buy_creation() -BEGIN -/** Create records and all related ecosystem for random purchases. -*/ - - -DECLARE vEntryNumber INT; -DECLARE vEntryScopeDays INT; -DECLARE vLanded DATE; -DECLARE vIsReceived BOOL; -DECLARE vDone INT DEFAULT FALSE; -DECLARE trv CURSOR FOR SELECT * FROM tTravel; -DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -CREATE OR REPLACE TEMPORARY TABLE tTravel - (landed DATE, - received BOOL) - ENGINE = MEMORY; - - --- Today arrivals, not received yet -SET vEntryNumber = CEIL(RAND() * @entryNumberPerDayMax); - - -WHILE vEntryNumber > 0 DO - SET vEntryNumber = vEntryNumber - 1; - - INSERT INTO tTravel(landed,received) - VALUES(@landed,@allEntryReceived); -END WHILE; - - --- Today arrivals, received -SET vEntryNumber = CEIL(RAND() * @entryNumberPerDayMax); - - -WHILE vEntryNumber > 0 DO - SET vEntryNumber = vEntryNumber - 1; - - INSERT INTO tTravel(landed,received) - VALUES(@landed,TRUE); -END WHILE; - - --- Past arrivals -SET vEntryNumber = CEIL(RAND() * @entryNumberPerDayMax); -SET vEntryScopeDays = CEIL(RAND() * @entryScopeDaysMax); - - -WHILE vEntryNumber > 0 DO - SET vEntryNumber = vEntryNumber - 1; - - - SET @dated = @landed - INTERVAL (CEIL(RAND() * vEntryScopeDays)) DAY; - - - INSERT INTO tTravel(landed,received) - VALUES(@dated,TRUE); -END WHILE; - - --- Future arrivals -SET vEntryNumber = FLOOR(RAND() * @entryNumberPerDayMax); -SET vEntryScopeDays = CEIL(RAND() * @entryScopeDaysMax); - - -WHILE vEntryNumber > 0 DO - SET vEntryNumber = vEntryNumber - 1; - - - SET @dated = @landed + INTERVAL (CEIL(RAND() * vEntryScopeDays)) DAY; - - - INSERT INTO tTravel(landed,received) - VALUES(@dated,FALSE); -END WHILE; - - -OPEN trv; - - -read_loop:LOOP - SET vDone = FALSE; - - - FETCH trv INTO vLanded, vIsReceived; - - - IF vDone THEN - LEAVE read_loop; - END IF; - - - INSERT INTO - travel( - shipped, - landed, - warehouseOutFk, - warehouseInFk, - isReceived - ) - SELECT - vLanded - INTERVAL 1 DAY, - vlanded, - (SELECT id FROM warehouse WHERE NOT code <=> 'ALG' ORDER BY RAND() LIMIT 1), - id, - vIsReceived - FROM warehouse - WHERE code = 'ALG'; - - - SELECT LAST_INSERT_ID() INTO @travel; - - - INSERT INTO - entry( - travelFk, - supplierFk, - dated - ) - SELECT - @travel, - id, - CURDATE() - FROM supplier - ORDER BY RAND() - LIMIT 1; - - - CREATE OR REPLACE TEMPORARY TABLE tItem - SELECT ROW_NUMBER() OVER(ORDER BY random DESC) random2, - sub.* - FROM ( - SELECT - RAND() random, - id itemFk - FROM item - LIMIT 1000000000000 - ) sub; - - - SELECT LAST_INSERT_ID() INTO @entry; - - - INSERT INTO buy( - entryFk, - itemFk, - buyingValue, - freightValue, - stickers, - `grouping`, - packing, - packagingFk, - comissionValue, - packageValue, - price2, - price1, - price3, - weight, - quantity - ) - SELECT - @entry, - itemFk, - @bv := ROUND(RAND()*@buyingValueMax,3), - @fv := ROUND(RAND()*@freightValueMax,3), - @stickers := CEIL(RAND() * @stickersMax), - @grouping := CEIL(RAND() * @groupingMax / @stemsStep) * @stemsStep, - @packing := CEIL(RAND() * @packingMax / @grouping) * @grouping, - (SELECT id FROM packaging ORDER BY RAND() LIMIT 1), - @cv := ROUND(RAND()*@comissionValueMax,3), - @pv := ROUND(RAND()*@packagingValueMax,3), - @p2 := (@bv + @fv + @cv + @pv) * (100 + @margin) / 100, - @p2 * (100 + @margingGap) / 100, - @p2 * (100 - @margingGap) / 100, - CEIL(RAND() * @weightMax), - @stickers * @packing - FROM tItem - WHERE random2 < CEIL(RAND() * @buyNumMaxPerENtry); - - -END LOOP; - - - DROP TEMPORARY TABLE tItem; -END;$$ -DELIMITER ; - - -CALL vn.buy_creation(); - - --- Ubicacion -DELETE FROM shelving; - - -DROP PROCEDURE IF EXISTS vn.shelving_creation; - - -DELIMITER $$ -$$ -CREATE PROCEDURE vn.shelving_creation(vWarehouseFk INT) -BEGIN -/** Create random shelves. - */ -DECLARE vShelvingNumMin INT DEFAULT 30; -DECLARE vShelvingNumMax INT DEFAULT 100; -DECLARE vShelvingNum INT; - - -SET vShelvingNum = vShelvingNumMin + FLOOR(RAND() * (vShelvingNumMax - vShelvingNumMin)); - - -WHILE vShelvingNum > 0 DO - SET vShelvingNum = vShelvingNum - 1; - - - REPLACE shelving(code,priority) - VALUES(CONCAT( - CHAR(65 + FLOOR(RAND() * 26)), - CHAR(65 + FLOOR(RAND() * 26)), - CHAR(65 + FLOOR(RAND() * 26))), - CEIL(RAND() * 99)); -END WHILE; - - -UPDATE shelving sh - SET parkingFk = - ( - SELECT p.id - FROM parking p - JOIN sector s ON s.id = p.sectorFk - WHERE s.warehouseFk = vWarehouseFk - ORDER BY RAND() LIMIT 1); -END$$ -DELIMITER ; - - -CALL vn.shelving_creation(@warehouseFk); - - -/****************************************************************************** - Ubicación y parkineado - *****************************************************************************/ -DROP PROCEDURE IF EXISTS vn.shelving_location; - - -DELIMITER $$ -$$ -CREATE PROCEDURE vn.shelving_location() -BEGIN -/** Locate items in random shelves. - */ -DECLARE vShelvingFk INT; -DECLARE vDone INT DEFAULT FALSE; -DECLARE vItemFk INT; -DECLARE vQuantity INT; -DECLARE vGrouping INT; -DECLARE vPacking INT; -DECLARE vPackagingFk INT; -DECLARE vLanded DATE; -DECLARE vRemainingQuantity INT; - - -DECLARE cur1 CURSOR FOR - SELECT - b.itemFk, - b.quantity, - b.`grouping`, - b.packing, - b.packagingFk, - tr.landed - FROM buy b - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - WHERE tr.isReceived; - - -DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -OPEN cur1; - - -read_loop: LOOP - SET vDone = FALSE; - - - FETCH cur1 INTO - vItemFk, - vQuantity, - vGrouping, - vPacking, - vPackagingFk, - vLanded; - - - IF vDone THEN - LEAVE read_loop; - END IF; - - - SET vRemainingQuantity = vQuantity; - - - WHILE vRemainingQuantity > 0 DO - SET vQuantity = vGrouping * CEIL((vRemainingQuantity / vGrouping / CEIL(RAND() * 3))); - - SELECT id INTO vShelvingFk - FROM shelving s - ORDER BY RAND() LIMIT 1; - - INSERT INTO itemShelving( - itemFk, - shelvingFk, - visible, - `grouping`, - packing, - packagingFk, - created - ) - VALUES( - vItemFk, - vShelvingFk, - vQuantity, - vGrouping, - vPacking, - vPackagingFk, - vLanded); - - - SET vRemainingQuantity = vRemainingQuantity - vQuantity; - END WHILE; -END LOOP; - - -CLOSE cur1; - - -END$$ -DELIMITER ; - - -CALL shelving_location(); - - -DROP FUNCTION IF EXISTS util.mockTime; - - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`localhost` FUNCTION `util`.`mockTime`() RETURNS datetime - DETERMINISTIC -BEGIN - RETURN CURDATE(); -END$$ -DELIMITER ; - - -CALL cache.stock_refresh(TRUE); - - -/****************************************************************************** - Clientes, consignatarios y tickets - *****************************************************************************/ -UPDATE vn.client c SET c.isTaxDataChecked = TRUE; - -UPDATE vn.client - SET isRelevant = TRUE - WHERE id BETWEEN 1101 AND 1110; - -DELIMITER $$ -$$ -CREATE OR REPLACE PROCEDURE vn.ticket_creation() -BEGIN -/** Create tickets and sales for current items - * - */ - DECLARE vAddressFk INT; - DECLARE vClientMaxId INT; - DECLARE vClientMinId INT; - DECLARE vDated DATE; - DECLARE vEndDated DATE; - DECLARE vItemMaxRowNumber INT; - DECLARE vNewTicket INT; - DECLARE vRowNumber INT; - DECLARE vSaleFk INT; - DECLARE vSaleNumber INT; - DECLARE vStartDated DATE; - DECLARE vTicketNumber INT; - DECLARE vZone INT; - - - SELECT - MIN(landed), - MAX(landed) - INTO - vStartDated, - vEndDated - FROM - travel; - - SELECT - MIN(id), - MAX(id) - INTO - vClientMinId, - vClientMaxId - FROM client - WHERE isRelevant; - - SET vDated = vStartDated; - - WHILE DATEDIFF(vEndDated,vDated) >= 0 DO - SET vTicketNumber = FLOOR(RAND() * (@ticketNumberMaxByDay + 1)); - - CALL cache.available_refresh(@calc, TRUE, @warehouseFk, vDated); - - CREATE OR REPLACE TEMPORARY TABLE tAvailable - SELECT - ROW_NUMBER() OVER() rn, - a.item_id itemFk, - a.available, - b.`grouping`, - b.price2 price, - b.buyingValue - FROM cache.available a - JOIN buy b ON b.itemFk = a.item_id - WHERE a.calc_id = @calc - AND a.available > 0 - GROUP BY a.item_id; - - SELECT MAX(rn) INTO vItemMaxRowNumber - FROM tAvailable; - - WHILE vTicketNumber > 0 DO - SELECT a.id INTO vAddressFk - FROM address a - WHERE a.clientFk BETWEEN vClientMinId AND vClientMaxId - AND a.isDefaultAddress - ORDER BY RAND() - LIMIT 1; - - INSERT INTO ticket ( - clientFk, - shipped, - addressFk, - agencyModeFk, - nickname, - warehouseFk, - companyFk, - landed, - zoneFk - ) - SELECT - a.clientFk, - vDated, - a.id, - a.agencyModeFk, - a.nickname, - @warehouseFk, - @company, - vDated + INTERVAL 1 DAY, - 9 - FROM address a - WHERE a.id = vAddressFk; - - - SET vNewTicket = LAST_INSERT_ID(); - - - SET vSaleNumber = CEIL(RAND() * @saleNumberMaxByTicket); - - - WHILE vSaleNumber > 0 DO - SELECT rn INTO vRowNumber - FROM tAvailable - WHERE available > 0 - ORDER BY RAND() - LIMIT 1; - - - INSERT INTO sale( - ticketFk, - itemFk, - concept, - quantity) - SELECT - vNewTicket, - ta.itemFk, - i.name, - @quantity := CEIL(LOG(RAND() * ta.available )) * ta.`grouping` - FROM tAvailable ta - JOIN item i ON i.id = ta.itemFk - WHERE ta.rn = vRowNumber; - - - SELECT LAST_INSERT_ID() INTO vSaleFk; - - - INSERT INTO saleComponent( - saleFk, - componentFk, - value) - SELECT - vSaleFk, - c.id, - ta.buyingValue - FROM tAvailable ta - JOIN component c ON c.code = 'purchaseValue' - WHERE ta.rn = vRowNumber; - - - INSERT INTO saleComponent( - saleFk, - componentFk, - value) - SELECT - vSaleFk, - c.id, - ta.price - ta.buyingValue - FROM tAvailable ta - JOIN component c ON c.code = 'margin' - WHERE ta.rn = vRowNumber; - - - INSERT INTO saleComponent( - saleFk, - componentFk, - value) - SELECT - vSaleFk, - c.id, - ta.price * @deliveryRatio - FROM tAvailable ta - JOIN component c ON c.code = 'delivery' - WHERE ta.rn = vRowNumber; - - - UPDATE tAvailable - SET available = available - @quantity - WHERE rn = vRowNumber; - - - SET vSaleNumber = vSaleNumber - 1; - END WHILE; - - - SET vTicketNumber = vTicketNumber - 1; - END WHILE; - - - SET vDated = vDated + INTERVAL 1 DAY; - END WHILE; - - - UPDATE sale s - JOIN ( - SELECT saleFk, SUM(value) price - FROM saleComponent - GROUP BY saleFk - ) sub ON sub.saleFk = s.id - SET s.price = sub.price; -END$$ -DELIMITER ; - - -CALL ticket_creation(); - - -CALL cache.visible_refresh(@calc, TRUE, 1); -CALL cache.available_refresh(@calc, TRUE, @warehouseFk, @landed); -CALL cache.last_buy_refresh(@warehouseFk); - - -/****************************************************************************** - Rutas, camiones y gateControl - *****************************************************************************/ -/*UPDATE IGNORE ticket t - SET t.routeFk = t.id MOD 10;*/ - -REPLACE vn.supplier (id, name, account, street, city, provinceFk, countryFk, nif, isOfficial, retAccount, phone, commission, nickname, payMethodFk, payDay, payDemFk, created, isReal, note, postcodeFk, postCode, isActive, taxTypeSageFk, withholdingSageFk, transactionTypeSageFk, isTrucker, workerFk, supplierActivityFk, healthRegister, isPayMethodChecked, isVies, stamp, companySize, geoFk, editorFk) -VALUES(1382, 'TRIDENT INTERCONTINENTAL SHIPPING', '4100021382', 'Gotham Docklands, s/n', 'GOTHAM', 2, 1, '11223344T', 1, NULL, NULL, 0.0, 'TRIDENT', 1, 10, 2, '2001-01-01 00:00:00.000', 0, NULL, NULL, '46000', 1, 93, 2, 8, 1, 18, 'flowerPlants', '400664487V', 1, 0, NULL, NULL, NULL, 100), -(1383, 'BARBARA KEAN MONSTER TRUCK', '4100021383', 'East Apple Street, 6', 'GOTHAM', 2, 1, '10203040B', 1, NULL, NULL, 0.0, 'MONSTER TRUCK', 1, 10, 2, '2001-01-01 00:00:00.000', 0, NULL, NULL, '46000', 1, 93, 2, 8, 1, 18, 'flowerPlants', '400664487V', 1, 0, NULL, NULL, NULL, 100), -(1384, 'GOTHAM TRANSIT AUTHORITY', '4100021384', 'Grundy Street, 1552', 'GOTHAM', 2, 1, '12233445G', 1, NULL, NULL, 0.0, 'GTA', 1, 10, 2, '2001-01-01 00:00:00.000', 0, NULL, NULL, '46000', 1, 93, 2, 8, 1, 18, 'flowerPlants', '400664487V', 1, 0, NULL, NULL, NULL, 100); - -INSERT INTO vn.roadmap (name, tractorPlate, trailerPlate, phone, supplierFk, etd, observations, created, userFk, price, driverName, kmStart, kmEnd, started, finished, m3, driver2Fk, driver1Fk) -VALUES - ('NORTHWEST', '1111-AAA', NULL, NULL, 442, CURDATE() + INTERVAL 9 HOUR, NULL, '2024-11-26 07:53:06.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), - ('NORTH', '2222-BBB', NULL, NULL, 442, CURDATE() + INTERVAL 9 HOUR, NULL, '2024-11-26 07:53:31.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), - ('CENTER 1', '3333-CCC', NULL, NULL, 442, CURDATE() + INTERVAL 10 HOUR, NULL, '2024-11-26 07:54:04.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), - ('SOUTH', '4444-DDD', NULL, NULL, 442, CURDATE() + INTERVAL 11 HOUR, NULL, '2024-11-26 07:54:28.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), - ('MRW', NULL, NULL, NULL, NULL, CURDATE() + INTERVAL 12 HOUR, NULL, '2024-11-26 07:55:28.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), - ('NORTHEAST', '5555-EEE', NULL, NULL, 442, CURDATE() + INTERVAL 17 HOUR, NULL, '2024-11-26 07:56:01.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 40, NULL, NULL), - ('CENTER DUO', '6666-FFF', NULL, NULL, 442, CURDATE() + INTERVAL 18 HOUR, NULL, '2024-11-26 07:56:22.0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 70, NULL, NULL); - -UPDATE roadmapStop - SET eta = CURDATE() + INTERVAL FLOOR(RAND() * 24) HOUR; - -REPLACE routesMonitor( routeFk, - name, - beachFk, - dated, - etd, - roadmapStopFk, - bufferFk, - isPickingAllowed) - SELECT r.id, - z.name, - (SELECT code FROM beach ORDER BY RAND() LIMIT 1), - CURDATE() + INTERVAL 1 DAY, - TIME(CURDATE()) + INTERVAL FLOOR(24 * RAND()) HOUR, - (SELECT id FROM roadmapStop ORDER BY RAND() LIMIT 1), - (SELECT id FROM srt.buffer WHERE isActive ORDER BY RAND() LIMIT 1), - (RAND() > 0.5) - FROM route r - JOIN `zone` z ON z.id = r.zoneFk; - - --- Recuentos -WITH tBuy AS - (SELECT - MIN(tr.landed) dateFrom, - MAX(tr.landed) dateTo, - COUNT(DISTINCT tr.id) travelCount, - COUNT(DISTINCT e.id) entryCount, - COUNT(DISTINCT b.id) buyCount, - COUNT(DISTINCT b.itemFk) itemCount - FROM travel tr - JOIN entry e ON e.travelFk = tr.id - JOIN buy b ON b.entryFk = e.id - ), - tSale AS - (SELECT - MIN(t.shipped) dateFrom, - MAX(t.shipped) dateTo, - COUNT(DISTINCT t.id) ticketCount, - COUNT(DISTINCT s.id) saleCount, - COUNT(DISTINCT sc.componentFk) saleComponentCount, - COUNT(DISTINCT s.itemFk) itemCount - FROM ticket t - JOIN sale s ON s.ticketFk = t.id - JOIN saleComponent sc ON sc.saleFk = s.id - ), - tShelving AS - (SELECT - MIN(ish.created) dateFrom, - MAX(ish.created) dateTo, - COUNT(DISTINCT p.id) parkingCount, - COUNT(DISTINCT sh.id) shelvingCount, - COUNT(DISTINCT ish.id) itemShelvingCount, - COUNT(DISTINCT ish.itemFk) itemCount - FROM parking p - JOIN shelving sh ON sh.parkingFk = p.id - JOIN itemShelving ish ON ish.shelvingFk = sh.id - ), - tRoutes AS - (SELECT - MIN(r.created) dateFrom, - MAX(r.created) dateTo, - COUNT(DISTINCT r.id) routesCount, - COUNT(DISTINCT rms.id) rmsCount, - SUM(rm.isPickingAllowed = TRUE) allowedCount - FROM route r - JOIN routesMonitor rm ON rm.routeFk = r.id - JOIN roadmapStop rms ON rms.id = rm.roadMapStopFk - ) -SELECT '==========' Variable,'== COMPRAS ==' Total,'==========' Media -UNION ALL -SELECT 'Starting date ' ,dateFrom , NULL FROM tSale -UNION ALL -SELECT 'Last date ',dateTo, NULL FROM tBuy -UNION ALL -SELECT 'Travels ',travelCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM vn.travel tr - GROUP BY tr.landed - ) sub - ) FROM tBuy -UNION ALL -SELECT 'Entries ' ,entryCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM vn.entry e - GROUP BY e.travelFk - ) sub - ) FROM tBuy -UNION ALL -SELECT 'Buys ' ,buyCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM vn.buy b - GROUP BY b.entryFk - ) sub - ) FROM tBuy -UNION ALL -SELECT 'Items ' ,itemCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(DISTINCT itemFk) num - FROM vn.buy b - GROUP BY b.entryFk - ) sub - ) FROM tBuy -UNION ALL -SELECT '==========','== VENTAS ==','==========' -UNION ALL -SELECT 'Starting date ',dateFrom, NULL Media FROM tSale -UNION ALL -SELECT 'Last date ',dateTo, NULL FROM tSale -UNION ALL -SELECT 'Tickets ',ticketCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM ticket t - GROUP BY t.shipped - ) sub - ) FROM tSale -UNION ALL -SELECT 'Sales ' ,saleCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM sale s - GROUP BY s.ticketFk - ) sub - ) FROM tSale -UNION ALL -SELECT 'SaleComponents ' ,saleComponentCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM saleComponent sc - GROUP BY sc.saleFk - ) sub - ) FROM tSale -UNION ALL -SELECT 'Items ' ,itemCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(DISTINCT itemFk) num - FROM sale s - GROUP BY s.ticketFk - ) sub - ) FROM tSale -UNION ALL -SELECT '==========','== PARKING ==','==========' -UNION ALL -SELECT 'Starting date ',dateFrom, NULL Media FROM tShelving -UNION ALL -SELECT 'Last date ',dateTo, NULL FROM tShelving -UNION ALL -SELECT 'Parkings ',parkingCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM parking p - GROUP BY p.sectorFk - ) sub - ) FROM tShelving -UNION ALL -SELECT 'Shelvings ' ,shelvingCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM shelving sh - GROUP BY sh.parkingFk - ) sub - ) FROM tShelving -UNION ALL -SELECT 'ItemShelvings ' ,itemShelvingCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(*) num - FROM itemShelving ish - GROUP BY ish.shelvingFk - ) sub - ) FROM tShelving -UNION ALL -SELECT 'Items ' ,itemCount, ( - SELECT floor(avg(num)) - FROM - (SELECT count(DISTINCT itemFk) num - FROM itemShelving ish - GROUP BY ish.shelvingFk - ) sub - ) FROM tShelving -UNION ALL -SELECT '==========','== RUTAS ==','==========' -UNION ALL -SELECT 'Starting date ',dateFrom, NULL Media - FROM tRoutes -UNION ALL -SELECT 'Last date ',dateTo, NULL - FROM tRoutes -UNION ALL -SELECT 'routesCount ',routesCount, NULL - FROM tRoutes -UNION ALL -SELECT 'roadmapStopCount ',rmsCount, NULL - FROM tRoutes -UNION ALL -SELECT 'allowedCount ',allowedCount, NULL - FROM tRoutes; - - - - - - - diff --git a/db/routines/vn/procedures/catalog_calculate.sql b/db/routines/vn/procedures/catalog_calculate.sql index b0257bc678..2597a6d015 100644 --- a/db/routines/vn/procedures/catalog_calculate.sql +++ b/db/routines/vn/procedures/catalog_calculate.sql @@ -71,7 +71,7 @@ BEGIN SET vDone = FALSE; FETCH cTravelTree INTO vZoneFk, vWarehouseFk, vShipped, vHour; - SET vAvailabled = vShipped + INTERVAL vHour HOUR; + SET vAvailabled = vShipped + INTERVAL HOUR(vHour) HOUR; IF vDone THEN LEAVE l; From 9bb273807de6b90b1f642f92b86116c711f78fbf Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 16:18:26 +0100 Subject: [PATCH 156/217] feat: refs #6321 i18n negativeReplaced --- loopback/locale/en.json | 2 +- loopback/locale/es.json | 2 +- loopback/locale/fr.json | 3 +-- loopback/locale/pt.json | 3 +-- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 7dea0829a9..b9add02a8c 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -256,6 +256,6 @@ "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.", "clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}", - "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "negativeReplaced": "Replaced item [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} with [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} from ticket [{{ticketId}}]({{{ticketUrl}}})", "The tag and priority can't be repeated": "The tag and priority can't be repeated" } diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 0dbfc45d0e..61e05f7367 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -398,5 +398,5 @@ "Ticket has been delivered out of order": "El ticket {{ticket}} {{{fullUrl}}} no ha sido entregado en su orden.", "Price cannot be blank": "El precio no puede estar en blanco", "clonedFromTicketWeekly": ", que es una linea clonada del ticket {{ticketWeekly}}", - "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", + "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})" } diff --git a/loopback/locale/fr.json b/loopback/locale/fr.json index b61c46a760..1dd33fed96 100644 --- a/loopback/locale/fr.json +++ b/loopback/locale/fr.json @@ -369,6 +369,5 @@ "The web user's email already exists": "L'email de l'internaute existe déjà", "Incorrect delivery order alert on route": "Alerte de bon de livraison incorrect sur l'itinéraire: {{ route }} zone : {{ zone }}", "Ticket has been delivered out of order": "Le ticket {{ticket}} de la route {{{fullUrl}}} a été livré hors service.", - "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", - + "negativeReplaced": "Remplacé l'article [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} par [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} du ticket [{{ticketId}}]({{{ticketUrl}}})" } diff --git a/loopback/locale/pt.json b/loopback/locale/pt.json index 9ad3afa4d8..84bd14a6de 100644 --- a/loopback/locale/pt.json +++ b/loopback/locale/pt.json @@ -368,6 +368,5 @@ "The web user's email already exists": "O e-mail do utilizador da web já existe.", "Incorrect delivery order alert on route": "Alerta de ordem de entrega incorreta na rota: {{ route }} zona: {{ zone }}", "Ticket has been delivered out of order": "O ticket {{ticket}} da rota {{{fullUrl}}} foi entregue fora de ordem.", - "negativeReplaced": "Sustituido el articulo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} del ticket [{{ticketId}}]({{{ticketUrl}}})", - + "negativeReplaced": "Substituído o artigo [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} por [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} do ticket [{{ticketId}}]({{{ticketUrl}}})" } From e748c3ea686486c1f3f67f978189eb823c3aa3bb Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 22:40:00 +0100 Subject: [PATCH 157/217] feat: refs #6321 minor changes --- db/versions/10936-wheatAnthurium/00-updateACL.sql | 1 - modules/ticket/back/methods/ticket/itemLackDetail.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/db/versions/10936-wheatAnthurium/00-updateACL.sql b/db/versions/10936-wheatAnthurium/00-updateACL.sql index fbf714f9c9..16073a23d7 100644 --- a/db/versions/10936-wheatAnthurium/00-updateACL.sql +++ b/db/versions/10936-wheatAnthurium/00-updateACL.sql @@ -2,6 +2,5 @@ INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType VALUES ('Ticket','itemLack','READ','ALLOW','ROLE','employee'), ('Ticket','itemLackDetail','READ','ALLOW','ROLE','employee'), - ('Ticket','itemLackOrigin','WRITE','ALLOW','ROLE','employee'), ('Ticket','split','WRITE','ALLOW','ROLE','employee'), ('Sale','replaceItem','WRITE','ALLOW','ROLE','employee'); diff --git a/modules/ticket/back/methods/ticket/itemLackDetail.js b/modules/ticket/back/methods/ticket/itemLackDetail.js index 44c26bb3bd..fb8ce682f6 100644 --- a/modules/ticket/back/methods/ticket/itemLackDetail.js +++ b/modules/ticket/back/methods/ticket/itemLackDetail.js @@ -37,7 +37,7 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); const vDated = (Date.vnNew()); vDated.setHours(0, 0, 0, 0); - const scopeDays = filter.where.scopeDays ?? 2; + const scopeDays = filter.where.scopeDays ?? 0; let alertLevels = filter.where.alertLevelCode; if (!alertLevels) From 6ea4e3096e822ae9e9b82182ecb2903335784686 Mon Sep 17 00:00:00 2001 From: pablone Date: Sun, 9 Feb 2025 18:24:39 +0100 Subject: [PATCH 158/217] feat: refs #6897 add maxLockTime parameter to entryConfig insert statement --- db/dump/fixtures.before.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 0e67466e55..0efbea5f51 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1557,8 +1557,8 @@ INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed (99, 69, util.VN_CURDATE() - INTERVAL 1 MONTH, 11, 0, 442, 'IN2009', 'Movement 99',0, '', 'product'), (100, 1, util.VN_CURDATE() , 14, 0, 442, 'IN2009','Movement 100',0, '', 'product'); -INSERT INTO `vn`.`entryConfig` (`defaultEntry`, `inventorySupplierFk`, `defaultSupplierFk`) - VALUES (2, 4, 1); +INSERT INTO `vn`.`entryConfig` (`defaultEntry`, `inventorySupplierFk`, `maxLockTime`, `defaultSupplierFk`) + VALUES (2, 4, 300, 1); INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `saleTotal`, `saleWasteQuantity`, `saleExternalWaste`, `saleFaultWaste`, `saleContainerWaste`, `saleBreakWaste`, `saleOtherWaste`) VALUES From b60f251c56187281d92cfa557eb6254d5adc96a8 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 10 Feb 2025 07:34:15 +0100 Subject: [PATCH 159/217] fix(catalog_calculate): refs #8408 remove comments resf#8408 --- db/routines/vn/procedures/catalog_calculate.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/catalog_calculate.sql b/db/routines/vn/procedures/catalog_calculate.sql index 2597a6d015..09f42f09aa 100644 --- a/db/routines/vn/procedures/catalog_calculate.sql +++ b/db/routines/vn/procedures/catalog_calculate.sql @@ -20,7 +20,6 @@ BEGIN */ DECLARE vAvailableCalc INT; DECLARE vAvailabled DATETIME; - -- DECLARE vAvailableNoRaidsCalc INT; DECLARE vDone BOOL; DECLARE vHour INT; DECLARE vShipped DATE; @@ -76,7 +75,7 @@ BEGIN IF vDone THEN LEAVE l; END IF; - + CALL `cache`.available_refresh(vAvailableCalc, FALSE, vWarehouseFk, vAvailabled); CALL buy_getUltimate(NULL, vWarehouseFk, vShipped); From 6110295cc287541f1b447bd6ead3ea4ddcba17ec Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 10 Feb 2025 11:40:54 +0100 Subject: [PATCH 160/217] fix: refs #6897 update entry_clone method to return newEntryId instead of result --- modules/entry/back/methods/entry/cloneEntry.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/entry/back/methods/entry/cloneEntry.js b/modules/entry/back/methods/entry/cloneEntry.js index 24a2f7a75c..fa4b479060 100644 --- a/modules/entry/back/methods/entry/cloneEntry.js +++ b/modules/entry/back/methods/entry/cloneEntry.js @@ -24,7 +24,6 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; const myOptions = {userId}; let tx; - let result; if (typeof options == 'object') Object.assign(myOptions, options); @@ -32,12 +31,13 @@ module.exports = Self => { tx = await Self.beginTransaction({}); myOptions.transaction = tx; } - try { - result = await Self.rawSql('CALL entry_clone(?)', [id], myOptions); + await Self.rawSql('CALL entry_clone(?, @newEntryId)', [id], myOptions); + const result = await Self.rawSql('SELECT @newEntryId', [], myOptions); + const newEntryId = result[0]['@newEntryId']; if (tx) await tx.commit(); - return result[0]; + return newEntryId; } catch (e) { if (tx) await tx.rollback(); throw e; From e19e50de148f9e46a12fa1e4c9807489d514b432 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 10 Feb 2025 13:04:23 +0100 Subject: [PATCH 161/217] feat: refs #8227 Update roadmap triggers to manage eta adjustments and prevent recursive calls --- .../vn/triggers/roadmapStop_beforeUpdate.sql | 35 +++++++++++-------- .../vn/triggers/roadmap_afterUpdate.sql | 25 ++++++++----- .../vn/triggers/roadmap_beforeUpdate.sql | 20 +++++++++++ .../11436-bronzeMonstera/00-firstScript.sql | 7 ++++ 4 files changed, 65 insertions(+), 22 deletions(-) create mode 100644 db/versions/11436-bronzeMonstera/00-firstScript.sql diff --git a/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql index c3142c8acc..93c44b042b 100644 --- a/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql @@ -19,24 +19,31 @@ BEGIN CALL util.throw('Departure time can not be after arrival time'); END IF; - SELECT MAX(eta) INTO vMaxEta - FROM roadmapStop - WHERE roadmapFk = NEW.roadmapFk - AND id <> OLD.id; + IF @roadmapTriggerIsActive IS NULL THEN + SET @roadmapTriggerIsActive = TRUE; - IF vMaxEta < NEW.eta OR vMaxEta IS NULL THEN - SET vMaxEta = NEW.eta; - END IF; + SELECT MAX(eta) INTO vMaxEta + FROM roadmapStop + WHERE roadmapFk = NEW.roadmapFk + AND id <> OLD.id; - SELECT eta INTO vCurrentEta - FROM roadmap - WHERE id = NEW.roadmapFk; + IF vMaxEta < NEW.eta OR vMaxEta IS NULL THEN + SET vMaxEta = NEW.eta; + END IF; - IF (vMaxEta <> vCurrentEta OR vMaxEta IS NULL) OR vMaxEta IS NOT NULL THEN - UPDATE roadmap - SET eta = vMaxEta + SELECT eta INTO vCurrentEta + FROM roadmap WHERE id = NEW.roadmapFk; + + IF (vMaxEta <> vCurrentEta OR vMaxEta IS NULL) OR vMaxEta IS NOT NULL THEN + UPDATE roadmap + SET eta = vMaxEta + WHERE id = NEW.roadmapFk; + END IF; + + SET @roadmapTriggerIsActive = NULL; + END IF; END IF; END$$ -DELIMITER ; +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/roadmap_afterUpdate.sql b/db/routines/vn/triggers/roadmap_afterUpdate.sql index 7fcc31d922..26f77dd0cc 100644 --- a/db/routines/vn/triggers/roadmap_afterUpdate.sql +++ b/db/routines/vn/triggers/roadmap_afterUpdate.sql @@ -1,17 +1,26 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_afterUpdate` - AFTER UPDATE ON `roadmap` - FOR EACH ROW +AFTER UPDATE ON `roadmap` +FOR EACH ROW BEGIN DECLARE vSeconds INT; - IF NOT (NEW.etd <=> OLD.etd) THEN - SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); - IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN - UPDATE roadmapStop - SET eta = eta + INTERVAL vSeconds SECOND - WHERE roadmapFk = NEW.id; + IF @roadmapTriggerIsActive IS NULL THEN + SET @roadmapTriggerIsActive = TRUE; + + IF NOT (NEW.etd <=> OLD.etd) THEN + SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); + + IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN + UPDATE vn.roadmapStop + SET eta = eta + INTERVAL vSeconds SECOND + WHERE roadmapFk = NEW.id; + + SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND; + END IF; END IF; + + SET @roadmapTriggerIsActive = NULL; END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/roadmap_beforeUpdate.sql b/db/routines/vn/triggers/roadmap_beforeUpdate.sql index 4f355915bc..01f1ba7061 100644 --- a/db/routines/vn/triggers/roadmap_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmap_beforeUpdate.sql @@ -3,6 +3,8 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_beforeUpdate` BEFORE UPDATE ON `roadmap` FOR EACH ROW BEGIN + DECLARE vSeconds INT; + SET NEW.editorFk = account.myUser_getId(); IF NOT (NEW.name <=> OLD.name) THEN @@ -37,5 +39,23 @@ BEGIN FROM worker w WHERE w.id = NEW.driverChangeFk); END IF; + + IF @trigger_active IS NULL THEN + SET @trigger_active = TRUE; + + IF NOT (NEW.etd <=> OLD.etd) THEN + SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); + + IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN + UPDATE vn.roadmapStop + SET eta = eta + INTERVAL vSeconds SECOND + WHERE roadmapFk = NEW.id; + + SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND; + END IF; + END IF; + + SET @trigger_active = NULL; + END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/versions/11436-bronzeMonstera/00-firstScript.sql b/db/versions/11436-bronzeMonstera/00-firstScript.sql new file mode 100644 index 0000000000..eaf0c48648 --- /dev/null +++ b/db/versions/11436-bronzeMonstera/00-firstScript.sql @@ -0,0 +1,7 @@ +ALTER TABLE vn.roadmap + MODIFY COLUMN dollyPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL COMMENT + 'Vehículo sin motor diseñado para conectarse a una unidad tractora, un camión o un vehículo tractor con fuerte potencia de tracción'; + +GRANT UPDATE (palletM3) ON vn.volumeConfig TO deliveryBoss; + +ALTER TABLE vn.volumeConfig ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; From 75b6867be8cfdc931396b1f9b00d79c431a7277b Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 10 Feb 2025 13:06:05 +0100 Subject: [PATCH 162/217] feat: refs #8227 Minor change --- db/routines/vn/triggers/roadmap_beforeUpdate.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/db/routines/vn/triggers/roadmap_beforeUpdate.sql b/db/routines/vn/triggers/roadmap_beforeUpdate.sql index 01f1ba7061..e9b4b1b981 100644 --- a/db/routines/vn/triggers/roadmap_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmap_beforeUpdate.sql @@ -40,8 +40,8 @@ BEGIN WHERE w.id = NEW.driverChangeFk); END IF; - IF @trigger_active IS NULL THEN - SET @trigger_active = TRUE; + IF @roadmapTriggerIsActive IS NULL THEN + SET @roadmapTriggerIsActive = TRUE; IF NOT (NEW.etd <=> OLD.etd) THEN SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); @@ -55,7 +55,7 @@ BEGIN END IF; END IF; - SET @trigger_active = NULL; + SET @roadmapTriggerIsActive = NULL; END IF; END$$ DELIMITER ; \ No newline at end of file From ec5ef3d7f8e0ba10ddecee9311fb1502b8654be0 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 10 Feb 2025 14:00:34 +0100 Subject: [PATCH 163/217] fix(item_getStock): refs #8408 field availabled used for itementryin selection Refs: #8408 --- db/routines/vn/procedures/item_getStock.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/item_getStock.sql b/db/routines/vn/procedures/item_getStock.sql index cd5bc4bdc6..4639521857 100644 --- a/db/routines/vn/procedures/item_getStock.sql +++ b/db/routines/vn/procedures/item_getStock.sql @@ -35,8 +35,8 @@ BEGIN SELECT iei.itemFk, iei.quantity FROM itemEntryIn iei JOIN item i ON i.id = iei.itemFk - WHERE iei.landed >= util.VN_CURDATE() - AND iei.landed < vDated + WHERE IFNULL(iei.availabled, iei.landed) >= util.VN_CURDATE() + AND IFNULL(iei.availabled, iei.landed) < vDated AND iei.warehouseInFk = vWarehouseFk AND (vItemFk IS NULL OR iei.itemFk = vItemFk) UNION ALL From fbf56ff0cfeb4090d7b9983938adbaed25d13358 Mon Sep 17 00:00:00 2001 From: Pako Date: Tue, 11 Feb 2025 08:46:24 +0100 Subject: [PATCH 164/217] fix(available_refresh): refs #8408 more availabled cases refs#8408 --- db/routines/cache/procedures/available_refresh.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/db/routines/cache/procedures/available_refresh.sql b/db/routines/cache/procedures/available_refresh.sql index 0e42a62cdc..96876f3335 100644 --- a/db/routines/cache/procedures/available_refresh.sql +++ b/db/routines/cache/procedures/available_refresh.sql @@ -89,12 +89,12 @@ proc: BEGIN AND (ir.ended IS NULL OR i.shipped <= ir.ended) AND i.warehouseFk = vWarehouse UNION ALL - SELECT i.itemFk, i.landed, i.quantity + SELECT i.itemFk, IFNULL(i.availabled, i.landed), i.quantity FROM vn.itemEntryIn i JOIN itemRange ir ON ir.itemFk = i.itemFk - WHERE i.landed >= vStartDate + WHERE IFNULL(i.availabled, i.landed) >= vStartDate AND IFNULL(i.availabled, i.landed) <= vAvailabled - AND (ir.ended IS NULL OR i.landed <= ir.ended) + AND (ir.ended IS NULL OR IFNULL(i.availabled, i.landed) <= ir.ended) AND i.warehouseInFk = vWarehouse UNION ALL SELECT i.itemFk, i.shipped, i.quantity From 96248132a1d519493f521f740a2040994aa1b366 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 11 Feb 2025 13:02:50 +0100 Subject: [PATCH 165/217] refactor: refs #6897 sql fixture data for improved readability and consistency --- db/dump/fixtures.before.sql | 48 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 9506eba368..1e5ed8ad65 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -983,30 +983,30 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`) ('VT', 'Sales'); INSERT INTO `vn`.`item`( - `id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`, - `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, - `itemPackingTypeFk`, `hasMinPrice`, `packingOut`, `weightByPiece`, `isCustomInspectionRequired` + `id`, `typeFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenseFk`, + `comment`, `relevancy`, `image`, `subName`, `minPrice`, `family`, `isFloramondo`, `genericFk`, + `itemPackingTypeFk`, `hasMinPrice`, `packingOut`, `weightByPiece`, `isCustomInspectionRequired` ) VALUES - (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, 3, 1), - (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, 2, 1), - (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, 5, 0), - (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 0), - (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL, 0), - (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, 0), - (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), - (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, 0), - (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 0), - (72, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', 'marvel', 1, 'VT', 0, NULL, NULL, 1, 1, NULL, 0) - (88, 1, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', 'Stark Industries', 10.0, 'VT', 0, NULL, NULL, 1, NULL, 0); + (1, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 'EMB', 0, NULL, 'V', 0, NULL, 3, 1), + (2, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 'VT', 0, NULL, 'H', 0, NULL, 2, 1), + (3, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, 5, 0), + (4, 1, 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (5, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (6, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (7, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (8, 2, 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (9, 2, 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, NULL, 0), + (10, 1, 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (11, 1, 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (12, 3, 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (13, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 'VT', 1, NULL, NULL, 1, NULL, NULL, 0), + (14, 5, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 1, NULL, NULL, 0, NULL, NULL, 0), + (15, 4, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, NULL, 0), + (16, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'EMB', 0, NULL, NULL, 0, NULL, NULL, 0), + (71, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 'VT', 0, NULL, NULL, 0, NULL, NULL, 0), + (72, 6, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, NULL, NULL, 1, 'VT', 0, NULL, NULL, 1, 1, NULL, 0), + (88, 1, 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, NULL, NULL,10, 'VT', 0, NULL, NULL, 1, NULL, NULL, 0); -- Update the taxClass after insert of the items @@ -1614,8 +1614,8 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal (18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), (19, 100, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE()), (20, 100, 2, 5, 450, 3, 2, 1.000, 1.000, 0.000, 10, 10, NULL, NULL, 0.00, 7.30, 7.00, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), - (21, 100,72, 55, 500, 5, 3, 1.000, 1.000, 0.000, 1, 1, 'packing', NULL, 0.00, 78.3, 75.6, 0, 1, 0, 1, 3, util.VN_CURDATE()), - (10000002, 12, 88, 50.0000, 5000, '4', 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, util.VN_CURDATE() - INTERVAL 2 MONTH); + (21, 100,72, 55, 500, 5, 3, 1.000, 1.000, 0.000, 1, 1, 'packing', NULL, 0.00, 78.3, 75.6, 0, 1, 0, 1, 3, util.VN_CURDATE()), + (10000002, 12,88, 50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, 1,util.VN_CURDATE() - INTERVAL 2 MONTH); INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`,`total`, `date_make`, `first_row_stamp`, `confirm_date`) VALUES From f347d9668f613707fd976bcc10c15fc022af68f9 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 11 Feb 2025 16:50:00 +0100 Subject: [PATCH 166/217] refactor: refs #6897 improve variable scope and query parameters in recalcEntryPrices.js --- modules/entry/back/methods/entry/recalcEntryPrices.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/entry/back/methods/entry/recalcEntryPrices.js b/modules/entry/back/methods/entry/recalcEntryPrices.js index 4621dc5a79..ef90091ec3 100644 --- a/modules/entry/back/methods/entry/recalcEntryPrices.js +++ b/modules/entry/back/methods/entry/recalcEntryPrices.js @@ -24,7 +24,6 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; const myOptions = {userId}; let tx; - let result; if (typeof options == 'object') Object.assign(myOptions, options); @@ -33,12 +32,12 @@ module.exports = Self => { myOptions.transaction = tx; } const entry = await Self.findById(entryFk, myOptions); - const entryConfig = await Self.app.models.EntryConfig.findOne(myOptions); + const entryConfig = await Self.app.models.EntryConfig.findOne({}, myOptions); if (entry.supplierFk === entryConfig.inventorySupplierFk) return; try { - result = await Self.rawSql('CALL vn.buy_recalcPricesByEntry(?)', [entryFk], myOptions); + const result = await Self.rawSql('CALL vn.buy_recalcPricesByEntry(?)', [entryFk], myOptions); if (tx) await tx.commit(); return result[0]; From 1c8ad94ab87bc38046ccb021a84909e538aaf84a Mon Sep 17 00:00:00 2001 From: jgallego Date: Wed, 12 Feb 2025 09:51:56 +0100 Subject: [PATCH 167/217] fix: update SQL fixture values and enhance getVideoList method with transaction handling --- db/dump/fixtures.after.sql | 4 +- .../back/methods/boxing/getVideoList.js | 11 ++++- .../methods/boxing/specs/getVideoList.spec.js | 41 ++++++++----------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/db/dump/fixtures.after.sql b/db/dump/fixtures.after.sql index 59730d5929..e68a8a7260 100644 --- a/db/dump/fixtures.after.sql +++ b/db/dump/fixtures.after.sql @@ -77,8 +77,8 @@ INSERT INTO `vn`.`agency` (`name`, `warehouseFk`, `isOwn`, `isAnyVolumeAllowed`) ('Otra agencia ', '1', '0', '0'); INSERT INTO `vn`.`expedition` (`agencyModeFk`, `ticketFk`, `isBox`, `counter`, `workerFk`, `externalId`, `packagingFk`, `hostFk`, `itemPackingTypeFk`, `hasNewRoute`) VALUES - ('1', '1', 1, '1', '1', '1', '1', 'pc00', 'F', 0), - ('1', '1', 1, '2', '1', '1', '1', 'pc00', 'F', 0); + ('1', '1', 1, '1', '1', '1', '1', 'pc1', 'F', 0), + ('1', '1', 1, '2', '1', '1', '1', 'pc1', 'F', 0); INSERT INTO vn.client (id,name,defaultAddressFk,street,fi,email,dueDay,isTaxDataChecked,accountingAccount,city,provinceFk,postcode,socialName,contact,credit,countryFk,quality,riskCalculated) VALUES (100,'root',110,'Valle de la muerte','74974747G','root@mydomain.com',0,1,'4300000078','ALGEMESI',1,'46680','rootSocial','rootContact',500.0,1,10,'2025-01-01'); diff --git a/modules/ticket/back/methods/boxing/getVideoList.js b/modules/ticket/back/methods/boxing/getVideoList.js index ba989936e5..db68d05063 100644 --- a/modules/ticket/back/methods/boxing/getVideoList.js +++ b/modules/ticket/back/methods/boxing/getVideoList.js @@ -45,11 +45,13 @@ module.exports = Self => { e.created FROM expedition e JOIN host h ON Convert(h.code USING utf8mb3) COLLATE utf8mb3_unicode_ci = e.hostFk - JOIN packingSite ps ON ps.hostFk = h.id + JOIN packingSite ps ON ps.hostFk = h.id WHERE e.id = ?;`; - const [expedition] = await models.PackingSiteConfig.rawSql(query, [id]); + + const [expedition] = await models.PackingSiteConfig.rawSql(query, [id], myOptions); if (!from && !expedition) return []; + let start = new Date(expedition.created); let end = new Date(start.getTime() + (packingSiteConfig.avgBoxingTime * 1000)); @@ -57,9 +59,13 @@ module.exports = Self => { start.setHours(from, 0, 0); end.setHours(to, 0, 0); } + const offset = start.getTimezoneOffset(); start = new Date(start.getTime() - (offset * 60 * 1000)); end = new Date(end.getTime() - (offset * 60 * 1000)); + const minutes = start.getMinutes(); + const roundedMinutes = minutes - (minutes % 15); + start.setMinutes(roundedMinutes, 0, 0); const videoUrl = `/${packingSiteConfig.shinobiToken}/videos/${packingSiteConfig.shinobiGroupKey}/${expedition.monitorId}`; @@ -73,6 +79,7 @@ module.exports = Self => { } catch (e) { return []; } + return response.data.videos.map(video => video.filename); }; }; diff --git a/modules/ticket/back/methods/boxing/specs/getVideoList.spec.js b/modules/ticket/back/methods/boxing/specs/getVideoList.spec.js index c6d1a3e07c..82780c5866 100644 --- a/modules/ticket/back/methods/boxing/specs/getVideoList.spec.js +++ b/modules/ticket/back/methods/boxing/specs/getVideoList.spec.js @@ -2,35 +2,28 @@ const models = require('vn-loopback/server/server').models; const axios = require('axios'); describe('boxing getVideoList()', () => { - it('should return video list', async() => { - const tx = await models.PackingSiteConfig.beginTransaction({}); + let tx; + let options; - try { - const options = {transaction: tx}; + beforeEach(async() => { + tx = await models.PackingSiteConfig.beginTransaction({}); + options = {transaction: tx}; + }); - const id = 1; - const from = 1; - const to = 2; + afterEach(async() => { + await tx.rollback(); + }); - const response = { - data: { - videos: [{ - id: 1, - filename: 'video1.mp4' - }] - } - }; + it('should make the correct API call', async() => { + const expedition = await models.Expedition.findById(15, null, options); + await expedition.updateAttribute('created', '2000-12-01 07:07:00', options); - spyOn(axios, 'get').and.returnValue(new Promise(resolve => resolve(response))); + const axiosSpy = spyOn(axios, 'get').and.callThrough(); + await models.Boxing.getVideoList(expedition.id, undefined, undefined, options); - const result = await models.Boxing.getVideoList(id, from, to, options); + const expectedStartTime = '2000-12-01T07:00:00'; + const calledUrl = axiosSpy.calls.mostRecent().args[0]; - expect(result[0]).toEqual(response.data.videos[0].filename); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + expect(calledUrl).toContain(`start=${expectedStartTime}`); }); }); From b95db2eff134044ae5ee83bd91feefed86c7b75e Mon Sep 17 00:00:00 2001 From: Pako Date: Wed, 12 Feb 2025 13:45:07 +0100 Subject: [PATCH 168/217] feat(productionControl and collection_new): refs #8575 new itempackingtype a Refs: #8575 --- db/routines/vn/procedures/collection_new.sql | 4 +++- db/routines/vn/procedures/productionControl.sql | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/collection_new.sql b/db/routines/vn/procedures/collection_new.sql index 84133d36eb..42ab85dfdb 100644 --- a/db/routines/vn/procedures/collection_new.sql +++ b/db/routines/vn/procedures/collection_new.sql @@ -160,9 +160,11 @@ BEGIN OR (NOT s.isPreparable AND NOT s.isPrintable) OR pb.collectionH IS NOT NULL OR pb.collectionV IS NOT NULL + OR pb.collectionA IS NOT NULL OR pb.collectionN IS NOT NULL - OR (NOT pb.H AND pb.V > 0 AND vItemPackingTypeFk = 'H') + OR (NOT pb.H AND pb.V + pb.A > 0 AND vItemPackingTypeFk = 'H') OR (NOT pb.V AND vItemPackingTypeFk = 'V') + OR (NOT pb.A AND vItemPackingTypeFk = 'A') OR (pc.isPreviousPreparationRequired AND pb.previousWithoutParking) OR LENGTH(pb.problem) OR pb.lines > vLinesLimit diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql index 605c06dba7..e23232b8b0 100644 --- a/db/routines/vn/procedures/productionControl.sql +++ b/db/routines/vn/procedures/productionControl.sql @@ -91,6 +91,7 @@ proc: BEGIN pk.code parking, 0 H, 0 V, + 0 A, 0 N, st.isOk, ag.isOwn, @@ -138,6 +139,7 @@ proc: BEGIN CHANGE COLUMN `problem` `problem` VARCHAR(255), ADD COLUMN `collectionH` INT, ADD COLUMN `collectionV` INT, + ADD COLUMN `collectionA` INT, ADD COLUMN `collectionN` INT; -- Clientes Nuevos o Recuperados @@ -178,12 +180,14 @@ proc: BEGIN ENGINE = MEMORY SELECT ticketFk, SUM(sub.H) H, - SUM(sub.V) V, + SUM(sub.V) V, + SUM(sub.A) A, SUM(sub.N) N FROM ( SELECT t.ticketFk, SUM(i.itemPackingTypeFk = 'H') H, SUM(i.itemPackingTypeFk = 'V') V, + SUM(i.itemPackingTypeFk = 'A') A, SUM(i.itemPackingTypeFk IS NULL) N FROM tmp.productionTicket t JOIN sale s ON s.ticketFk = t.ticketFk @@ -196,6 +200,7 @@ proc: BEGIN JOIN tItemPackingType ti ON ti.ticketFk = pb.ticketFk SET pb.H = ti.H, pb.V = ti.V, + pb.A = ti.A, pb.N = ti.N; -- Colecciones segun tipo de encajado @@ -203,6 +208,7 @@ proc: BEGIN JOIN ticketCollection tc ON pb.ticketFk = tc.ticketFk SET pb.collectionH = IF(pb.H, tc.collectionFk, NULL), pb.collectionV = IF(pb.V, tc.collectionFk, NULL), + pb.collectionA = IF(pb.A, tc.collectionFk, NULL), pb.collectionN = IF(pb.N, tc.collectionFk, NULL); -- Previa pendiente From f631aa13148db17f532d24c90c28dac665866517 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 12 Feb 2025 16:26:01 +0100 Subject: [PATCH 169/217] fix: remotMethodCtx --- modules/item/back/methods/item/getSimilar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/item/back/methods/item/getSimilar.js b/modules/item/back/methods/item/getSimilar.js index 05c4a20e53..2479d08b52 100644 --- a/modules/item/back/methods/item/getSimilar.js +++ b/modules/item/back/methods/item/getSimilar.js @@ -1,5 +1,5 @@ module.exports = Self => { - Self.remoteMethod('getSimilar', { + Self.remoteMethodCtx('getSimilar', { description: 'Returns list of items with similar item requested', accessType: 'READ', accepts: [ From 5404f895b26d7b4cf44100157df1d75fe75afb21 Mon Sep 17 00:00:00 2001 From: ivanm Date: Wed, 12 Feb 2025 17:08:45 +0100 Subject: [PATCH 170/217] refactor: refs #8573 add fk to expedition.hostFk --- db/versions/11441-limeCyca/00-firstScript.sql | 9 +++++++++ modules/ticket/back/methods/boxing/getVideo.js | 2 +- modules/ticket/back/methods/boxing/getVideoList.js | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 db/versions/11441-limeCyca/00-firstScript.sql diff --git a/db/versions/11441-limeCyca/00-firstScript.sql b/db/versions/11441-limeCyca/00-firstScript.sql new file mode 100644 index 0000000000..f417a2c8ef --- /dev/null +++ b/db/versions/11441-limeCyca/00-firstScript.sql @@ -0,0 +1,9 @@ +ALTER TABLE vn.expedition + MODIFY COLUMN hostFk VARCHAR(30) COLLATE utf8mb3_general_ci; + +ALTER TABLE vn.expedition + ADD CONSTRAINT fk_expedition_host_code + FOREIGN KEY (hostFk) + REFERENCES host(code) + ON UPDATE CASCADE + ON DELETE CASCADE; \ No newline at end of file diff --git a/modules/ticket/back/methods/boxing/getVideo.js b/modules/ticket/back/methods/boxing/getVideo.js index 6f471e837f..fe951a3705 100644 --- a/modules/ticket/back/methods/boxing/getVideo.js +++ b/modules/ticket/back/methods/boxing/getVideo.js @@ -49,7 +49,7 @@ module.exports = Self => { ps.monitorId, e.created FROM expedition e - JOIN host h ON Convert(h.code USING utf8mb3) COLLATE utf8mb3_unicode_ci = e.hostFk + JOIN host h ON h.code = e.hostFk JOIN packingSite ps ON ps.hostFk = h.id WHERE e.id = ?;`; const [expedition] = await models.Expedition.rawSql(query, [id]); diff --git a/modules/ticket/back/methods/boxing/getVideoList.js b/modules/ticket/back/methods/boxing/getVideoList.js index db68d05063..41930c7f7d 100644 --- a/modules/ticket/back/methods/boxing/getVideoList.js +++ b/modules/ticket/back/methods/boxing/getVideoList.js @@ -44,7 +44,7 @@ module.exports = Self => { ps.monitorId, e.created FROM expedition e - JOIN host h ON Convert(h.code USING utf8mb3) COLLATE utf8mb3_unicode_ci = e.hostFk + JOIN host h ON h.code = e.hostFk JOIN packingSite ps ON ps.hostFk = h.id WHERE e.id = ?;`; From 514ddf1045a0eddc857fb834ce1f58daa2f8f9ef Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 12 Feb 2025 19:40:22 +0100 Subject: [PATCH 171/217] feat: refs #6897 add search method and enhance ACL permissions for Entry model --- .../11399-bronzeOak/00-firstScript.sql | 78 ++++++++++++++++++- modules/item/back/methods/item/search.js | 38 +++++++++ modules/item/back/models/item.js | 1 + 3 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 modules/item/back/methods/item/search.js diff --git a/db/versions/11399-bronzeOak/00-firstScript.sql b/db/versions/11399-bronzeOak/00-firstScript.sql index e37efe8e61..513cc96c5b 100644 --- a/db/versions/11399-bronzeOak/00-firstScript.sql +++ b/db/versions/11399-bronzeOak/00-firstScript.sql @@ -1,6 +1,7 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('Entry','getBuyList','READ','ALLOW','ROLE','buyer'), ('Entry','getBuyUltimate','READ','ALLOW','ROLE','buyer'), + ('Entry','search','READ','ALLOW','ROLE','buyer'), ('Entry','create','WRITE','ALLOW','ROLE','buyer'), ('Entry','cloneEntry','WRITE','ALLOW','ROLE','buyer'), ('Entry','deleteEntry','WRITE','ALLOW','ROLE','buyer'), @@ -11,4 +12,79 @@ INSERT INTO salix.ACL (model,property,accessType,permission,principalType,princi ALTER TABLE vn.ink ADD IF NOT EXISTS hexJson TEXT NOT NULL; UPDATE vn.ink - SET hexJson = CONCAT('{"value": ["',hex,'"]}') + SET hexJson = CONCAT('{"value": ["',hex,'"]}'); + +UPDATE vn.ink +SET hexJson = CASE `name` + WHEN 'Blanco/Naranja' THEN '{"value": ["FFFFFF", "FFA500"]}' + WHEN 'Sin especificar' THEN '{"value": ["808080"]}' + WHEN '2 Colores' THEN '{"value": ["000000", "FFFFFF"]}' + WHEN 'Amarillo/Marrón' THEN '{"value": ["FFFF00", "8B4513"]}' + WHEN 'Amarillo/Naranja' THEN '{"value": ["FFFF00", "FFA500"]}' + WHEN 'Rosa/Blanco/Amarillo' THEN '{"value": ["FFC0CB", "FFFFFF", "FFFF00"]}' + WHEN 'Rosa/Amarillo' THEN '{"value": ["FFC0CB", "FFFF00"]}' + WHEN 'Antracita' THEN '{"value": ["2F2F2F"]}' + WHEN 'Azul/Amarillo' THEN '{"value": ["0000FF", "FFFF00"]}' + WHEN 'Azul Claro' THEN '{"value": ["ADD8E6"]}' + WHEN 'Azul/Marron' THEN '{"value": ["0000FF", "8B4513"]}' + WHEN 'Azul/Verde' THEN '{"value": ["0000FF", "008000"]}' + WHEN 'Blanco/Amarillo' THEN '{"value": ["FFFFFF", "FFFF00"]}' + WHEN 'Blaugrana' THEN '{"value": ["A50044", "004D98"]}' + WHEN 'Blanco/Negro' THEN '{"value": ["FFFFFF", "000000"]}' + WHEN 'Blanco/Verde' THEN '{"value": ["FFFFFF", "008000"]}' + WHEN 'Blanco/Azul' THEN '{"value": ["FFFFFF", "0000FF"]}' + WHEN 'Blanco/Rosa' THEN '{"value": ["FFFFFF", "FFC0CB"]}' + WHEN 'Cognac/Verde' THEN '{"value": ["9A463D", "008000"]}' + WHEN 'Champagne/Verde' THEN '{"value": ["F7E7CE", "008000"]}' + WHEN 'Camuflaje' THEN '{"value": ["6B8E23", "556B2F", "8B4513"]}' + WHEN 'Crema/Rosa' THEN '{"value": ["FFFDD0", "FFC0CB"]}' + WHEN 'Fucsia/Amarillo' THEN '{"value": ["FF00FF", "FFFF00"]}' + WHEN 'Fucsia/Blanco' THEN '{"value": ["FF00FF", "FFFFFF"]}' + WHEN 'Fucsia/Crema' THEN '{"value": ["FF00FF", "FFFDD0"]}' + WHEN 'Fucsia/Rosa' THEN '{"value": ["FF00FF", "FFC0CB"]}' + WHEN 'Fucsia/Verde' THEN '{"value": ["FF00FF", "008000"]}' + WHEN 'Granate/Blanco' THEN '{"value": ["800000", "FFFFFF"]}' + WHEN 'Gris Lila' THEN '{"value": ["808080", "C8A2C8"]}' + WHEN 'Lavanda/Amarillo' THEN '{"value": ["E6E6FA", "FFFF00"]}' + WHEN 'Lavanda/Gris' THEN '{"value": ["E6E6FA", "808080"]}' + WHEN 'Lividum' THEN '{"value": ["702963"]}' + WHEN 'Morado/Amarillo' THEN '{"value": ["800080", "FFFF00"]}' + WHEN 'Marrón/Blanco' THEN '{"value": ["8B4513", "FFFFFF"]}' + WHEN 'Marron/Gris' THEN '{"value": ["8B4513", "808080"]}' + WHEN 'Marron/Negro' THEN '{"value": ["8B4513", "000000"]}' + WHEN 'Marrón/Verde' THEN '{"value": ["8B4513", "008000"]}' + WHEN 'Matizado' THEN '{"value": ["D3D3D3", "808080", "FFFFFF"]}' + WHEN 'Mixto' THEN '{"value": ["FF0000", "0000FF", "008000", "FFFF00"]}' + WHEN 'Marrón Oscuro' THEN '{"value": ["654321"]}' + WHEN 'Naranja/Marron' THEN '{"value": ["FFA500", "8B4513"]}' + WHEN 'Naranja/Rosa' THEN '{"value": ["FFA500", "FFC0CB"]}' + WHEN 'Ocre/Burgundi' THEN '{"value": ["CC7722", "800020"]}' + WHEN 'Oro/Plata' THEN '{"value": ["FFD700", "C0C0C0"]}' + WHEN 'Oro/Negro' THEN '{"value": ["FFD700", "000000"]}' + WHEN 'Oro/Verde' THEN '{"value": ["FFD700", "008000"]}' + WHEN 'Purpura/Blanco' THEN '{"value": ["800080", "FFFFFF"]}' + WHEN 'Purpura/Rosa' THEN '{"value": ["800080", "FFC0CB"]}' + WHEN 'Pastel' THEN '{"value": ["FFB6C1", "87CEFA", "98FB98"]}' + WHEN 'Plata' THEN '{"value": ["C0C0C0"]}' + WHEN 'Plata/Verde' THEN '{"value": ["C0C0C0", "008000"]}' + WHEN 'Rojo/Amarillo' THEN '{"value": ["FF0000", "FFFF00"]}' + WHEN 'Rojo/Blanco' THEN '{"value": ["FF0000", "FFFFFF"]}' + WHEN 'Rojo/Naranja' THEN '{"value": ["FF0000", "FFA500"]}' + WHEN 'Rojo/Oro' THEN '{"value": ["FF0000", "FFD700"]}' + WHEN 'Rojo/Verde' THEN '{"value": ["FF0000", "008000"]}' + WHEN 'Rosa/Lila' THEN '{"value": ["FFC0CB", "C8A2C8"]}' + WHEN 'Rosa/Naranja' THEN '{"value": ["FFC0CB", "FFA500"]}' + WHEN 'Rojo/Rosa' THEN '{"value": ["FF0000", "FFC0CB"]}' + WHEN 'Rosa empolvado' THEN '{"value": ["E6B8AF"]}' + WHEN 'Rosa/Verde' THEN '{"value": ["FFC0CB", "008000"]}' + WHEN 'Topo/Blanco' THEN '{"value": ["8B8589", "FFFFFF"]}' + WHEN 'Topo' THEN '{"value": ["8B8589"]}' + WHEN 'Transparente' THEN '{"value": ["00000000"]}' + WHEN 'Verde/Amarillo' THEN '{"value": ["008000", "FFFF00"]}' + WHEN 'Verde/Negro' THEN '{"value": ["008000", "000000"]}' + WHEN 'Variado' THEN '{"value": ["FF0000", "0000FF", "008000", "FFFF00", "FFA500"]}' + WHEN 'Verde Claro/Morado' THEN '{"value": ["90EE90", "800080"]}' + WHEN 'Verde/Lila' THEN '{"value": ["008000", "C8A2C8"]}' + WHEN 'Vaquero Neon' THEN '{"value": ["1560BD", "FFFF00"]}' + ELSE hexJson +END; diff --git a/modules/item/back/methods/item/search.js b/modules/item/back/methods/item/search.js new file mode 100644 index 0000000000..447e0fadd4 --- /dev/null +++ b/modules/item/back/methods/item/search.js @@ -0,0 +1,38 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethodCtx('search', { + description: 'Returns an array of search results for a specified item', + accepts: [{ + arg: 'filter', + type: 'object', + description: 'Filter to define conditions and paginate the data.', + required: true + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/search`, + verb: 'GET' + } + }); + + Self.search = async(ctx, filter) => { + const conn = Self.dataSource.connector; + + const stmt = new ParameterizedSQL(` + SELECT * + FROM( + SELECT i.id, i.name, i.size, p.name producerName + FROM item i + LEFT JOIN producer p ON p.id = i.producerFk + ) sub + `); + + stmt.merge(conn.makeSuffix(filter)); + + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index db2f565518..5ecd174057 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -18,6 +18,7 @@ module.exports = Self => { require('../methods/item/buyerWasteEmail')(Self); require('../methods/item/setVisibleDiscard')(Self); require('../methods/item/get')(Self); + require('../methods/item/search')(Self); Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'}); From 3a1849326bce234f237d087231ff90438e2537df Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 13 Feb 2025 08:41:13 +0100 Subject: [PATCH 172/217] fix(item_getBalance): refs #8408 availabled field prevails over landed Refs: #8408 --- db/routines/vn/procedures/item_getBalance.sql | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/db/routines/vn/procedures/item_getBalance.sql b/db/routines/vn/procedures/item_getBalance.sql index c4974491cc..4c425e20be 100644 --- a/db/routines/vn/procedures/item_getBalance.sql +++ b/db/routines/vn/procedures/item_getBalance.sql @@ -30,7 +30,7 @@ BEGIN WITH entriesIn AS ( SELECT 'entry' originType, e.id originId, - tr.landed shipped, + IFNULL(tr.availabled, tr.landed) shipped, b.quantity `in`, NULL `out`, st.alertLevel , @@ -54,7 +54,7 @@ BEGIN OR (util.VN_CURDATE() AND tr.isReceived), 'DELIVERED', 'FREE') - WHERE tr.landed >= vDateInventory + WHERE IFNULL(tr.availabled, tr.landed) >= vDateInventory AND tr.warehouseInFk = vWarehouseFk AND (s.id <> vSupplierInventoryFk OR vDated IS NULL) AND b.itemFk = vItemFk @@ -99,7 +99,7 @@ BEGIN ), sales AS ( WITH itemSales AS ( - SELECT DATE(t.shipped) shipped, + SELECT DATE(t.shipped) + INTERVAL HOUR(z.`hour`) HOUR shipped, s.quantity, st2.alertLevel, st2.name, @@ -114,6 +114,7 @@ BEGIN cb.claimFk FROM vn.sale s JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.`zone` z ON z.id = t.zoneFk LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id LEFT JOIN vn.state st ON st.code = ts.code JOIN vn.client c ON c.id = t.clientFk @@ -189,14 +190,15 @@ BEGIN SELECT * FROM sales UNION ALL SELECT * FROM orders - ORDER BY shipped, + ORDER BY DATE(shipped), (inventorySupplierFk = entityId) DESC, alertLevel DESC, isTicket, `order` DESC, isPicked DESC, `in` DESC, - `out` DESC; + `out` DESC, + shipped; IF vDated IS NULL THEN SET @a := 0; @@ -205,7 +207,7 @@ BEGIN SELECT t.originType, t.originId, - DATE(@shipped:= t.shipped) shipped, + @shipped:= t.shipped, t.alertLevel, t.stateName, t.reference, From 92ab3648e70980f4745f39fda2bc9ee97fdcfc11 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 13 Feb 2025 09:22:45 +0100 Subject: [PATCH 173/217] feat: refs #8227 Fix tests --- .../vn/triggers/roadmap_afterUpdate.sql | 26 ------------------- .../vn/triggers/roadmap_beforeUpdate.sql | 2 +- 2 files changed, 1 insertion(+), 27 deletions(-) delete mode 100644 db/routines/vn/triggers/roadmap_afterUpdate.sql diff --git a/db/routines/vn/triggers/roadmap_afterUpdate.sql b/db/routines/vn/triggers/roadmap_afterUpdate.sql deleted file mode 100644 index 26f77dd0cc..0000000000 --- a/db/routines/vn/triggers/roadmap_afterUpdate.sql +++ /dev/null @@ -1,26 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmap_afterUpdate` -AFTER UPDATE ON `roadmap` -FOR EACH ROW -BEGIN - DECLARE vSeconds INT; - - IF @roadmapTriggerIsActive IS NULL THEN - SET @roadmapTriggerIsActive = TRUE; - - IF NOT (NEW.etd <=> OLD.etd) THEN - SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); - - IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN - UPDATE vn.roadmapStop - SET eta = eta + INTERVAL vSeconds SECOND - WHERE roadmapFk = NEW.id; - - SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND; - END IF; - END IF; - - SET @roadmapTriggerIsActive = NULL; - END IF; -END$$ -DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/roadmap_beforeUpdate.sql b/db/routines/vn/triggers/roadmap_beforeUpdate.sql index e9b4b1b981..610bca3ee9 100644 --- a/db/routines/vn/triggers/roadmap_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmap_beforeUpdate.sql @@ -47,7 +47,7 @@ BEGIN SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN - UPDATE vn.roadmapStop + UPDATE roadmapStop SET eta = eta + INTERVAL vSeconds SECOND WHERE roadmapFk = NEW.id; From 4042679c9bde1c205cba6c55fd88a61d518e7b08 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 13 Feb 2025 14:12:44 +0100 Subject: [PATCH 174/217] feat: refs #8227 Grants --- db/routines/vn/triggers/roadmap_beforeUpdate.sql | 2 +- db/versions/11436-bronzeMonstera/00-firstScript.sql | 6 +----- db/versions/11436-bronzeMonstera/01-firstScript.sql | 4 ++++ db/versions/11436-bronzeMonstera/02-firstScript.sql | 3 +++ 4 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 db/versions/11436-bronzeMonstera/01-firstScript.sql create mode 100644 db/versions/11436-bronzeMonstera/02-firstScript.sql diff --git a/db/routines/vn/triggers/roadmap_beforeUpdate.sql b/db/routines/vn/triggers/roadmap_beforeUpdate.sql index 610bca3ee9..b5757e5191 100644 --- a/db/routines/vn/triggers/roadmap_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmap_beforeUpdate.sql @@ -46,7 +46,7 @@ BEGIN IF NOT (NEW.etd <=> OLD.etd) THEN SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); - IF vSeconds IS NOT NULL AND vSeconds <> 0 THEN + IF vSeconds <> 0 THEN UPDATE roadmapStop SET eta = eta + INTERVAL vSeconds SECOND WHERE roadmapFk = NEW.id; diff --git a/db/versions/11436-bronzeMonstera/00-firstScript.sql b/db/versions/11436-bronzeMonstera/00-firstScript.sql index eaf0c48648..56c4f01b09 100644 --- a/db/versions/11436-bronzeMonstera/00-firstScript.sql +++ b/db/versions/11436-bronzeMonstera/00-firstScript.sql @@ -1,7 +1,3 @@ ALTER TABLE vn.roadmap MODIFY COLUMN dollyPlate varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL COMMENT - 'Vehículo sin motor diseñado para conectarse a una unidad tractora, un camión o un vehículo tractor con fuerte potencia de tracción'; - -GRANT UPDATE (palletM3) ON vn.volumeConfig TO deliveryBoss; - -ALTER TABLE vn.volumeConfig ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; + 'Vehículo sin motor diseñado para conectarse a una unidad tractora, un camión o un vehículo tractor con fuerte potencia de tracción'; \ No newline at end of file diff --git a/db/versions/11436-bronzeMonstera/01-firstScript.sql b/db/versions/11436-bronzeMonstera/01-firstScript.sql new file mode 100644 index 0000000000..6b3ce86329 --- /dev/null +++ b/db/versions/11436-bronzeMonstera/01-firstScript.sql @@ -0,0 +1,4 @@ +ALTER TABLE vn.volumeConfig ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; + +GRANT UPDATE (palletM3) ON vn.volumeConfig TO deliveryBoss; +GRANT EXECUTE ON FUNCTION vn.getTimeBetweenRoadmapAddresses TO deliveryBoss; diff --git a/db/versions/11436-bronzeMonstera/02-firstScript.sql b/db/versions/11436-bronzeMonstera/02-firstScript.sql new file mode 100644 index 0000000000..ee384ac2ce --- /dev/null +++ b/db/versions/11436-bronzeMonstera/02-firstScript.sql @@ -0,0 +1,3 @@ +ALTER TABLE vn.vehicle + MODIFY COLUMN typeFk enum('car','van','truck','trailer','tug','dolly','trailerLink') + CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT 'van' NOT NULL; From 845ce8d6d86c1c486d6169a7b110e1da92de579f Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 13 Feb 2025 14:36:09 +0100 Subject: [PATCH 175/217] feat: refs #8227 Minor changes --- .../vn/triggers/roadmapStop_beforeInsert.sql | 20 ++++++++++++------- .../vn/triggers/roadmapStop_beforeUpdate.sql | 1 - 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/db/routines/vn/triggers/roadmapStop_beforeInsert.sql b/db/routines/vn/triggers/roadmapStop_beforeInsert.sql index 012702f3ed..5d83d653bd 100644 --- a/db/routines/vn/triggers/roadmapStop_beforeInsert.sql +++ b/db/routines/vn/triggers/roadmapStop_beforeInsert.sql @@ -17,16 +17,22 @@ BEGIN END IF; END IF; - IF NEW.roadmapFk IS NOT NULL AND NEW.eta IS NOT NULL THEN - SELECT eta INTO vRoadmapEta - FROM roadmap - WHERE id = NEW.roadmapFk; + IF @roadmapTriggerIsActive IS NULL THEN + SET @roadmapTriggerIsActive = TRUE; - IF vRoadmapEta < NEW.eta OR vRoadmapEta IS NULL THEN - UPDATE roadmap - SET eta = NEW.eta + IF NEW.roadmapFk IS NOT NULL AND NEW.eta IS NOT NULL THEN + SELECT eta INTO vRoadmapEta + FROM roadmap WHERE id = NEW.roadmapFk; + + IF vRoadmapEta < NEW.eta OR vRoadmapEta IS NULL THEN + UPDATE roadmap + SET eta = NEW.eta + WHERE id = NEW.roadmapFk; + END IF; END IF; + + SET @roadmapTriggerIsActive = NULL; END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql index 93c44b042b..e7cf33866b 100644 --- a/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql @@ -42,7 +42,6 @@ BEGIN END IF; SET @roadmapTriggerIsActive = NULL; - END IF; END IF; END$$ From caa921020d4debcd68344e97c02e0a7aee45e8a4 Mon Sep 17 00:00:00 2001 From: ivanm Date: Thu, 13 Feb 2025 16:41:29 +0100 Subject: [PATCH 176/217] refactor: refs #8573 update before alter table --- db/versions/11441-limeCyca/00-firstScript.sql | 18 +++++++++--------- db/versions/11441-limeCyca/01-firstScript.sql | 9 +++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 db/versions/11441-limeCyca/01-firstScript.sql diff --git a/db/versions/11441-limeCyca/00-firstScript.sql b/db/versions/11441-limeCyca/00-firstScript.sql index f417a2c8ef..54024ec8d1 100644 --- a/db/versions/11441-limeCyca/00-firstScript.sql +++ b/db/versions/11441-limeCyca/00-firstScript.sql @@ -1,9 +1,9 @@ -ALTER TABLE vn.expedition - MODIFY COLUMN hostFk VARCHAR(30) COLLATE utf8mb3_general_ci; - -ALTER TABLE vn.expedition - ADD CONSTRAINT fk_expedition_host_code - FOREIGN KEY (hostFk) - REFERENCES host(code) - ON UPDATE CASCADE - ON DELETE CASCADE; \ No newline at end of file +UPDATE vn.expedition e + JOIN ( + SELECT id + FROM vn.expedition + WHERE hostFk COLLATE utf8mb3_unicode_ci NOT IN + (SELECT code COLLATE utf8mb3_unicode_ci FROM host WHERE code IS NOT NULL) + ) s + ON e.id = s.id + SET e.hostFk = 'pc336'; \ No newline at end of file diff --git a/db/versions/11441-limeCyca/01-firstScript.sql b/db/versions/11441-limeCyca/01-firstScript.sql new file mode 100644 index 0000000000..f417a2c8ef --- /dev/null +++ b/db/versions/11441-limeCyca/01-firstScript.sql @@ -0,0 +1,9 @@ +ALTER TABLE vn.expedition + MODIFY COLUMN hostFk VARCHAR(30) COLLATE utf8mb3_general_ci; + +ALTER TABLE vn.expedition + ADD CONSTRAINT fk_expedition_host_code + FOREIGN KEY (hostFk) + REFERENCES host(code) + ON UPDATE CASCADE + ON DELETE CASCADE; \ No newline at end of file From 9dd3f7198ce94cf29c116a814bdd96a7fa790093 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 13 Feb 2025 22:56:43 +0100 Subject: [PATCH 177/217] fix: getSuggestedTickets --- db/dump/fixtures.before.sql | 4 ++-- .../back/methods/route/specs/getSuggestedTickets.spec.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 1e5ed8ad65..828b0b4413 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -799,7 +799,7 @@ INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeF (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL, NULL, NULL), - (1000000, NULL, 1, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1, 'employee', 131, NULL, 0, 1, 1.00, 0.00, CURDATE(), NULL, NULL, '', NULL); + (1000000, NULL, 1, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1, 'employee', 121, NULL, 0, 1, 1.00, 0.00, CURDATE(), NULL, NULL, '', NULL); INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`) VALUES @@ -1614,7 +1614,7 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal (18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), (19, 100, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE()), (20, 100, 2, 5, 450, 3, 2, 1.000, 1.000, 0.000, 10, 10, NULL, NULL, 0.00, 7.30, 7.00, 0, 1, 0, NULL, 2.5, util.VN_CURDATE()), - (21, 100,72, 55, 500, 5, 3, 1.000, 1.000, 0.000, 1, 1, 'packing', NULL, 0.00, 78.3, 75.6, 0, 1, 0, 1, 3, util.VN_CURDATE()), + (21, 100,72, 55, 500, 5, 3, 1.000, 1.000, 0.000, 1, 1, 'packing', NULL, 0.00, 78.3, 75.6, 0, 1, 0, 1, 3, util.VN_CURDATE()), (10000002, 12,88, 50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.60, 99.40, 0, 1, 0, 1.00, 1,util.VN_CURDATE() - INTERVAL 2 MONTH); INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`,`total`, `date_make`, `first_row_stamp`, `confirm_date`) diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js index 3d6702482d..73264ad546 100644 --- a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -33,7 +33,7 @@ describe('route getSuggestedTickets()', () => { expect(result.length).toEqual(5); expect(anyResult.zoneFk).toEqual(1); - expect(anyResult.agencyModeFk).toEqual(8); + expect([1, 8]).toContain(anyResult.agencyModeFk); await tx.rollback(); } catch (e) { From 8110e88aa79fc86907ce3996fb80ce18f6075467 Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 14 Feb 2025 08:29:55 +0100 Subject: [PATCH 178/217] fix: vnUser, default false --- back/models/vn-user.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/back/models/vn-user.json b/back/models/vn-user.json index 1ca06e4551..03a4e5bc1f 100644 --- a/back/models/vn-user.json +++ b/back/models/vn-user.json @@ -54,7 +54,8 @@ "type": "string" }, "hasGrant": { - "type": "boolean" + "type": "boolean", + "default": false }, "passExpired": { "type": "date" @@ -168,7 +169,7 @@ "emailVerified", "twoFactor" ] - + } } } From d6f08d7e27e843328fed6e543e162a53c8ece291 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 14 Feb 2025 10:04:04 +0100 Subject: [PATCH 179/217] feat: refs #8227 update roadmap triggers and views, remove obsolete trigger and column --- db/dump/fixtures.before.sql | 8 ++--- .../vn/triggers/roadmapStop_beforeDelete.sql | 26 ---------------- .../vn/triggers/roadmapStop_beforeInsert.sql | 20 ------------ .../vn/triggers/roadmapStop_beforeUpdate.sql | 31 +------------------ .../vn/triggers/roadmap_beforeUpdate.sql | 22 +++++-------- db/routines/vn/views/roadmapEta.sql | 8 +++++ .../11436-bronzeMonstera/01-firstScript.sql | 1 - .../11436-bronzeMonstera/03-firstScript.sql | 1 + 8 files changed, 21 insertions(+), 96 deletions(-) delete mode 100644 db/routines/vn/triggers/roadmapStop_beforeDelete.sql create mode 100644 db/routines/vn/views/roadmapEta.sql create mode 100644 db/versions/11436-bronzeMonstera/03-firstScript.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 9f632383b1..308a2554fc 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -2754,11 +2754,11 @@ INSERT INTO `vn`.`roadmapAddress` (`addressFk`) (3), (4); -INSERT INTO `vn`.`roadmap` (`id`, `name`, `tractorPlate`, `trailerPlate`, `phone`, `supplierFk`, `etd`, `eta`, `observations`, `editorFk`, `price`, `driverName`) +INSERT INTO `vn`.`roadmap` (`id`, `name`, `tractorPlate`, `trailerPlate`, `phone`, `supplierFk`, `etd`, `observations`, `editorFk`, `price`, `driverName`) VALUES - (1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), DATE_ADD(util.VN_NOW(), INTERVAL 2 DAY), 'this is test observation', 1, 15, 'Batman'), - (2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), DATE_ADD(util.VN_NOW(), INTERVAL 5 DAY), 'test observation', 1, 20, 'Robin'), - (3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 3 DAY), DATE_ADD(util.VN_NOW(), INTERVAL 6 DAY), 'observations...', 2, 25, 'Driverman'); + (1, 'val-algemesi', '1234-BCD', '9876-BCD', '111111111', 1, util.VN_NOW(), 'this is test observation', 1, 15, 'Batman'), + (2, 'alg-valencia', '2345-CDF', '8765-BCD', '111111111', 1, util.VN_NOW(), 'test observation', 1, 20, 'Robin'), + (3, 'alz-algemesi', '3456-DFG', '7654-BCD', '222222222', 2, DATE_ADD(util.VN_NOW(), INTERVAL 3 DAY), 'observations...', 2, 25, 'Driverman'); INSERT INTO `vn`.`roadmapStop` (`id`, `roadmapFk`, `roadmapAddressFk`, `eta`, `description`, `editorFk`) VALUES diff --git a/db/routines/vn/triggers/roadmapStop_beforeDelete.sql b/db/routines/vn/triggers/roadmapStop_beforeDelete.sql deleted file mode 100644 index f0faeb8bef..0000000000 --- a/db/routines/vn/triggers/roadmapStop_beforeDelete.sql +++ /dev/null @@ -1,26 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeDelete` - BEFORE DELETE ON `roadmapStop` - FOR EACH ROW -BEGIN - DECLARE vMaxEta DATETIME; - DECLARE vRoadmapEta DATETIME; - - IF OLD.roadmapFk IS NOT NULL THEN - SELECT MAX(eta) INTO vMaxEta - FROM roadmapStop - WHERE roadmapFk = OLD.roadmapFk - AND id <> OLD.id; - - SELECT eta INTO vRoadmapEta - FROM roadmap - WHERE id = OLD.roadmapFk; - - IF vMaxEta <> vRoadmapEta OR vMaxEta IS NULL THEN - UPDATE roadmap - SET eta = vMaxEta - WHERE id = OLD.roadmapFk; - END IF; - END IF; -END$$ -DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/roadmapStop_beforeInsert.sql b/db/routines/vn/triggers/roadmapStop_beforeInsert.sql index 5d83d653bd..2c2a03d866 100644 --- a/db/routines/vn/triggers/roadmapStop_beforeInsert.sql +++ b/db/routines/vn/triggers/roadmapStop_beforeInsert.sql @@ -3,8 +3,6 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeInser BEFORE INSERT ON `roadmapStop` FOR EACH ROW BEGIN - DECLARE vRoadmapEta DATETIME; - SET NEW.editorFk = account.myUser_getId(); IF NEW.description IS NOT NULL THEN @@ -16,23 +14,5 @@ BEGIN CALL util.throw('Departure time can not be after arrival time'); END IF; END IF; - - IF @roadmapTriggerIsActive IS NULL THEN - SET @roadmapTriggerIsActive = TRUE; - - IF NEW.roadmapFk IS NOT NULL AND NEW.eta IS NOT NULL THEN - SELECT eta INTO vRoadmapEta - FROM roadmap - WHERE id = NEW.roadmapFk; - - IF vRoadmapEta < NEW.eta OR vRoadmapEta IS NULL THEN - UPDATE roadmap - SET eta = NEW.eta - WHERE id = NEW.roadmapFk; - END IF; - END IF; - - SET @roadmapTriggerIsActive = NULL; - END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql index e7cf33866b..9115b972a0 100644 --- a/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmapStop_beforeUpdate.sql @@ -3,46 +3,17 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`roadmapStop_beforeUpdat BEFORE UPDATE ON `roadmapStop` FOR EACH ROW BEGIN - DECLARE vMaxEta DATETIME; - DECLARE vCurrentEta DATETIME; - SET NEW.editorFk = account.myUser_getId(); IF NOT (NEW.description <=> OLD.description) THEN SET NEW.description = UCASE(NEW.description); END IF; - IF (NOT (NEW.roadmapFk <=> OLD.roadmapFk) AND NEW.roadmapFk IS NOT NULL) - OR (NOT (NEW.eta <=> OLD.eta)) THEN + IF NOT (NEW.roadmapFk <=> OLD.roadmapFk) OR NOT (NEW.eta <=> OLD.eta) THEN IF NEW.eta < (SELECT etd FROM roadmap WHERE id = NEW.roadmapFk) THEN CALL util.throw('Departure time can not be after arrival time'); END IF; - - IF @roadmapTriggerIsActive IS NULL THEN - SET @roadmapTriggerIsActive = TRUE; - - SELECT MAX(eta) INTO vMaxEta - FROM roadmapStop - WHERE roadmapFk = NEW.roadmapFk - AND id <> OLD.id; - - IF vMaxEta < NEW.eta OR vMaxEta IS NULL THEN - SET vMaxEta = NEW.eta; - END IF; - - SELECT eta INTO vCurrentEta - FROM roadmap - WHERE id = NEW.roadmapFk; - - IF (vMaxEta <> vCurrentEta OR vMaxEta IS NULL) OR vMaxEta IS NOT NULL THEN - UPDATE roadmap - SET eta = vMaxEta - WHERE id = NEW.roadmapFk; - END IF; - - SET @roadmapTriggerIsActive = NULL; - END IF; END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/roadmap_beforeUpdate.sql b/db/routines/vn/triggers/roadmap_beforeUpdate.sql index b5757e5191..ff6957f0c0 100644 --- a/db/routines/vn/triggers/roadmap_beforeUpdate.sql +++ b/db/routines/vn/triggers/roadmap_beforeUpdate.sql @@ -40,22 +40,14 @@ BEGIN WHERE w.id = NEW.driverChangeFk); END IF; - IF @roadmapTriggerIsActive IS NULL THEN - SET @roadmapTriggerIsActive = TRUE; - - IF NOT (NEW.etd <=> OLD.etd) THEN - SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); - - IF vSeconds <> 0 THEN - UPDATE roadmapStop - SET eta = eta + INTERVAL vSeconds SECOND - WHERE roadmapFk = NEW.id; - - SET NEW.eta = NEW.eta + INTERVAL vSeconds SECOND; - END IF; + IF NOT (NEW.etd <=> OLD.etd) THEN + SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); + + IF vSeconds <> 0 THEN + UPDATE roadmapStop + SET eta = eta + INTERVAL vSeconds SECOND + WHERE roadmapFk = NEW.id; END IF; - - SET @roadmapTriggerIsActive = NULL; END IF; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/views/roadmapEta.sql b/db/routines/vn/views/roadmapEta.sql new file mode 100644 index 0000000000..dcf2afaf8a --- /dev/null +++ b/db/routines/vn/views/roadmapEta.sql @@ -0,0 +1,8 @@ +CREATE OR REPLACE DEFINER=`vn`@`localhost` + SQL SECURITY DEFINER + VIEW `vn`.`roadmapEta` +AS SELECT `roadmapFk` AS id, + MAX(`eta`) AS `eta` +FROM `vn`.`roadmapStop` +WHERE `roadmapFk` IS NOT NULL +GROUP BY `roadmapFk`; \ No newline at end of file diff --git a/db/versions/11436-bronzeMonstera/01-firstScript.sql b/db/versions/11436-bronzeMonstera/01-firstScript.sql index 6b3ce86329..d809f75b1c 100644 --- a/db/versions/11436-bronzeMonstera/01-firstScript.sql +++ b/db/versions/11436-bronzeMonstera/01-firstScript.sql @@ -1,4 +1,3 @@ ALTER TABLE vn.volumeConfig ADD COLUMN id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; GRANT UPDATE (palletM3) ON vn.volumeConfig TO deliveryBoss; -GRANT EXECUTE ON FUNCTION vn.getTimeBetweenRoadmapAddresses TO deliveryBoss; diff --git a/db/versions/11436-bronzeMonstera/03-firstScript.sql b/db/versions/11436-bronzeMonstera/03-firstScript.sql new file mode 100644 index 0000000000..efd713c3ad --- /dev/null +++ b/db/versions/11436-bronzeMonstera/03-firstScript.sql @@ -0,0 +1 @@ +ALTER TABLE vn.roadmap DROP COLUMN eta; From 28deadfbadba833a293264a9d817b29c2eb2d20a Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 14 Feb 2025 10:37:08 +0100 Subject: [PATCH 180/217] fix: refs #8573 version --- db/versions/11441-limeCyca/00-firstScript.sql | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/db/versions/11441-limeCyca/00-firstScript.sql b/db/versions/11441-limeCyca/00-firstScript.sql index 54024ec8d1..ac0e871beb 100644 --- a/db/versions/11441-limeCyca/00-firstScript.sql +++ b/db/versions/11441-limeCyca/00-firstScript.sql @@ -3,7 +3,6 @@ UPDATE vn.expedition e SELECT id FROM vn.expedition WHERE hostFk COLLATE utf8mb3_unicode_ci NOT IN - (SELECT code COLLATE utf8mb3_unicode_ci FROM host WHERE code IS NOT NULL) - ) s - ON e.id = s.id - SET e.hostFk = 'pc336'; \ No newline at end of file + (SELECT code COLLATE utf8mb3_unicode_ci FROM vn.host WHERE code IS NOT NULL) + ) s ON e.id = s.id + SET e.hostFk = 'pc336'; From 1d21ae378d4fdc86514387278dfe34642a82c5fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 14 Feb 2025 12:20:33 +0100 Subject: [PATCH 181/217] fix: refs #8605 update French email template for invoice notifications --- print/templates/email/invoice/locale/fr.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/print/templates/email/invoice/locale/fr.yml b/print/templates/email/invoice/locale/fr.yml index 9efbdf5a03..937976f390 100644 --- a/print/templates/email/invoice/locale/fr.yml +++ b/print/templates/email/invoice/locale/fr.yml @@ -1,9 +1,8 @@ subject: Votre facture title: Votre facture -dear: Cher client, -description: Le facture {0} correspondant à la commande {1} est maintenant disponible.
- Vous pouvez le télécharger en cliquant sur la pièce jointe dans cet email. -poll: Si vous le souhaitez, vous pouvez répondre à notre questionaire de satisfaction - pour nous aider à améliorer notre service. Votre avis est très important pour nous! -help: N'hésitez pas nous envoyer toute doute ou question, nous sommes là pour vous aider! +dear: Chère cliente, cher client +description: La facture {0} correspondant à votre commande {1} est maintenant disponible.
+ Vous pouvez la télécharger en cliquant sur la pièce jointe. +poll: +help: En cas de besoin d'eclaircissement, n'hésitez pas à nous contacter, nous sommes là pour vous aider! conclusion: Merci pour votre attention! From a119d9f7fb3bed68099d2d78294d803adcf5909d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 14 Feb 2025 12:29:56 +0100 Subject: [PATCH 182/217] feat: invoiceIn move deductible field from head to lines --- db/routines/sage/procedures/invoiceIn_add.sql | 23 ++--- .../sage/procedures/invoiceIn_manager.sql | 48 +++++----- .../vn/procedures/invoiceIn_booking.sql | 90 +++++++++---------- db/routines/vn2008/views/recibida.sql | 4 +- .../11438-orangeTulip/00-firstScript.sql | 8 ++ loopback/locale/en.json | 11 ++- .../invoiceIn/back/locale/invoiceIn/en.yml | 3 +- .../invoiceIn/back/locale/invoiceIn/es.yml | 3 +- .../back/methods/invoice-in/clone.js | 2 - .../back/methods/invoice-in/filter.js | 1 - .../back/methods/invoice-in/summary.js | 6 -- .../invoiceIn/back/models/invoice-in-tax.json | 5 +- modules/invoiceIn/back/models/invoice-in.json | 14 --- modules/invoiceIn/front/summary/index.html | 18 ++-- 14 files changed, 112 insertions(+), 124 deletions(-) create mode 100644 db/versions/11438-orangeTulip/00-firstScript.sql diff --git a/db/routines/sage/procedures/invoiceIn_add.sql b/db/routines/sage/procedures/invoiceIn_add.sql index 8fdbb9ce32..f69e47143a 100644 --- a/db/routines/sage/procedures/invoiceIn_add.sql +++ b/db/routines/sage/procedures/invoiceIn_add.sql @@ -23,6 +23,7 @@ BEGIN DECLARE vInvoiceTypeReceived VARCHAR(1); DECLARE vInvoiceTypeInformative VARCHAR(1); DECLARE vIsInformativeExportation BOOL DEFAULT FALSE; + DECLARE vIsDeductible BOOL; DECLARE vCursor CURSOR FOR SELECT SUM(it.taxableBase), @@ -31,7 +32,8 @@ BEGIN it.transactionTypeSageFk, it.taxTypeSageFk, tty.isIntracommunity, - tt.ClaveOperacionDefecto + tt.ClaveOperacionDefecto, + it.isDeductible FROM vn.invoiceIn i JOIN vn.invoiceInTax it ON it.InvoiceInFk = i.id JOIN TiposIva t ON t.CodigoIva = it.taxTypeSageFk @@ -65,7 +67,8 @@ BEGIN vTransactionCode, vTaxCode, vIsIntracommunity, - vOperationCode; + vOperationCode, + vIsDeductible; IF vDone THEN LEAVE l; @@ -88,7 +91,8 @@ BEGIN PorIva1 = vRate, CuotaIva1 = vVat, CodigoTransaccion1 = vTransactionCode, - CodigoIva1 = vTaxCode + CodigoIva1 = vTaxCode, + IvaDeducible1 = vIsDeductible WHERE id = vXDiarioFk; WHEN 2 THEN @@ -97,7 +101,8 @@ BEGIN PorIva2 = vRate, CuotaIva2 = vVat, CodigoTransaccion2 = vTransactionCode, - CodigoIva2 = vTaxCode + CodigoIva2 = vTaxCode, + IvaDeducible2 = vIsDeductible WHERE id = vXDiarioFk; WHEN 3 THEN UPDATE movContaIVA @@ -105,7 +110,8 @@ BEGIN PorIva3 = vRate, CuotaIva3 = vVat, CodigoTransaccion3 = vTransactionCode, - CodigoIva3 = vTaxCode + CodigoIva3 = vTaxCode, + IvaDeducible3 = vIsDeductible WHERE id = vXDiarioFk; WHEN 4 THEN UPDATE movContaIVA @@ -113,7 +119,8 @@ BEGIN PorIva4 = vRate, CuotaIva4 = vVat, CodigoTransaccion4 = vTransactionCode, - CodigoIva4 = vTaxCode + CodigoIva4 = vTaxCode, + IvaDeducible4 = vIsDeductible WHERE id = vXDiarioFk; ELSE SELECT vXDiarioFk INTO vXDiarioFk; @@ -168,10 +175,6 @@ BEGIN mci.FechaOperacion = ii.issued, mci.MantenerAsiento = TRUE, mci.SuFacturaNo = ii.supplierRef, - mci.IvaDeducible1 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva1, FALSE) = FALSE, FALSE, ii.isVatDeductible)), - mci.IvaDeducible2 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva2, FALSE) = FALSE, FALSE, ii.isVatDeductible)), - mci.IvaDeducible3 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva3, FALSE) = FALSE, FALSE, ii.isVatDeductible)), - mci.IvaDeducible4 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva4, FALSE) = FALSE, FALSE, ii.isVatDeductible)), mci.FechaFacturaOriginal = x.FECHA_EX WHERE mci.id = vXDiarioFk; diff --git a/db/routines/sage/procedures/invoiceIn_manager.sql b/db/routines/sage/procedures/invoiceIn_manager.sql index f9bf0e92fb..567dcf7a2f 100644 --- a/db/routines/sage/procedures/invoiceIn_manager.sql +++ b/db/routines/sage/procedures/invoiceIn_manager.sql @@ -2,10 +2,10 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `sage`.`invoiceIn_manager`(vYear INT, vCompanyFk INT) BEGIN /** - * Traslada la info de contabilidad relacionada con las facturas recibidas - * + * Traslada la info de contabilidad relacionada con las facturas recibidas + * * @vYear Año contable del que se quiere trasladar la información - * @vCompany Empresa de la que se quiere trasladar datos + * @vCompany Empresa de la que se quiere trasladar datos */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vInvoiceFk INT; @@ -17,22 +17,22 @@ BEGIN DECLARE vAccountTaxOutstanding VARCHAR(10); DECLARE vInvoiceTypeSended VARCHAR(1); DECLARE vCursor CURSOR FOR - SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk, + SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk, x.id XDiarioFk - FROM vn.XDiario x + FROM vn.XDiario x JOIN(SELECT DISTINCT(x.ASIEN) FROM vn.XDiario x LEFT JOIN vn.invoiceIn ii ON x.CLAVE = ii.id LEFT JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id - WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci) - AND x.enlazadoSage = FALSE + WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci) + AND x.enlazadoSage = FALSE AND x.FECHA BETWEEN vDatedFrom AND vDatedTo - AND x.empresa_id = vCompanyFk + AND x.empresa_id = vCompanyFk ) sub ON sub.ASIEN = x.ASIEN WHERE x.CLAVE IS NOT NULL; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SELECT CAST(CONCAT(vYear, '-01-01') AS DATETIME), util.dayEnd(CAST(CONCAT(vYear, '-12-31') AS DATE)) INTO vDatedFrom, vDatedTo; @@ -46,15 +46,15 @@ BEGIN SELECT codeSage INTO vInvoiceTypeSended FROM invoiceType WHERE `code` ='sended'; - + DROP TEMPORARY TABLE IF EXISTS tmp.invoiceDua; CREATE TEMPORARY TABLE tmp.invoiceDua - SELECT x.id + SELECT x.id FROM vn.XDiario x JOIN vn.company c ON c.id = x.empresa_id JOIN (SELECT ASIEN - FROM vn.XDiario x - WHERE x.enlazadoSage = FALSE + FROM vn.XDiario x + WHERE x.enlazadoSage = FALSE AND x.SUBCTA = vAccountTaxOutstanding COLLATE utf8mb3_unicode_ci AND x.FECHA BETWEEN vDatedFrom AND vDatedTo )sub ON sub.ASIEN = x.ASIEN @@ -67,21 +67,19 @@ BEGIN i.serial COLLATE utf8mb3_unicode_ci serial, i.supplierFk, i.issued, - IF(expenseFkDeductible, FALSE, i.isVatDeductible) isVatDeductible, IF(c.code = 'EUR', '',c.`code`) currencyFk FROM vn.invoiceIn i JOIN vn.currency c ON c.id = i.currencyFk WHERE i.bookEntried BETWEEN vDatedFrom AND vDatedTo - UNION ALL + UNION ALL SELECT d.id, d.code, vSerialDua COLLATE utf8mb3_unicode_ci, d.companyFk , d.issued, - FALSE, '' -- EUROS - FROM vn.dua d - WHERE d.issued IS NOT NULL + FROM vn.dua d + WHERE d.issued IS NOT NULL AND code IS NOT NULL; OPEN vCursor; @@ -89,7 +87,7 @@ BEGIN l: LOOP FETCH vCursor INTO vInvoiceFk, vXDiarioFk; - IF vDone THEN + IF vDone THEN LEAVE l; END IF; CALL invoiceIn_add(vInvoiceFk, vXDiarioFk); @@ -177,21 +175,21 @@ BEGIN JOIN (SELECT x.ASIEN, x.id FROM vn.XDiario x JOIN(SELECT DISTINCT(x.ASIEN) ASIEN - FROM vn.XDiario x + FROM vn.XDiario x JOIN (SELECT DISTINCT(ASIEN) FROM vn.XDiario x - WHERE SUBCTA LIKE '472%' + WHERE SUBCTA LIKE '472%' AND x.enlazadoSage = FALSE AND x.empresa_id = vCompanyFk AND x.FECHA BETWEEN vDatedFrom AND vDatedTo ) sub ON sub.ASIEN = x.ASIEN WHERE x.SUBCTA LIKE '477%' )sub2 ON sub2.ASIEN = x.ASIEN - WHERE x.CONTRA IS NOT NULL + WHERE x.CONTRA IS NOT NULL AND x.SUBCTA LIKE '477%' GROUP BY x.ASIEN )sub3 ON sub3.ASIEN = x.ASIEN; - + INSERT INTO movContaIVA (`id`, `CodigoDivisa`, @@ -262,9 +260,9 @@ BEGIN `FechaGrabacion`, `Intracomunitaria`, `moveData`) - SELECT * + SELECT * FROM tmp.movContaIVA; - + DROP TEMPORARY TABLE tmp.movContaIVA; END$$ diff --git a/db/routines/vn/procedures/invoiceIn_booking.sql b/db/routines/vn/procedures/invoiceIn_booking.sql index ef68e48045..238f6d5bac 100644 --- a/db/routines/vn/procedures/invoiceIn_booking.sql +++ b/db/routines/vn/procedures/invoiceIn_booking.sql @@ -1,15 +1,15 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`( - vSelf INT, + vSelf INT, vBookNumber INT ) BEGIN /** * Genera la contabilidad para una factura y la marca como contabilizada - * Cuadra el asiento generado en si encuentra problemas derivados + * Cuadra el asiento generado en si encuentra problemas derivados * de los calculos con decimales - * - * @param vSelf Id invoiceIn + * + * @param vSelf Id invoiceIn * @param vBookEntry Id de asiento, si es NULL se genera uno nuevo */ DECLARE vFiscalYear INT; @@ -23,7 +23,7 @@ BEGIN HAVING COUNT(DISTINCT iit.transactionTypeSageFk) > 1 LIMIT 1; - IF vHasRepeatedTransactions THEN + IF vHasRepeatedTransactions THEN CALL util.throw ('This invoice contains different types of transactions'); END IF; @@ -32,7 +32,7 @@ BEGIN SELECT ii.bookEntried, iit.foreignValue, ii.companyFk, - ii.expenseFkDeductible, + iit.isDeductible, iit.taxableBase, iit.transactionTypeSageFk, ii.serial, @@ -66,13 +66,13 @@ BEGIN e.name expenseName FROM invoiceIn ii JOIN supplier s ON s.id = ii.supplierFk - LEFT JOIN invoiceInCorrection ic ON ic.correctingFk = ii.id + LEFT JOIN invoiceInCorrection ic ON ic.correctingFk = ii.id LEFT JOIN province p ON p.id = s.provinceFk LEFT JOIN autonomy a ON a.id = p.autonomyFk JOIN country c ON c.id = s.countryFk JOIN supplier sc ON sc.id = ii.companyFk JOIN country cc ON cc.id = sc.countryFk - JOIN invoiceInSerial iis ON iis.code = ii.serial + JOIN invoiceInSerial iis ON iis.code = ii.serial JOIN siiTypeInvoiceIn cit ON cit.id = ii.siiTypeInvoiceInFk LEFT JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id LEFT JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = iit.transactionTypeSageFk @@ -83,7 +83,7 @@ BEGIN SELECT YEAR(bookEntried) INTO vFiscalYear FROM tInvoiceIn LIMIT 1; - IF vBookNumber IS NULL THEN + IF vBookNumber IS NULL THEN CALL ledger_nextTx(vFiscalYear, vBookNumber); END IF; @@ -99,18 +99,18 @@ BEGIN NFACTICK, CLAVE, empresa_id) - SELECT + SELECT vBookNumber ASIEN, tii.bookEntried FECHA, tii.supplierAccount SUBCTA, - SUM(tii.taxableBase * - IF(tii.serial= 'R' AND ((tii.taxCode IS NULL OR tii.taxCode <> 'ISP21') - AND tii.taxTypeSageFk IS NOT NULL), - 1 + (tii.PorcentajeIva / 100), - 1)) EUROHABER, - CONCAT('s/fra', - RIGHT(tii.supplierRef, 8), - ':', + SUM(tii.taxableBase * + IF(tii.serial= 'R' AND ((tii.taxCode IS NULL OR tii.taxCode <> 'ISP21') + AND tii.taxTypeSageFk IS NOT NULL), + 1 + (tii.PorcentajeIva / 100), + 1)) EUROHABER, + CONCAT('s/fra', + RIGHT(tii.supplierRef, 8), + ':', LEFT(tii.supplierName, 10)) CONCEPTO, CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10,4)) CAMBIO, SUM(tii.foreignValue * IF(tii.serial = 'R', 1 + (tii.PorcentajeIva / 100), 1)) HABERME, @@ -127,7 +127,7 @@ BEGIN CONTRA, EURODEBE, EUROHABER, - CONCEPTO, + CONCEPTO, CAMBIO, DEBEME, HABERME, @@ -139,9 +139,9 @@ BEGIN tii.supplierAccount CONTRA, IF(tii.isWithheld AND tii.taxableBase < 0, NULL, ROUND(SUM(tii.taxableBase),2)) EURODEBE, IF(tii.isWithheld AND tii.taxableBase < 0, ROUND(SUM(-tii.taxableBase), 2), NULL) EUROHABER, - CONCAT('s/fra', - RIGHT(tii.supplierRef, 8), - ':', + CONCAT('s/fra', + RIGHT(tii.supplierRef, 8), + ':', LEFT(tii.supplierName, 10)) CONCEPTO, CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10, 4)) CAMBIO, IF(tii.isWithheld, NULL,ABS(ROUND(SUM(tii.foreignValue), 2))) DEBEME, @@ -153,17 +153,17 @@ BEGIN GROUP BY tii.expenseFk; -- Líneas de IVA - INSERT INTO XDiario( + INSERT INTO XDiario( ASIEN, FECHA, SUBCTA, - CONTRA, + CONTRA, EURODEBE, BASEEURO, CONCEPTO, - FACTURA, + FACTURA, IVA, - AUXILIAR, + AUXILIAR, SERIE, TIPOOPE, FECHA_EX, @@ -184,7 +184,7 @@ BEGIN empresa_id) SELECT vBookNumber ASIEN, tii.bookEntried FECHA, - IF(tii.expenseFkDeductible>0, tii.expenseFkDeductible, tii.CuentaIvaSoportado) SUBCTA, + IF(tii.isDeductible, tii.expenseFk, tii.CuentaIvaSoportado) SUBCTA, tii.supplierAccount CONTRA, SUM(ROUND(tii.PorcentajeIva * tii.taxableBase / 100, 2)) EURODEBE, SUM(tii.taxableBase) BASEEURO, @@ -212,28 +212,28 @@ BEGIN tii.companyFk FROM tInvoiceIn tii LEFT JOIN ( - SELECT e.id + SELECT e.id FROM tInvoiceIn tii JOIN expense e ON e.id = tii.expenseFk WHERE e.isWithheld LIMIT 1 - ) eWithheld ON TRUE - WHERE tii.taxTypeSageFk IS NOT NULL - AND (tii.taxCode IS NULL OR tii.taxCode NOT IN ('import10', 'import21')) + ) eWithheld ON TRUE + WHERE tii.taxTypeSageFk IS NOT NULL + AND (tii.taxCode IS NULL OR tii.taxCode NOT IN ('import10', 'import21')) GROUP BY tii.CuentaIvaRepercutido; -- Línea iva inversor sujeto pasivo - INSERT INTO XDiario( + INSERT INTO XDiario( ASIEN, FECHA, SUBCTA, - CONTRA, + CONTRA, EUROHABER, BASEEURO, CONCEPTO, - FACTURA, + FACTURA, IVA, - AUXILIAR, + AUXILIAR, SERIE, TIPOOPE, FECHA_EX, @@ -282,31 +282,31 @@ BEGIN JOIN sage.config c WHERE tii.taxCode = 'ISP21' OR MID(tii.supplierAccount, 4, 1) = '1' AND tii.taxTypeSageFk IS NOT NULL - AND NOT(tii.isVies - AND c.nontaxableTransactionTypeFk = tii.transactionTypeSageFk + AND NOT(tii.isVies + AND c.nontaxableTransactionTypeFk = tii.transactionTypeSageFk AND tii.taxCode = 'nonTaxable') GROUP BY tii.CuentaIvaRepercutido; - - -- Actualización del registro original + + -- Actualización del registro original UPDATE invoiceIn ii SET ii.isBooked = TRUE WHERE ii.id = vSelf; - + -- Problemas derivados de la precisión en los decimales al calcular los impuestos - UPDATE XDiario - SET EURODEBE = EURODEBE - + UPDATE XDiario + SET EURODEBE = EURODEBE - (SELECT IF(ABS(sub.difference) = 0.01, sub.difference, 0) FROM( - SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference + SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference FROM XDiario WHERE ASIEN = vBookNumber )sub ) - WHERE ASIEN = vBookNumber + WHERE ASIEN = vBookNumber AND EURODEBE <> 0 ORDER BY id DESC LIMIT 1; - + DROP TEMPORARY TABLE tInvoiceIn; END$$ DELIMITER ; diff --git a/db/routines/vn2008/views/recibida.sql b/db/routines/vn2008/views/recibida.sql index 76b86505e1..89329618bd 100644 --- a/db/routines/vn2008/views/recibida.sql +++ b/db/routines/vn2008/views/recibida.sql @@ -20,7 +20,5 @@ AS SELECT `r`.`id` AS `id`, `r`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`, `r`.`siiTrascendencyInvoiceInFk` AS `siiTrascendencyInvoiceInFk`, `r`.`bookEntried` AS `bookEntried`, - `r`.`isVatDeductible` AS `isVatDeductible`, - `r`.`withholdingSageFk` AS `withholdingSageFk`, - `r`.`expenseFkDeductible` AS `expenseFkDeductible` + `r`.`withholdingSageFk` AS `withholdingSageFk` FROM `vn`.`invoiceIn` `r` diff --git a/db/versions/11438-orangeTulip/00-firstScript.sql b/db/versions/11438-orangeTulip/00-firstScript.sql new file mode 100644 index 0000000000..a73febffac --- /dev/null +++ b/db/versions/11438-orangeTulip/00-firstScript.sql @@ -0,0 +1,8 @@ +ALTER TABLE vn.invoiceInTax ADD isDeductible TINYINT(1) DEFAULT FALSE NOT NULL; + + +ALTER TABLE vn.invoiceIn CHANGE expenseFkDeductible expenseFkDeductible__ varchar(10) + CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL NULL COMMENT '@deprecated 2025-02-15'; + +ALTER TABLE vn.invoiceIn CHANGE isVatDeductible isVatDeductible__ tinyint(1) + DEFAULT 1 NOT NULL COMMENT '@deprecated 2025-02-15'; diff --git a/loopback/locale/en.json b/loopback/locale/en.json index b9add02a8c..8df3f44944 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -255,7 +255,12 @@ "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.", - "clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}", + "clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}", "negativeReplaced": "Replaced item [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} with [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} from ticket [{{ticketId}}]({{{ticketUrl}}})", - "The tag and priority can't be repeated": "The tag and priority can't be repeated" -} + "The tag and priority can't be repeated": "The tag and priority can't be repeated", + "workerSocialName": "workerSocialName", + "workerName": "workerName", + "The tag or priority can't be repeated for an item": "The tag or priority can't be repeated for an item", + "An item type with the same code already exists": "An item type with the same code already exists", + "null": "null" +} \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceIn/en.yml b/modules/invoiceIn/back/locale/invoiceIn/en.yml index f590f9656f..f413fa6651 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/en.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/en.yml @@ -16,7 +16,6 @@ columns: bookEntried: book entried isVatDeductible: is VAT deductible withholdingSageFk: withholding - expenseFkDeductible: expense deductible editorFk: editor siiTrasCendencyInvoiceInFk: SII tax regime - siiTypeInvoiceInFk: SII Type \ No newline at end of file + siiTypeInvoiceInFk: SII Type diff --git a/modules/invoiceIn/back/locale/invoiceIn/es.yml b/modules/invoiceIn/back/locale/invoiceIn/es.yml index 64ded6acaa..41bc3202f3 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/es.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/es.yml @@ -16,7 +16,6 @@ columns: bookEntried: fecha asiento isVatDeductible: impuesto deducible withholdingSageFk: código de retención - expenseFkDeductible: gasto deducible editorFk: editor siiTrasCendencyInvoiceInFk: régimen fiscal SII - siiTypeInvoiceInFk: tipo SII \ No newline at end of file + siiTypeInvoiceInFk: tipo SII diff --git a/modules/invoiceIn/back/methods/invoice-in/clone.js b/modules/invoiceIn/back/methods/invoice-in/clone.js index 88ea0ddcd1..dfac433f21 100644 --- a/modules/invoiceIn/back/methods/invoice-in/clone.js +++ b/modules/invoiceIn/back/methods/invoice-in/clone.js @@ -46,7 +46,6 @@ module.exports = Self => { 'issued', 'currencyFk', 'companyFk', - 'isVatDeductible', 'withholdingSageFk', 'deductibleExpenseFk', ], @@ -79,7 +78,6 @@ module.exports = Self => { issued: issued, currencyFk: sourceInvoiceIn.currencyFk, companyFk: sourceInvoiceIn.companyFk, - isVatDeductible: sourceInvoiceIn.isVatDeductible, withholdingSageFk: sourceInvoiceIn.withholdingSageFk, deductibleExpenseFk: sourceInvoiceIn.deductibleExpenseFk, }, myOptions); diff --git a/modules/invoiceIn/back/methods/invoice-in/filter.js b/modules/invoiceIn/back/methods/invoice-in/filter.js index f081368e46..9b59fc3d9b 100644 --- a/modules/invoiceIn/back/methods/invoice-in/filter.js +++ b/modules/invoiceIn/back/methods/invoice-in/filter.js @@ -184,7 +184,6 @@ module.exports = Self => { ii.docFk dmsFk, dm.file, ii.supplierFk, - ii.expenseFkDeductible deductibleExpenseFk, s.name supplierName, s.account, SUM(iid.amount) amount, diff --git a/modules/invoiceIn/back/methods/invoice-in/summary.js b/modules/invoiceIn/back/methods/invoice-in/summary.js index b3fd9ee97b..cbe23ae731 100644 --- a/modules/invoiceIn/back/methods/invoice-in/summary.js +++ b/modules/invoiceIn/back/methods/invoice-in/summary.js @@ -123,12 +123,6 @@ module.exports = Self => { }] } }, - { - relation: 'expenseDeductible', - scope: { - fields: ['id', 'name', 'taxTypeFk'] - } - }, { relation: 'currency', scope: { diff --git a/modules/invoiceIn/back/models/invoice-in-tax.json b/modules/invoiceIn/back/models/invoice-in-tax.json index 256ee0553a..403c013452 100644 --- a/modules/invoiceIn/back/models/invoice-in-tax.json +++ b/modules/invoiceIn/back/models/invoice-in-tax.json @@ -24,6 +24,9 @@ "expenseFk": { "type": "string" }, + "isDeductible": { + "type": "boolean" + }, "created": { "type": "date" } @@ -50,4 +53,4 @@ "foreignKey": "transactionTypeSageFk" } } -} \ No newline at end of file +} diff --git a/modules/invoiceIn/back/models/invoice-in.json b/modules/invoiceIn/back/models/invoice-in.json index 9614c3872e..b85c8a4c7a 100644 --- a/modules/invoiceIn/back/models/invoice-in.json +++ b/modules/invoiceIn/back/models/invoice-in.json @@ -36,9 +36,6 @@ "booked": { "type": "date" }, - "isVatDeductible": { - "type": "boolean" - }, "operated": { "type": "date" }, @@ -50,12 +47,6 @@ "mysql": { "columnName": "docFk" } - }, - "deductibleExpenseFk": { - "type": "number", - "mysql": { - "columnName": "expenseFkDeductible" - } } }, "relations": { @@ -79,11 +70,6 @@ "model": "SageWithholding", "foreignKey": "withholdingSageFk" }, - "expenseDeductible": { - "type": "belongsTo", - "model": "Expense", - "foreignKey": "deductibleExpenseFk" - }, "company": { "type": "belongsTo", "model": "Company", diff --git a/modules/invoiceIn/front/summary/index.html b/modules/invoiceIn/front/summary/index.html index f0baa33c84..b91ec46dde 100644 --- a/modules/invoiceIn/front/summary/index.html +++ b/modules/invoiceIn/front/summary/index.html @@ -36,8 +36,6 @@ - - @@ -49,10 +47,10 @@ Taxable base {{$ctrl.summary.totals.totalTaxableBase | currency: 'EUR':2 | dashIfEmpty}}

Total {{$ctrl.summary.totals.totalVat | currency: 'EUR':2 | dashIfEmpty}}

Due day - {{$ctrl.summary.totals.totalDueDay | currency: 'EUR':2 | dashIfEmpty}}
@@ -61,7 +59,7 @@

- Vat @@ -94,7 +92,7 @@

- Due day @@ -123,7 +121,7 @@

- Intrastat @@ -141,7 +139,7 @@ - {{::intrastat.intrastatFk}}: {{::intrastat.intrastat.description}} + {{::intrastat.intrastatFk}}: {{::intrastat.intrastat.description}} {{::intrastat.amount | currency: 'EUR':2}} {{::intrastat.net}} {{::intrastat.stems}} @@ -154,4 +152,4 @@ - \ No newline at end of file + From a874b96c5e214ef4cad42361500d925d8c7b4161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 14 Feb 2025 11:32:45 +0000 Subject: [PATCH 183/217] revert a119d9f7fb3bed68099d2d78294d803adcf5909d revert feat: invoiceIn move deductible field from head to lines --- db/routines/sage/procedures/invoiceIn_add.sql | 23 +++-- .../sage/procedures/invoiceIn_manager.sql | 48 +++++----- .../vn/procedures/invoiceIn_booking.sql | 90 +++++++++---------- db/routines/vn2008/views/recibida.sql | 4 +- .../11438-orangeTulip/00-firstScript.sql | 8 -- loopback/locale/en.json | 11 +-- .../invoiceIn/back/locale/invoiceIn/en.yml | 3 +- .../invoiceIn/back/locale/invoiceIn/es.yml | 3 +- .../back/methods/invoice-in/clone.js | 2 + .../back/methods/invoice-in/filter.js | 1 + .../back/methods/invoice-in/summary.js | 6 ++ .../invoiceIn/back/models/invoice-in-tax.json | 5 +- modules/invoiceIn/back/models/invoice-in.json | 14 +++ modules/invoiceIn/front/summary/index.html | 18 ++-- 14 files changed, 124 insertions(+), 112 deletions(-) delete mode 100644 db/versions/11438-orangeTulip/00-firstScript.sql diff --git a/db/routines/sage/procedures/invoiceIn_add.sql b/db/routines/sage/procedures/invoiceIn_add.sql index f69e47143a..8fdbb9ce32 100644 --- a/db/routines/sage/procedures/invoiceIn_add.sql +++ b/db/routines/sage/procedures/invoiceIn_add.sql @@ -23,7 +23,6 @@ BEGIN DECLARE vInvoiceTypeReceived VARCHAR(1); DECLARE vInvoiceTypeInformative VARCHAR(1); DECLARE vIsInformativeExportation BOOL DEFAULT FALSE; - DECLARE vIsDeductible BOOL; DECLARE vCursor CURSOR FOR SELECT SUM(it.taxableBase), @@ -32,8 +31,7 @@ BEGIN it.transactionTypeSageFk, it.taxTypeSageFk, tty.isIntracommunity, - tt.ClaveOperacionDefecto, - it.isDeductible + tt.ClaveOperacionDefecto FROM vn.invoiceIn i JOIN vn.invoiceInTax it ON it.InvoiceInFk = i.id JOIN TiposIva t ON t.CodigoIva = it.taxTypeSageFk @@ -67,8 +65,7 @@ BEGIN vTransactionCode, vTaxCode, vIsIntracommunity, - vOperationCode, - vIsDeductible; + vOperationCode; IF vDone THEN LEAVE l; @@ -91,8 +88,7 @@ BEGIN PorIva1 = vRate, CuotaIva1 = vVat, CodigoTransaccion1 = vTransactionCode, - CodigoIva1 = vTaxCode, - IvaDeducible1 = vIsDeductible + CodigoIva1 = vTaxCode WHERE id = vXDiarioFk; WHEN 2 THEN @@ -101,8 +97,7 @@ BEGIN PorIva2 = vRate, CuotaIva2 = vVat, CodigoTransaccion2 = vTransactionCode, - CodigoIva2 = vTaxCode, - IvaDeducible2 = vIsDeductible + CodigoIva2 = vTaxCode WHERE id = vXDiarioFk; WHEN 3 THEN UPDATE movContaIVA @@ -110,8 +105,7 @@ BEGIN PorIva3 = vRate, CuotaIva3 = vVat, CodigoTransaccion3 = vTransactionCode, - CodigoIva3 = vTaxCode, - IvaDeducible3 = vIsDeductible + CodigoIva3 = vTaxCode WHERE id = vXDiarioFk; WHEN 4 THEN UPDATE movContaIVA @@ -119,8 +113,7 @@ BEGIN PorIva4 = vRate, CuotaIva4 = vVat, CodigoTransaccion4 = vTransactionCode, - CodigoIva4 = vTaxCode, - IvaDeducible4 = vIsDeductible + CodigoIva4 = vTaxCode WHERE id = vXDiarioFk; ELSE SELECT vXDiarioFk INTO vXDiarioFk; @@ -175,6 +168,10 @@ BEGIN mci.FechaOperacion = ii.issued, mci.MantenerAsiento = TRUE, mci.SuFacturaNo = ii.supplierRef, + mci.IvaDeducible1 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva1, FALSE) = FALSE, FALSE, ii.isVatDeductible)), + mci.IvaDeducible2 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva2, FALSE) = FALSE, FALSE, ii.isVatDeductible)), + mci.IvaDeducible3 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva3, FALSE) = FALSE, FALSE, ii.isVatDeductible)), + mci.IvaDeducible4 = IF(id.id, FALSE, IF(IFNULL(mci.BaseIva4, FALSE) = FALSE, FALSE, ii.isVatDeductible)), mci.FechaFacturaOriginal = x.FECHA_EX WHERE mci.id = vXDiarioFk; diff --git a/db/routines/sage/procedures/invoiceIn_manager.sql b/db/routines/sage/procedures/invoiceIn_manager.sql index 567dcf7a2f..f9bf0e92fb 100644 --- a/db/routines/sage/procedures/invoiceIn_manager.sql +++ b/db/routines/sage/procedures/invoiceIn_manager.sql @@ -2,10 +2,10 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `sage`.`invoiceIn_manager`(vYear INT, vCompanyFk INT) BEGIN /** - * Traslada la info de contabilidad relacionada con las facturas recibidas - * + * Traslada la info de contabilidad relacionada con las facturas recibidas + * * @vYear Año contable del que se quiere trasladar la información - * @vCompany Empresa de la que se quiere trasladar datos + * @vCompany Empresa de la que se quiere trasladar datos */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vInvoiceFk INT; @@ -17,22 +17,22 @@ BEGIN DECLARE vAccountTaxOutstanding VARCHAR(10); DECLARE vInvoiceTypeSended VARCHAR(1); DECLARE vCursor CURSOR FOR - SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk, + SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk, x.id XDiarioFk - FROM vn.XDiario x + FROM vn.XDiario x JOIN(SELECT DISTINCT(x.ASIEN) FROM vn.XDiario x LEFT JOIN vn.invoiceIn ii ON x.CLAVE = ii.id LEFT JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id - WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci) - AND x.enlazadoSage = FALSE + WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci) + AND x.enlazadoSage = FALSE AND x.FECHA BETWEEN vDatedFrom AND vDatedTo - AND x.empresa_id = vCompanyFk + AND x.empresa_id = vCompanyFk ) sub ON sub.ASIEN = x.ASIEN WHERE x.CLAVE IS NOT NULL; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SELECT CAST(CONCAT(vYear, '-01-01') AS DATETIME), util.dayEnd(CAST(CONCAT(vYear, '-12-31') AS DATE)) INTO vDatedFrom, vDatedTo; @@ -46,15 +46,15 @@ BEGIN SELECT codeSage INTO vInvoiceTypeSended FROM invoiceType WHERE `code` ='sended'; - + DROP TEMPORARY TABLE IF EXISTS tmp.invoiceDua; CREATE TEMPORARY TABLE tmp.invoiceDua - SELECT x.id + SELECT x.id FROM vn.XDiario x JOIN vn.company c ON c.id = x.empresa_id JOIN (SELECT ASIEN - FROM vn.XDiario x - WHERE x.enlazadoSage = FALSE + FROM vn.XDiario x + WHERE x.enlazadoSage = FALSE AND x.SUBCTA = vAccountTaxOutstanding COLLATE utf8mb3_unicode_ci AND x.FECHA BETWEEN vDatedFrom AND vDatedTo )sub ON sub.ASIEN = x.ASIEN @@ -67,19 +67,21 @@ BEGIN i.serial COLLATE utf8mb3_unicode_ci serial, i.supplierFk, i.issued, + IF(expenseFkDeductible, FALSE, i.isVatDeductible) isVatDeductible, IF(c.code = 'EUR', '',c.`code`) currencyFk FROM vn.invoiceIn i JOIN vn.currency c ON c.id = i.currencyFk WHERE i.bookEntried BETWEEN vDatedFrom AND vDatedTo - UNION ALL + UNION ALL SELECT d.id, d.code, vSerialDua COLLATE utf8mb3_unicode_ci, d.companyFk , d.issued, + FALSE, '' -- EUROS - FROM vn.dua d - WHERE d.issued IS NOT NULL + FROM vn.dua d + WHERE d.issued IS NOT NULL AND code IS NOT NULL; OPEN vCursor; @@ -87,7 +89,7 @@ BEGIN l: LOOP FETCH vCursor INTO vInvoiceFk, vXDiarioFk; - IF vDone THEN + IF vDone THEN LEAVE l; END IF; CALL invoiceIn_add(vInvoiceFk, vXDiarioFk); @@ -175,21 +177,21 @@ BEGIN JOIN (SELECT x.ASIEN, x.id FROM vn.XDiario x JOIN(SELECT DISTINCT(x.ASIEN) ASIEN - FROM vn.XDiario x + FROM vn.XDiario x JOIN (SELECT DISTINCT(ASIEN) FROM vn.XDiario x - WHERE SUBCTA LIKE '472%' + WHERE SUBCTA LIKE '472%' AND x.enlazadoSage = FALSE AND x.empresa_id = vCompanyFk AND x.FECHA BETWEEN vDatedFrom AND vDatedTo ) sub ON sub.ASIEN = x.ASIEN WHERE x.SUBCTA LIKE '477%' )sub2 ON sub2.ASIEN = x.ASIEN - WHERE x.CONTRA IS NOT NULL + WHERE x.CONTRA IS NOT NULL AND x.SUBCTA LIKE '477%' GROUP BY x.ASIEN )sub3 ON sub3.ASIEN = x.ASIEN; - + INSERT INTO movContaIVA (`id`, `CodigoDivisa`, @@ -260,9 +262,9 @@ BEGIN `FechaGrabacion`, `Intracomunitaria`, `moveData`) - SELECT * + SELECT * FROM tmp.movContaIVA; - + DROP TEMPORARY TABLE tmp.movContaIVA; END$$ diff --git a/db/routines/vn/procedures/invoiceIn_booking.sql b/db/routines/vn/procedures/invoiceIn_booking.sql index 238f6d5bac..ef68e48045 100644 --- a/db/routines/vn/procedures/invoiceIn_booking.sql +++ b/db/routines/vn/procedures/invoiceIn_booking.sql @@ -1,15 +1,15 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`( - vSelf INT, + vSelf INT, vBookNumber INT ) BEGIN /** * Genera la contabilidad para una factura y la marca como contabilizada - * Cuadra el asiento generado en si encuentra problemas derivados + * Cuadra el asiento generado en si encuentra problemas derivados * de los calculos con decimales - * - * @param vSelf Id invoiceIn + * + * @param vSelf Id invoiceIn * @param vBookEntry Id de asiento, si es NULL se genera uno nuevo */ DECLARE vFiscalYear INT; @@ -23,7 +23,7 @@ BEGIN HAVING COUNT(DISTINCT iit.transactionTypeSageFk) > 1 LIMIT 1; - IF vHasRepeatedTransactions THEN + IF vHasRepeatedTransactions THEN CALL util.throw ('This invoice contains different types of transactions'); END IF; @@ -32,7 +32,7 @@ BEGIN SELECT ii.bookEntried, iit.foreignValue, ii.companyFk, - iit.isDeductible, + ii.expenseFkDeductible, iit.taxableBase, iit.transactionTypeSageFk, ii.serial, @@ -66,13 +66,13 @@ BEGIN e.name expenseName FROM invoiceIn ii JOIN supplier s ON s.id = ii.supplierFk - LEFT JOIN invoiceInCorrection ic ON ic.correctingFk = ii.id + LEFT JOIN invoiceInCorrection ic ON ic.correctingFk = ii.id LEFT JOIN province p ON p.id = s.provinceFk LEFT JOIN autonomy a ON a.id = p.autonomyFk JOIN country c ON c.id = s.countryFk JOIN supplier sc ON sc.id = ii.companyFk JOIN country cc ON cc.id = sc.countryFk - JOIN invoiceInSerial iis ON iis.code = ii.serial + JOIN invoiceInSerial iis ON iis.code = ii.serial JOIN siiTypeInvoiceIn cit ON cit.id = ii.siiTypeInvoiceInFk LEFT JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id LEFT JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = iit.transactionTypeSageFk @@ -83,7 +83,7 @@ BEGIN SELECT YEAR(bookEntried) INTO vFiscalYear FROM tInvoiceIn LIMIT 1; - IF vBookNumber IS NULL THEN + IF vBookNumber IS NULL THEN CALL ledger_nextTx(vFiscalYear, vBookNumber); END IF; @@ -99,18 +99,18 @@ BEGIN NFACTICK, CLAVE, empresa_id) - SELECT + SELECT vBookNumber ASIEN, tii.bookEntried FECHA, tii.supplierAccount SUBCTA, - SUM(tii.taxableBase * - IF(tii.serial= 'R' AND ((tii.taxCode IS NULL OR tii.taxCode <> 'ISP21') - AND tii.taxTypeSageFk IS NOT NULL), - 1 + (tii.PorcentajeIva / 100), - 1)) EUROHABER, - CONCAT('s/fra', - RIGHT(tii.supplierRef, 8), - ':', + SUM(tii.taxableBase * + IF(tii.serial= 'R' AND ((tii.taxCode IS NULL OR tii.taxCode <> 'ISP21') + AND tii.taxTypeSageFk IS NOT NULL), + 1 + (tii.PorcentajeIva / 100), + 1)) EUROHABER, + CONCAT('s/fra', + RIGHT(tii.supplierRef, 8), + ':', LEFT(tii.supplierName, 10)) CONCEPTO, CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10,4)) CAMBIO, SUM(tii.foreignValue * IF(tii.serial = 'R', 1 + (tii.PorcentajeIva / 100), 1)) HABERME, @@ -127,7 +127,7 @@ BEGIN CONTRA, EURODEBE, EUROHABER, - CONCEPTO, + CONCEPTO, CAMBIO, DEBEME, HABERME, @@ -139,9 +139,9 @@ BEGIN tii.supplierAccount CONTRA, IF(tii.isWithheld AND tii.taxableBase < 0, NULL, ROUND(SUM(tii.taxableBase),2)) EURODEBE, IF(tii.isWithheld AND tii.taxableBase < 0, ROUND(SUM(-tii.taxableBase), 2), NULL) EUROHABER, - CONCAT('s/fra', - RIGHT(tii.supplierRef, 8), - ':', + CONCAT('s/fra', + RIGHT(tii.supplierRef, 8), + ':', LEFT(tii.supplierName, 10)) CONCEPTO, CAST(tii.taxableBase / tii.foreignValue AS DECIMAL (10, 4)) CAMBIO, IF(tii.isWithheld, NULL,ABS(ROUND(SUM(tii.foreignValue), 2))) DEBEME, @@ -153,17 +153,17 @@ BEGIN GROUP BY tii.expenseFk; -- Líneas de IVA - INSERT INTO XDiario( + INSERT INTO XDiario( ASIEN, FECHA, SUBCTA, - CONTRA, + CONTRA, EURODEBE, BASEEURO, CONCEPTO, - FACTURA, + FACTURA, IVA, - AUXILIAR, + AUXILIAR, SERIE, TIPOOPE, FECHA_EX, @@ -184,7 +184,7 @@ BEGIN empresa_id) SELECT vBookNumber ASIEN, tii.bookEntried FECHA, - IF(tii.isDeductible, tii.expenseFk, tii.CuentaIvaSoportado) SUBCTA, + IF(tii.expenseFkDeductible>0, tii.expenseFkDeductible, tii.CuentaIvaSoportado) SUBCTA, tii.supplierAccount CONTRA, SUM(ROUND(tii.PorcentajeIva * tii.taxableBase / 100, 2)) EURODEBE, SUM(tii.taxableBase) BASEEURO, @@ -212,28 +212,28 @@ BEGIN tii.companyFk FROM tInvoiceIn tii LEFT JOIN ( - SELECT e.id + SELECT e.id FROM tInvoiceIn tii JOIN expense e ON e.id = tii.expenseFk WHERE e.isWithheld LIMIT 1 - ) eWithheld ON TRUE - WHERE tii.taxTypeSageFk IS NOT NULL - AND (tii.taxCode IS NULL OR tii.taxCode NOT IN ('import10', 'import21')) + ) eWithheld ON TRUE + WHERE tii.taxTypeSageFk IS NOT NULL + AND (tii.taxCode IS NULL OR tii.taxCode NOT IN ('import10', 'import21')) GROUP BY tii.CuentaIvaRepercutido; -- Línea iva inversor sujeto pasivo - INSERT INTO XDiario( + INSERT INTO XDiario( ASIEN, FECHA, SUBCTA, - CONTRA, + CONTRA, EUROHABER, BASEEURO, CONCEPTO, - FACTURA, + FACTURA, IVA, - AUXILIAR, + AUXILIAR, SERIE, TIPOOPE, FECHA_EX, @@ -282,31 +282,31 @@ BEGIN JOIN sage.config c WHERE tii.taxCode = 'ISP21' OR MID(tii.supplierAccount, 4, 1) = '1' AND tii.taxTypeSageFk IS NOT NULL - AND NOT(tii.isVies - AND c.nontaxableTransactionTypeFk = tii.transactionTypeSageFk + AND NOT(tii.isVies + AND c.nontaxableTransactionTypeFk = tii.transactionTypeSageFk AND tii.taxCode = 'nonTaxable') GROUP BY tii.CuentaIvaRepercutido; - - -- Actualización del registro original + + -- Actualización del registro original UPDATE invoiceIn ii SET ii.isBooked = TRUE WHERE ii.id = vSelf; - + -- Problemas derivados de la precisión en los decimales al calcular los impuestos - UPDATE XDiario - SET EURODEBE = EURODEBE - + UPDATE XDiario + SET EURODEBE = EURODEBE - (SELECT IF(ABS(sub.difference) = 0.01, sub.difference, 0) FROM( - SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference + SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference FROM XDiario WHERE ASIEN = vBookNumber )sub ) - WHERE ASIEN = vBookNumber + WHERE ASIEN = vBookNumber AND EURODEBE <> 0 ORDER BY id DESC LIMIT 1; - + DROP TEMPORARY TABLE tInvoiceIn; END$$ DELIMITER ; diff --git a/db/routines/vn2008/views/recibida.sql b/db/routines/vn2008/views/recibida.sql index 89329618bd..76b86505e1 100644 --- a/db/routines/vn2008/views/recibida.sql +++ b/db/routines/vn2008/views/recibida.sql @@ -20,5 +20,7 @@ AS SELECT `r`.`id` AS `id`, `r`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`, `r`.`siiTrascendencyInvoiceInFk` AS `siiTrascendencyInvoiceInFk`, `r`.`bookEntried` AS `bookEntried`, - `r`.`withholdingSageFk` AS `withholdingSageFk` + `r`.`isVatDeductible` AS `isVatDeductible`, + `r`.`withholdingSageFk` AS `withholdingSageFk`, + `r`.`expenseFkDeductible` AS `expenseFkDeductible` FROM `vn`.`invoiceIn` `r` diff --git a/db/versions/11438-orangeTulip/00-firstScript.sql b/db/versions/11438-orangeTulip/00-firstScript.sql deleted file mode 100644 index a73febffac..0000000000 --- a/db/versions/11438-orangeTulip/00-firstScript.sql +++ /dev/null @@ -1,8 +0,0 @@ -ALTER TABLE vn.invoiceInTax ADD isDeductible TINYINT(1) DEFAULT FALSE NOT NULL; - - -ALTER TABLE vn.invoiceIn CHANGE expenseFkDeductible expenseFkDeductible__ varchar(10) - CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL NULL COMMENT '@deprecated 2025-02-15'; - -ALTER TABLE vn.invoiceIn CHANGE isVatDeductible isVatDeductible__ tinyint(1) - DEFAULT 1 NOT NULL COMMENT '@deprecated 2025-02-15'; diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 8df3f44944..b9add02a8c 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -255,12 +255,7 @@ "Holidays to past days not available": "Holidays to past days not available", "Incorrect delivery order alert on route": "Incorrect delivery order alert on route: {{ route }} zone: {{ zone }}", "Ticket has been delivered out of order": "The ticket {{ticket}} of route {{{fullUrl}}} has been delivered out of order.", - "clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}", + "clonedFromTicketWeekly": ", that is a cloned sale from ticket {{ ticketWeekly }}", "negativeReplaced": "Replaced item [#{{oldItemId}}]({{{oldItemUrl}}}) {{oldItem}} with [#{{newItemId}}]({{{newItemUrl}}}) {{newItem}} from ticket [{{ticketId}}]({{{ticketUrl}}})", - "The tag and priority can't be repeated": "The tag and priority can't be repeated", - "workerSocialName": "workerSocialName", - "workerName": "workerName", - "The tag or priority can't be repeated for an item": "The tag or priority can't be repeated for an item", - "An item type with the same code already exists": "An item type with the same code already exists", - "null": "null" -} \ No newline at end of file + "The tag and priority can't be repeated": "The tag and priority can't be repeated" +} diff --git a/modules/invoiceIn/back/locale/invoiceIn/en.yml b/modules/invoiceIn/back/locale/invoiceIn/en.yml index f413fa6651..f590f9656f 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/en.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/en.yml @@ -16,6 +16,7 @@ columns: bookEntried: book entried isVatDeductible: is VAT deductible withholdingSageFk: withholding + expenseFkDeductible: expense deductible editorFk: editor siiTrasCendencyInvoiceInFk: SII tax regime - siiTypeInvoiceInFk: SII Type + siiTypeInvoiceInFk: SII Type \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceIn/es.yml b/modules/invoiceIn/back/locale/invoiceIn/es.yml index 41bc3202f3..64ded6acaa 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/es.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/es.yml @@ -16,6 +16,7 @@ columns: bookEntried: fecha asiento isVatDeductible: impuesto deducible withholdingSageFk: código de retención + expenseFkDeductible: gasto deducible editorFk: editor siiTrasCendencyInvoiceInFk: régimen fiscal SII - siiTypeInvoiceInFk: tipo SII + siiTypeInvoiceInFk: tipo SII \ No newline at end of file diff --git a/modules/invoiceIn/back/methods/invoice-in/clone.js b/modules/invoiceIn/back/methods/invoice-in/clone.js index dfac433f21..88ea0ddcd1 100644 --- a/modules/invoiceIn/back/methods/invoice-in/clone.js +++ b/modules/invoiceIn/back/methods/invoice-in/clone.js @@ -46,6 +46,7 @@ module.exports = Self => { 'issued', 'currencyFk', 'companyFk', + 'isVatDeductible', 'withholdingSageFk', 'deductibleExpenseFk', ], @@ -78,6 +79,7 @@ module.exports = Self => { issued: issued, currencyFk: sourceInvoiceIn.currencyFk, companyFk: sourceInvoiceIn.companyFk, + isVatDeductible: sourceInvoiceIn.isVatDeductible, withholdingSageFk: sourceInvoiceIn.withholdingSageFk, deductibleExpenseFk: sourceInvoiceIn.deductibleExpenseFk, }, myOptions); diff --git a/modules/invoiceIn/back/methods/invoice-in/filter.js b/modules/invoiceIn/back/methods/invoice-in/filter.js index 9b59fc3d9b..f081368e46 100644 --- a/modules/invoiceIn/back/methods/invoice-in/filter.js +++ b/modules/invoiceIn/back/methods/invoice-in/filter.js @@ -184,6 +184,7 @@ module.exports = Self => { ii.docFk dmsFk, dm.file, ii.supplierFk, + ii.expenseFkDeductible deductibleExpenseFk, s.name supplierName, s.account, SUM(iid.amount) amount, diff --git a/modules/invoiceIn/back/methods/invoice-in/summary.js b/modules/invoiceIn/back/methods/invoice-in/summary.js index cbe23ae731..b3fd9ee97b 100644 --- a/modules/invoiceIn/back/methods/invoice-in/summary.js +++ b/modules/invoiceIn/back/methods/invoice-in/summary.js @@ -123,6 +123,12 @@ module.exports = Self => { }] } }, + { + relation: 'expenseDeductible', + scope: { + fields: ['id', 'name', 'taxTypeFk'] + } + }, { relation: 'currency', scope: { diff --git a/modules/invoiceIn/back/models/invoice-in-tax.json b/modules/invoiceIn/back/models/invoice-in-tax.json index 403c013452..256ee0553a 100644 --- a/modules/invoiceIn/back/models/invoice-in-tax.json +++ b/modules/invoiceIn/back/models/invoice-in-tax.json @@ -24,9 +24,6 @@ "expenseFk": { "type": "string" }, - "isDeductible": { - "type": "boolean" - }, "created": { "type": "date" } @@ -53,4 +50,4 @@ "foreignKey": "transactionTypeSageFk" } } -} +} \ No newline at end of file diff --git a/modules/invoiceIn/back/models/invoice-in.json b/modules/invoiceIn/back/models/invoice-in.json index b85c8a4c7a..9614c3872e 100644 --- a/modules/invoiceIn/back/models/invoice-in.json +++ b/modules/invoiceIn/back/models/invoice-in.json @@ -36,6 +36,9 @@ "booked": { "type": "date" }, + "isVatDeductible": { + "type": "boolean" + }, "operated": { "type": "date" }, @@ -47,6 +50,12 @@ "mysql": { "columnName": "docFk" } + }, + "deductibleExpenseFk": { + "type": "number", + "mysql": { + "columnName": "expenseFkDeductible" + } } }, "relations": { @@ -70,6 +79,11 @@ "model": "SageWithholding", "foreignKey": "withholdingSageFk" }, + "expenseDeductible": { + "type": "belongsTo", + "model": "Expense", + "foreignKey": "deductibleExpenseFk" + }, "company": { "type": "belongsTo", "model": "Company", diff --git a/modules/invoiceIn/front/summary/index.html b/modules/invoiceIn/front/summary/index.html index b91ec46dde..f0baa33c84 100644 --- a/modules/invoiceIn/front/summary/index.html +++ b/modules/invoiceIn/front/summary/index.html @@ -36,6 +36,8 @@ + + @@ -47,10 +49,10 @@ Taxable base {{$ctrl.summary.totals.totalTaxableBase | currency: 'EUR':2 | dashIfEmpty}}

Total {{$ctrl.summary.totals.totalVat | currency: 'EUR':2 | dashIfEmpty}}

Due day - {{$ctrl.summary.totals.totalDueDay | currency: 'EUR':2 | dashIfEmpty}}
@@ -59,7 +61,7 @@

- Vat @@ -92,7 +94,7 @@

- Due day @@ -121,7 +123,7 @@

- Intrastat @@ -139,7 +141,7 @@ - {{::intrastat.intrastatFk}}: {{::intrastat.intrastat.description}} + {{::intrastat.intrastatFk}}: {{::intrastat.intrastat.description}} {{::intrastat.amount | currency: 'EUR':2}} {{::intrastat.net}} {{::intrastat.stems}} @@ -152,4 +154,4 @@ - + \ No newline at end of file From dce263992edfe455539184d94f5df59215190aaf Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 14 Feb 2025 12:36:06 +0100 Subject: [PATCH 184/217] fix: refs #8227 Roadmap columns --- modules/route/back/models/roadmap.json | 2 +- modules/route/back/models/roadmapStop.json | 7 ++----- modules/shelving/back/models/parking.json | 8 -------- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/modules/route/back/models/roadmap.json b/modules/route/back/models/roadmap.json index 1434b1602f..ff3ff38c11 100644 --- a/modules/route/back/models/roadmap.json +++ b/modules/route/back/models/roadmap.json @@ -33,7 +33,7 @@ "observations": { "type": "string" }, - "userFk": { + "editorFk": { "type": "number" }, "price": { diff --git a/modules/route/back/models/roadmapStop.json b/modules/route/back/models/roadmapStop.json index d34cee6e50..782a507610 100644 --- a/modules/route/back/models/roadmapStop.json +++ b/modules/route/back/models/roadmapStop.json @@ -15,16 +15,13 @@ "roadmapFk": { "type": "number" }, - "addressFk": { - "type": "number" - }, "eta": { "type": "date" }, "description": { "type": "string" }, - "userFk": { + "editorFk": { "type": "number" } }, @@ -37,7 +34,7 @@ "address": { "type": "belongsTo", "model": "RoadmapAddress", - "foreignKey": "addressFk" + "foreignKey": "roadmapAddressFk" } } } diff --git a/modules/shelving/back/models/parking.json b/modules/shelving/back/models/parking.json index a9393fc6a7..251613a504 100644 --- a/modules/shelving/back/models/parking.json +++ b/modules/shelving/back/models/parking.json @@ -12,14 +12,6 @@ "id": true, "description": "Identifier" }, - "column": { - "type": "string", - "required": true - }, - "row": { - "type": "string", - "required": true - }, "code": { "type": "string" }, From f9d1a8c0c24e09840be4e241713d2fa77d71808f Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 14 Feb 2025 14:23:43 +0100 Subject: [PATCH 185/217] fix: refs #8388 update booking status in toUnbook method --- modules/invoiceIn/back/methods/invoice-in/toUnbook.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/invoiceIn/back/methods/invoice-in/toUnbook.js b/modules/invoiceIn/back/methods/invoice-in/toUnbook.js index c27354d73e..7d63e6a876 100644 --- a/modules/invoiceIn/back/methods/invoice-in/toUnbook.js +++ b/modules/invoiceIn/back/methods/invoice-in/toUnbook.js @@ -48,12 +48,10 @@ module.exports = Self => { }, myOptions); let asien = bookEntry?.ASIEN; + const invoiceIn = await Self.findById(invoiceInId, myOptions); if (asien) { accountingEntries = await models.Xdiario.count({ASIEN: asien}, myOptions); - await models.Xdiario.destroyAll({ASIEN: asien}, myOptions); - const invoiceIn = await Self.findById(invoiceInId, myOptions); - await invoiceIn.updateAttribute('isBooked', false, myOptions); } else { const linkedBookEntry = await models.Xdiario.findOne({ fields: ['ASIEN'], @@ -66,6 +64,8 @@ module.exports = Self => { asien = linkedBookEntry?.ASIEN; isLinked = true; } + await invoiceIn.updateAttribute('isBooked', false, myOptions); + if (tx) await tx.commit(); return { From 8ef13e3d9ca64c80b5a1258a9a9ac5931825b096 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 17 Feb 2025 08:34:04 +0100 Subject: [PATCH 187/217] feat: refs #6695 add Dockerfile for MariaDB and update Jenkinsfile for database build stage --- Jenkinsfile | 31 +++++++++++++++++++++++++++++++ db/Dockerfile | 4 ++++ docker-compose.yml | 5 +++++ 3 files changed, 40 insertions(+) create mode 100644 db/Dockerfile diff --git a/Jenkinsfile b/Jenkinsfile index 06addc9408..6452b35d65 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -179,6 +179,33 @@ pipeline { } } } + // stage('Db') { + // when { + // expression { FROM_GIT } + // } + // stages { + // stage('Build') { + // when { + // expression { RUN_BUILD } + // } + // environment { + // VERSION = readFile 'VERSION.txt' + // } + // steps { + // sh 'npx myt run -t' + // sh ''' + // docker exec vn-database sh -c "cp -r /var/lib/mysql /data" + // ''' + // sh 'docker commit vn-database vn_db' + // sh ''' + // docker stop vn-database + // docker rm vn-database + // ''' + // sh 'docker-compose build db' + // } + // } + // } + // } } } stage('Push') { @@ -190,6 +217,10 @@ pipeline { VERSION = readFile 'VERSION.txt' } steps { + // def services = ['front', 'back', 'db'] + // services.each { service -> + // sh "docker tag ${REGISTRY}/salix-${service}:${VERSION} ${REGISTRY}/salix-${service}:${env.NODE_ENV}" + // } sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' sh 'docker-compose push' } diff --git a/db/Dockerfile b/db/Dockerfile new file mode 100644 index 0000000000..599c739ea7 --- /dev/null +++ b/db/Dockerfile @@ -0,0 +1,4 @@ +FROM mariadb:10.11.6 +ENV TZ Europe/Madrid +COPY --from=vn_db /data /var/lib/mysql +CMD ["mysqld"] diff --git a/docker-compose.yml b/docker-compose.yml index 923bb57809..c867f0dd3f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,3 +9,8 @@ services: build: context: . dockerfile: back/Dockerfile +# db: +# image: registry.verdnatura.es/salix-db:${VERSION:?} +# build: +# context: . +# dockerfile: db/Dockerfile From 4aa56a71cbe2fa1362312dd6d7c1ccc0db7b9f3b Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 17 Feb 2025 08:56:55 +0100 Subject: [PATCH 188/217] refactor: refs #6695 uncommnet --- Jenkinsfile | 62 +++++++++++++++++++++++----------------------- docker-compose.yml | 10 ++++---- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6452b35d65..bfadd34f39 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -179,33 +179,33 @@ pipeline { } } } - // stage('Db') { - // when { - // expression { FROM_GIT } - // } - // stages { - // stage('Build') { - // when { - // expression { RUN_BUILD } - // } - // environment { - // VERSION = readFile 'VERSION.txt' - // } - // steps { - // sh 'npx myt run -t' - // sh ''' - // docker exec vn-database sh -c "cp -r /var/lib/mysql /data" - // ''' - // sh 'docker commit vn-database vn_db' - // sh ''' - // docker stop vn-database - // docker rm vn-database - // ''' - // sh 'docker-compose build db' - // } - // } - // } - // } + stage('Db') { + when { + expression { FROM_GIT } + } + stages { + stage('Build') { + when { + expression { RUN_BUILD } + } + environment { + VERSION = readFile 'VERSION.txt' + } + steps { + sh 'npx myt run -t' + sh ''' + docker exec vn-database sh -c "cp -r /var/lib/mysql /data" + ''' + sh 'docker commit vn-database vn_db' + sh ''' + docker stop vn-database + docker rm vn-database + ''' + sh 'docker-compose build db' + } + } + } + } } } stage('Push') { @@ -217,10 +217,10 @@ pipeline { VERSION = readFile 'VERSION.txt' } steps { - // def services = ['front', 'back', 'db'] - // services.each { service -> - // sh "docker tag ${REGISTRY}/salix-${service}:${VERSION} ${REGISTRY}/salix-${service}:${env.NODE_ENV}" - // } + def services = ['front', 'back', 'db'] + services.each { service -> + sh "docker tag ${REGISTRY}/salix-${service}:${VERSION} ${REGISTRY}/salix-${service}:${env.NODE_ENV}" + } sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' sh 'docker-compose push' } diff --git a/docker-compose.yml b/docker-compose.yml index c867f0dd3f..7434f28344 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,8 +9,8 @@ services: build: context: . dockerfile: back/Dockerfile -# db: -# image: registry.verdnatura.es/salix-db:${VERSION:?} -# build: -# context: . -# dockerfile: db/Dockerfile + db: + image: registry.verdnatura.es/salix-db:${VERSION:?} + build: + context: . + dockerfile: db/Dockerfile From 3093f8aef87709c0c3de6498a10fedbf191c56ae Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 17 Feb 2025 10:50:21 +0100 Subject: [PATCH 189/217] fix: refs #6897 change user field to nickname in getStockBought method --- db/dump/fixtures.before.sql | 2 +- modules/entry/back/methods/stock-bought/getStockBought.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 1e5ed8ad65..1a94cffe5b 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1609,7 +1609,7 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 4, util.VN_CURDATE()), (14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 7.30, 7.00, 0, 1, 0, NULL, 4, util.VN_CURDATE()), (15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 'grouping', NULL, 0.00, 1.75, 1.67, 0, 1, 0, NULL, 4, util.VN_CURDATE()), - (16, 99, 1, 50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, NULL, 1.00, '2024-07-30 08:13:51.000'), + (16, 99, 1, 50.0000, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.60, 99.40, 0, 1, 0, NULL, 1.00, util.VN_CURDATE()), (17, 11, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), (18, 12, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE() - INTERVAL 2 MONTH), (19, 100, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 'grouping', NULL, 0.00, 99.6, 99.4, 0, 1, 0, NULL, 1, util.VN_CURDATE()), diff --git a/modules/entry/back/methods/stock-bought/getStockBought.js b/modules/entry/back/methods/stock-bought/getStockBought.js index 9768b58e72..e94f2dfb1a 100644 --- a/modules/entry/back/methods/stock-bought/getStockBought.js +++ b/modules/entry/back/methods/stock-bought/getStockBought.js @@ -45,7 +45,7 @@ module.exports = Self => { { relation: 'user', scope: { - fields: ['id', 'name'] + fields: ['id', 'nickname'] } } ] From bfddbfaa22d4273a3788c2f0df299565c50f5192 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 17 Feb 2025 10:54:38 +0100 Subject: [PATCH 190/217] fix: refs #6695 update Jenkinsfile and docker-compose.yml for environment variable usage --- Jenkinsfile | 12 +++++++----- docker-compose.yml | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index bfadd34f39..0ff5dcef0b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -217,12 +217,14 @@ pipeline { VERSION = readFile 'VERSION.txt' } steps { - def services = ['front', 'back', 'db'] - services.each { service -> - sh "docker tag ${REGISTRY}/salix-${service}:${VERSION} ${REGISTRY}/salix-${service}:${env.NODE_ENV}" + script { + def services = ['front', 'back', 'db'] + services.each { service -> + sh "docker tag ${REGISTRY}/salix-${service}:${VERSION} ${REGISTRY}/salix-${service}:${env.NODE_ENV}" + } + sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' + sh 'docker-compose push' } - sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' - sh 'docker-compose push' } } stage('Deploy') { diff --git a/docker-compose.yml b/docker-compose.yml index 7434f28344..48accdb7e1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,7 @@ services: context: . dockerfile: back/Dockerfile db: - image: registry.verdnatura.es/salix-db:${VERSION:?} + image: registry.verdnatura.es/salix-db:${NODE_ENV:?} build: context: . dockerfile: db/Dockerfile From 8387dad3d8e1111d4fcd2cc973be7f3cd63da9bc Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 11:28:01 +0100 Subject: [PATCH 191/217] ci: refs #6695 Docker build changes --- Jenkinsfile | 195 +++++++++++++++++++-------------------------- docker-compose.yml | 16 ---- 2 files changed, 84 insertions(+), 127 deletions(-) delete mode 100644 docker-compose.yml diff --git a/Jenkinsfile b/Jenkinsfile index bfadd34f39..b7e1c321e0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,6 +8,7 @@ def RUN_BUILD def BRANCH_ENV = [ test: 'test', master: 'production', + main: 'production', beta: 'production' ] @@ -20,12 +21,17 @@ node { 'dev', 'test', 'master', + 'main', 'beta' ].contains(env.BRANCH_NAME) FROM_GIT = env.JOB_NAME.startsWith('gitea/') RUN_TESTS = !PROTECTED_BRANCH && FROM_GIT RUN_BUILD = PROTECTED_BRANCH && FROM_GIT + IS_LATEST = ['master', 'main'].contains(env.BRANCH_NAME) + + // XXX: Delete me + RUN_BUILD = true // https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables echo "NODE_NAME: ${env.NODE_NAME}" @@ -73,6 +79,7 @@ pipeline { def packageJson = readJSON file: 'package.json' def version = "${packageJson.version}-build${env.BUILD_ID}" writeFile(file: 'VERSION.txt', text: version) + echo "VERSION.txt: ${version}" } } } @@ -105,124 +112,71 @@ pipeline { } } } - stage('Stack') { - parallel { - stage('Back') { - stages { - stage('Test') { - when { - expression { RUN_TESTS } - } - environment { - NODE_ENV = '' - } - steps { - sh 'node back/tests.js --junit' - } - post { - always { - junit( - testResults: 'junitresults.xml', - allowEmptyResults: true - ) - } - } - } - stage('Build') { - when { - expression { RUN_BUILD } - } - environment { - VERSION = readFile 'VERSION.txt' - } - steps { - sh 'docker-compose build back' - } - } - } - } - stage('Front') { - when { - expression { FROM_GIT } - } - stages { - stage('Test') { - when { - expression { RUN_TESTS } - } - environment { - NODE_ENV = '' - } - steps { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=10' - } - post { - always { - junit( - testResults: 'junit.xml', - allowEmptyResults: true - ) - } - } - } - stage('Build') { - when { - expression { RUN_BUILD } - } - environment { - VERSION = readFile 'VERSION.txt' - } - steps { - sh 'gulp build' - sh 'docker-compose build front' - } - } - } - } - stage('Db') { - when { - expression { FROM_GIT } - } - stages { - stage('Build') { - when { - expression { RUN_BUILD } - } - environment { - VERSION = readFile 'VERSION.txt' - } - steps { - sh 'npx myt run -t' - sh ''' - docker exec vn-database sh -c "cp -r /var/lib/mysql /data" - ''' - sh 'docker commit vn-database vn_db' - sh ''' - docker stop vn-database - docker rm vn-database - ''' - sh 'docker-compose build db' - } - } - } - } - } - } - stage('Push') { + stage('Build') { when { expression { RUN_BUILD } } environment { - CREDENTIALS = credentials('docker-registry') VERSION = readFile 'VERSION.txt' + CREDENTIALS = credentials('docker-registry') } - steps { - def services = ['front', 'back', 'db'] - services.each { service -> - sh "docker tag ${REGISTRY}/salix-${service}:${VERSION} ${REGISTRY}/salix-${service}:${env.NODE_ENV}" + parallel { + stage('Back') { + steps { + docker 'back', '.' + } + } + stage('Front') { + steps { + docker 'front', 'front' + } + } + stage('DB') { + steps { + sh 'npx myt run -t' + sh 'docker exec vn-database sh -c "cp -r /var/lib/mysql /data"' + sh 'docker commit vn-database vn_db' + sh 'docker stop vn-database' + sh 'docker rm vn-database' + docker 'db', 'db' + } + } + } + } + stage('Test') { + when { + expression { RUN_TESTS } + } + environment { + NODE_ENV = '' + } + parallel { + stage('Back') { + steps { + sh 'node back/tests.js --junit' + } + post { + always { + junit( + testResults: 'junitresults.xml', + allowEmptyResults: true + ) + } + } + } + stage('Front') { + steps { + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=10' + } + post { + always { + junit( + testResults: 'junit.xml', + allowEmptyResults: true + ) + } + } } - sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' - sh 'docker-compose push' } } stage('Deploy') { @@ -295,3 +249,22 @@ pipeline { } } } + +def docker(service, context) { + def image = "${env.REGISTRY}/salix-${service}" + def versionImage = "${image}:${env.VERSION}" + def branchImage = "${image}:${env.BRANCH_NAME}" + + sh "docker build -t ${versionImage} ${context}" + sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' + sh "docker push ${versionImage}" + + sh "docker tag ${versionImage} ${branchImage}" + sh "docker push ${branchImage}" + + if (IS_LATEST) { + def latestImage = "${image}:latest" + sh "docker tag ${versionImage} ${latestImage}" + sh "docker push ${latestImage}" + } +} diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 7434f28344..0000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: '3.7' -services: - front: - image: registry.verdnatura.es/salix-front:${VERSION:?} - build: - context: front - back: - image: registry.verdnatura.es/salix-back:${VERSION:?} - build: - context: . - dockerfile: back/Dockerfile - db: - image: registry.verdnatura.es/salix-db:${VERSION:?} - build: - context: . - dockerfile: db/Dockerfile From 8b05bfb59f3f6982afe336f74292b51fbdcce1ed Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 11:31:10 +0100 Subject: [PATCH 192/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b7e1c321e0..42f2bf6a6e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -123,12 +123,12 @@ pipeline { parallel { stage('Back') { steps { - docker 'back', '.' + docker('back', '.') } } stage('Front') { steps { - docker 'front', 'front' + docker('front', 'front') } } stage('DB') { @@ -138,7 +138,7 @@ pipeline { sh 'docker commit vn-database vn_db' sh 'docker stop vn-database' sh 'docker rm vn-database' - docker 'db', 'db' + docker('db', 'db') } } } From 64eefa95f53571e27d4bb905a34fae2916304d47 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 11:32:38 +0100 Subject: [PATCH 193/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 42f2bf6a6e..b71634b9de 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -123,12 +123,12 @@ pipeline { parallel { stage('Back') { steps { - docker('back', '.') + docker service: 'back', context: '.' } } stage('Front') { steps { - docker('front', 'front') + docker service: 'front', context: 'front' } } stage('DB') { @@ -138,7 +138,7 @@ pipeline { sh 'docker commit vn-database vn_db' sh 'docker stop vn-database' sh 'docker rm vn-database' - docker('db', 'db') + docker service: 'db', context: 'db' } } } From 7e7ee1ff12de8bc57e5b0f89ea61a7fd405733ee Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 11:33:56 +0100 Subject: [PATCH 194/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b71634b9de..d907a7cf72 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -123,12 +123,12 @@ pipeline { parallel { stage('Back') { steps { - docker service: 'back', context: '.' + dockerBuildPush 'back', '.' } } stage('Front') { steps { - docker service: 'front', context: 'front' + dockerBuildPush 'front', 'front' } } stage('DB') { @@ -138,7 +138,7 @@ pipeline { sh 'docker commit vn-database vn_db' sh 'docker stop vn-database' sh 'docker rm vn-database' - docker service: 'db', context: 'db' + dockerBuildPush 'db', 'db' } } } @@ -250,7 +250,7 @@ pipeline { } } -def docker(service, context) { +def dockerBuildPush(service, context) { def image = "${env.REGISTRY}/salix-${service}" def versionImage = "${image}:${env.VERSION}" def branchImage = "${image}:${env.BRANCH_NAME}" From 2d94c8df39398b0641d3a5ae790f29ab84f00245 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 12:17:49 +0100 Subject: [PATCH 195/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d907a7cf72..b1d3ec7b7d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -123,7 +123,7 @@ pipeline { parallel { stage('Back') { steps { - dockerBuildPush 'back', '.' + dockerBuildPush 'back', '.', 'back/Dockerfile' } } stage('Front') { @@ -250,21 +250,16 @@ pipeline { } } -def dockerBuildPush(service, context) { - def image = "${env.REGISTRY}/salix-${service}" - def versionImage = "${image}:${env.VERSION}" - def branchImage = "${image}:${env.BRANCH_NAME}" +def dockerBuildPush(service, context, dockerfile = null) { + if (dockerfile == null) + dockerfile = "${context}/Dockerfile" - sh "docker build -t ${versionImage} ${context}" - sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' - sh "docker push ${versionImage}" + def imageName = "${env.REGISTRY}/salix-${service}" + def image = docker.build("${image}:${env.VERSION}", "-f ${dockerfile} ${context}") - sh "docker tag ${versionImage} ${branchImage}" - sh "docker push ${branchImage}" - - if (IS_LATEST) { - def latestImage = "${image}:latest" - sh "docker tag ${versionImage} ${latestImage}" - sh "docker push ${latestImage}" + withRegistry(env.REGISTRY, 'docker-registry') { + image.push() + image.push(env.BRANCH_NAME) + if (IS_LATEST) image.push('latest') } } From 2e4fb91d77fd2673afc0940f2c6ba98dea9c3366 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 12:20:36 +0100 Subject: [PATCH 196/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b1d3ec7b7d..80a60f80c9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -254,8 +254,8 @@ def dockerBuildPush(service, context, dockerfile = null) { if (dockerfile == null) dockerfile = "${context}/Dockerfile" - def imageName = "${env.REGISTRY}/salix-${service}" - def image = docker.build("${image}:${env.VERSION}", "-f ${dockerfile} ${context}") + def imageName = "${env.REGISTRY}/salix-${service}:${env.VERSION}" + def image = docker.build("${imageName}", "-f ${dockerfile} ${context}") withRegistry(env.REGISTRY, 'docker-registry') { image.push() From 45e8a0bd8b3c87114be31431e4dd655964499c69 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 12:34:00 +0100 Subject: [PATCH 197/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 80a60f80c9..9219025542 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -128,6 +128,7 @@ pipeline { } stage('Front') { steps { + sh 'gulp build' dockerBuildPush 'front', 'front' } } From b7342eace2ae3c4883fe55e16bc2eb6c93fc6fa3 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 12:38:06 +0100 Subject: [PATCH 198/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9219025542..b83c387d88 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -258,7 +258,7 @@ def dockerBuildPush(service, context, dockerfile = null) { def imageName = "${env.REGISTRY}/salix-${service}:${env.VERSION}" def image = docker.build("${imageName}", "-f ${dockerfile} ${context}") - withRegistry(env.REGISTRY, 'docker-registry') { + docker.withRegistry(env.REGISTRY, 'docker-registry') { image.push() image.push(env.BRANCH_NAME) if (IS_LATEST) image.push('latest') From 52c22608a59b24cea027f14f0b9d68b5d04a5fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Mon, 17 Feb 2025 11:38:48 +0000 Subject: [PATCH 199/217] Actualizar db/routines/vn/procedures/productionControl.sql --- db/routines/vn/procedures/productionControl.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/productionControl.sql b/db/routines/vn/procedures/productionControl.sql index e23232b8b0..fdb927a6e0 100644 --- a/db/routines/vn/procedures/productionControl.sql +++ b/db/routines/vn/procedures/productionControl.sql @@ -72,7 +72,7 @@ proc: BEGIN IF(tpr.isFreezed, ' CONGELADO',''), IF(tpr.hasHighRisk, ' RIESGO',''), IF(tpr.hasTicketRequest, ' COD 100',''), - IF(tpr.isTaxDataChecked, '',' FICHA INCOMPLETA'), + IF(tpr.isTaxDataChecked, ' FICHA INCOMPLETA', ''), IF(tpr.hasComponentLack, ' COMPONENTES', ''), IF(HOUR(util.VN_NOW()) < IF(HOUR(t.shipped), HOUR(t.shipped), COALESCE(HOUR(zc.hour),HOUR(z.hour))) AND tpr.isTooLittle, ' PEQUEÑO', '') From 939181bd79abeb8e54ce77a6d902f1fed48c8fd7 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 12:50:22 +0100 Subject: [PATCH 200/217] ci: refs #6695 Jenkinsfile fixes --- Jenkinsfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b83c387d88..6aac3a5f60 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -255,10 +255,9 @@ def dockerBuildPush(service, context, dockerfile = null) { if (dockerfile == null) dockerfile = "${context}/Dockerfile" - def imageName = "${env.REGISTRY}/salix-${service}:${env.VERSION}" - def image = docker.build("${imageName}", "-f ${dockerfile} ${context}") - - docker.withRegistry(env.REGISTRY, 'docker-registry') { + docker.withRegistry("https://${env.REGISTRY}", 'docker-registry') { + def imageName = "salix-${service}:${env.VERSION}" + def image = docker.build(imageName, "-f ${dockerfile} ${context}") image.push() image.push(env.BRANCH_NAME) if (IS_LATEST) image.push('latest') From 19df0d3cb0886c71f899f10f5c1998de06c8b127 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 12:55:48 +0100 Subject: [PATCH 201/217] ci: refs #6695 Jenkinsfile debug code removed --- Jenkinsfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6aac3a5f60..04ae98e0ad 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -30,9 +30,6 @@ node { RUN_BUILD = PROTECTED_BRANCH && FROM_GIT IS_LATEST = ['master', 'main'].contains(env.BRANCH_NAME) - // XXX: Delete me - RUN_BUILD = true - // https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables echo "NODE_NAME: ${env.NODE_NAME}" echo "WORKSPACE: ${env.WORKSPACE}" From 40ed75450dc31684be29078533ba53aa817e5bcd Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 13:00:32 +0100 Subject: [PATCH 202/217] ci: refs #6695 Jenkinsfile code refactor --- Jenkinsfile | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 04ae98e0ad..cb76da130d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -120,13 +120,13 @@ pipeline { parallel { stage('Back') { steps { - dockerBuildPush 'back', '.', 'back/Dockerfile' + dockerBuildPush 'salix-back', '.', 'back/Dockerfile' } } stage('Front') { steps { sh 'gulp build' - dockerBuildPush 'front', 'front' + dockerBuildPush 'salix-front', 'front' } } stage('DB') { @@ -136,7 +136,8 @@ pipeline { sh 'docker commit vn-database vn_db' sh 'docker stop vn-database' sh 'docker rm vn-database' - dockerBuildPush 'db', 'db' + + dockerBuildPush 'salix-db', 'db' } } } @@ -248,13 +249,13 @@ pipeline { } } -def dockerBuildPush(service, context, dockerfile = null) { +def dockerBuildPush(imageName, context, dockerfile = null) { if (dockerfile == null) dockerfile = "${context}/Dockerfile" docker.withRegistry("https://${env.REGISTRY}", 'docker-registry') { - def imageName = "salix-${service}:${env.VERSION}" - def image = docker.build(imageName, "-f ${dockerfile} ${context}") + def baseImage = "${imageName}:${env.VERSION}" + def image = docker.build(baseImage, "-f ${dockerfile} ${context}") image.push() image.push(env.BRANCH_NAME) if (IS_LATEST) image.push('latest') From bd1a4b35aa7ffecabd74c01e7ee4f7fcf8203ac9 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 17 Feb 2025 13:12:22 +0100 Subject: [PATCH 203/217] fix(item_getBalance): refs #8408 alias for shipped field --- db/routines/vn/procedures/item_getBalance.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/item_getBalance.sql b/db/routines/vn/procedures/item_getBalance.sql index 4c425e20be..a68724eb50 100644 --- a/db/routines/vn/procedures/item_getBalance.sql +++ b/db/routines/vn/procedures/item_getBalance.sql @@ -207,7 +207,7 @@ BEGIN SELECT t.originType, t.originId, - @shipped:= t.shipped, + @shipped:= t.shipped shipped, t.alertLevel, t.stateName, t.reference, From 97198591f9ce885055be15d887b37ce4ebb18c02 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 17 Feb 2025 14:01:41 +0100 Subject: [PATCH 204/217] build: add build-essential in back dockerfile --- back/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/back/Dockerfile b/back/Dockerfile index b2c3298966..bd48374d6e 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -25,7 +25,7 @@ RUN apt-get update \ libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 \ libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 \ libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 \ - libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 \ + libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 build-essential \ fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget # Extra dependencies @@ -55,4 +55,4 @@ COPY \ README.md \ ./ -CMD ["node", "--tls-min-v1.0", "--openssl-legacy-provider", "./loopback/server/server.js"] \ No newline at end of file +CMD ["node", "--tls-min-v1.0", "--openssl-legacy-provider", "./loopback/server/server.js"] From e7cc754f53a1761c54e3c833883d954c7a9f6e85 Mon Sep 17 00:00:00 2001 From: provira Date: Mon, 17 Feb 2025 14:50:22 +0100 Subject: [PATCH 205/217] feat: refs #8497 added availabled on travel module --- modules/travel/back/methods/travel/filter.js | 1 + modules/travel/back/models/travel.json | 3 +++ 2 files changed, 4 insertions(+) diff --git a/modules/travel/back/methods/travel/filter.js b/modules/travel/back/methods/travel/filter.js index 837e30b305..ad7a71d11d 100644 --- a/modules/travel/back/methods/travel/filter.js +++ b/modules/travel/back/methods/travel/filter.js @@ -173,6 +173,7 @@ module.exports = Self => { t.isRaid, t.daysInForward, t.awbFk, + t.availabled, am.name agencyModeName, a.code awbCode, win.name warehouseInName, diff --git a/modules/travel/back/models/travel.json b/modules/travel/back/models/travel.json index a2a9e478e3..feeb24f698 100644 --- a/modules/travel/back/models/travel.json +++ b/modules/travel/back/models/travel.json @@ -56,6 +56,9 @@ }, "daysInForward": { "type": "number" + }, + "availabled": { + "type": "date" } }, "relations": { From 2d765913ffe0ac754412532ec57f5c307a3b0f9a Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 15:48:09 +0100 Subject: [PATCH 206/217] fix: refs #6695 Code refactor --- Jenkinsfile | 67 ++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index cb76da130d..9ed7055db4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -76,7 +76,7 @@ pipeline { def packageJson = readJSON file: 'package.json' def version = "${packageJson.version}-build${env.BUILD_ID}" writeFile(file: 'VERSION.txt', text: version) - echo "VERSION.txt: ${version}" + echo "VERSION: ${version}" } } } @@ -109,39 +109,6 @@ pipeline { } } } - stage('Build') { - when { - expression { RUN_BUILD } - } - environment { - VERSION = readFile 'VERSION.txt' - CREDENTIALS = credentials('docker-registry') - } - parallel { - stage('Back') { - steps { - dockerBuildPush 'salix-back', '.', 'back/Dockerfile' - } - } - stage('Front') { - steps { - sh 'gulp build' - dockerBuildPush 'salix-front', 'front' - } - } - stage('DB') { - steps { - sh 'npx myt run -t' - sh 'docker exec vn-database sh -c "cp -r /var/lib/mysql /data"' - sh 'docker commit vn-database vn_db' - sh 'docker stop vn-database' - sh 'docker rm vn-database' - - dockerBuildPush 'salix-db', 'db' - } - } - } - } stage('Test') { when { expression { RUN_TESTS } @@ -178,6 +145,38 @@ pipeline { } } } + stage('Build') { + when { + expression { RUN_BUILD } + } + environment { + VERSION = readFile 'VERSION.txt' + CREDENTIALS = credentials('docker-registry') + } + parallel { + stage('Back') { + steps { + dockerBuildPush 'salix-back', '.', 'back/Dockerfile' + } + } + stage('Front') { + steps { + sh 'gulp build' + dockerBuildPush 'salix-front', 'front' + } + } + stage('DB') { + steps { + sh 'npx myt run -t' + sh 'docker exec vn-database sh -c "cp -r /var/lib/mysql /data"' + sh 'docker commit vn-database vn_db' + sh 'docker stop vn-database' + sh 'docker rm vn-database' + dockerBuildPush 'salix-db', 'db' + } + } + } + } stage('Deploy') { when { expression { PROTECTED_BRANCH } From a73199e70bbbc0ae415fec463c3704b9fb0cf994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Mon, 17 Feb 2025 18:52:31 +0100 Subject: [PATCH 207/217] fix: priceOptimum error --- db/routines/vn/triggers/zone_beforeInsert.sql | 4 ++++ db/routines/vn/triggers/zone_beforeUpdate.sql | 4 ++++ db/versions/11445-brownDendro/00-firstScript.sql | 3 +++ 3 files changed, 11 insertions(+) create mode 100644 db/versions/11445-brownDendro/00-firstScript.sql diff --git a/db/routines/vn/triggers/zone_beforeInsert.sql b/db/routines/vn/triggers/zone_beforeInsert.sql index c87e548d99..34423ff67d 100644 --- a/db/routines/vn/triggers/zone_beforeInsert.sql +++ b/db/routines/vn/triggers/zone_beforeInsert.sql @@ -4,5 +4,9 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zone_beforeInsert` FOR EACH ROW BEGIN SET NEW.editorFk = account.myUser_getId(); + + IF NEW.priceOptimum = 0 THEN + SET NEW.priceOptimum = NEW.price; + END IF; END$$ DELIMITER ; diff --git a/db/routines/vn/triggers/zone_beforeUpdate.sql b/db/routines/vn/triggers/zone_beforeUpdate.sql index fe017ce6ac..0136f8fab1 100644 --- a/db/routines/vn/triggers/zone_beforeUpdate.sql +++ b/db/routines/vn/triggers/zone_beforeUpdate.sql @@ -4,5 +4,9 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`zone_beforeUpdate` FOR EACH ROW BEGIN SET NEW.editorFk = account.myUser_getId(); + + IF NEW.priceOptimum = 0 THEN + CALL util.throw('The priceOptimum cannot be 0'); + END IF; END$$ DELIMITER ; diff --git a/db/versions/11445-brownDendro/00-firstScript.sql b/db/versions/11445-brownDendro/00-firstScript.sql new file mode 100644 index 0000000000..c75a38a0e5 --- /dev/null +++ b/db/versions/11445-brownDendro/00-firstScript.sql @@ -0,0 +1,3 @@ +UPDATE vn.zone + SET priceOptimum = price + WHERE priceOptimum = 0; From 17410202ad9d9c35002b0d9b0e091092eee16665 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 19:40:12 +0100 Subject: [PATCH 208/217] fix: refs #6695 Code refactor --- Jenkinsfile | 23 +++++++++++++---------- db/Dockerfile | 4 ---- 2 files changed, 13 insertions(+), 14 deletions(-) delete mode 100644 db/Dockerfile diff --git a/Jenkinsfile b/Jenkinsfile index 9ed7055db4..ec972fb29d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -156,23 +156,23 @@ pipeline { parallel { stage('Back') { steps { - dockerBuildPush 'salix-back', '.', 'back/Dockerfile' + dockerBuild 'salix-back', '.', 'back/Dockerfile' } } stage('Front') { steps { sh 'gulp build' - dockerBuildPush 'salix-front', 'front' + dockerBuild 'salix-front', 'front' } } stage('DB') { steps { sh 'npx myt run -t' - sh 'docker exec vn-database sh -c "cp -r /var/lib/mysql /data"' - sh 'docker commit vn-database vn_db' - sh 'docker stop vn-database' - sh 'docker rm vn-database' - dockerBuildPush 'salix-db', 'db' + sh 'docker exec vn-database sh -c "rm -rf /mysql-template"' + sh 'docker exec vn-database sh -c "cp -a /var/lib/mysql /mysql-template"' + sh 'docker commit vn-database salix-tmp-db:$VERSION' + sh 'docker rm -f vn-database' + dockerPush docker.image("salix-tmp-db:${VERSION}") } } } @@ -248,13 +248,16 @@ pipeline { } } -def dockerBuildPush(imageName, context, dockerfile = null) { +def dockerBuild(imageName, context, dockerfile = null) { if (dockerfile == null) dockerfile = "${context}/Dockerfile" + def baseImage = "${imageName}:${env.VERSION}" + def image = docker.build(baseImage, "-f ${dockerfile} ${context}") + dockerPush(image) +} +def dockerPush(image) { docker.withRegistry("https://${env.REGISTRY}", 'docker-registry') { - def baseImage = "${imageName}:${env.VERSION}" - def image = docker.build(baseImage, "-f ${dockerfile} ${context}") image.push() image.push(env.BRANCH_NAME) if (IS_LATEST) image.push('latest') diff --git a/db/Dockerfile b/db/Dockerfile deleted file mode 100644 index 599c739ea7..0000000000 --- a/db/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM mariadb:10.11.6 -ENV TZ Europe/Madrid -COPY --from=vn_db /data /var/lib/mysql -CMD ["mysqld"] From 5a5da0a86324cce63e29f6770586746bec08d215 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 19:46:14 +0100 Subject: [PATCH 209/217] fix: refs #6695 Code refactor --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ec972fb29d..8f836e8b89 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -170,9 +170,9 @@ pipeline { sh 'npx myt run -t' sh 'docker exec vn-database sh -c "rm -rf /mysql-template"' sh 'docker exec vn-database sh -c "cp -a /var/lib/mysql /mysql-template"' - sh 'docker commit vn-database salix-tmp-db:$VERSION' + sh 'docker commit vn-database salix-db:$VERSION' sh 'docker rm -f vn-database' - dockerPush docker.image("salix-tmp-db:${VERSION}") + dockerPush docker.image("salix-db:${VERSION}") } } } From 7d08c1796a55cc2cfee64d55070d0cb0e0c286d0 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 18 Feb 2025 08:44:07 +0100 Subject: [PATCH 210/217] fix: update ticket_setState procedure to include created timestamp in ticketTracking insert --- db/routines/vn/procedures/ticket_setState.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/db/routines/vn/procedures/ticket_setState.sql b/db/routines/vn/procedures/ticket_setState.sql index 782783f992..918b830abb 100644 --- a/db/routines/vn/procedures/ticket_setState.sql +++ b/db/routines/vn/procedures/ticket_setState.sql @@ -26,17 +26,17 @@ proc:BEGIN JOIN ticketTracking tt ON tt.stateFk = s.id JOIN ticket t ON t.id = tt.ticketFk WHERE tt.ticketFk = vSelf - ORDER BY tt.created DESC + ORDER BY tt.created DESC, tt.id DESC LIMIT 1; - SELECT id INTO vPackedAlertLevel FROM alertLevel WHERE code = 'PACKED'; + SELECT id INTO vPackedAlertLevel FROM alertLevel WHERE code = 'PACKED'; IF vStateCode = 'OK' AND vZoneFk IS NULL THEN CALL util.throw('ASSIGN_ZONE_FIRST'); END IF; SET vCanChangeState = (( - vStateCode <> 'ON_CHECKING' AND vStateCode <> 'CHECKED') OR + vStateCode <> 'ON_CHECKING' AND vStateCode <> 'CHECKED') OR vTicketAlertLevel < vPackedAlertLevel ) AND NOT ( vTicketStateCode IN ('CHECKED', 'CHECKING') @@ -52,8 +52,8 @@ proc:BEGIN LEAVE proc; END IF; - INSERT INTO ticketTracking (stateFk, ticketFk, userFk) - SELECT id, vSelf, vNewWorkerFk + INSERT INTO ticketTracking (stateFk, ticketFk, userFk, created) + SELECT id, vSelf, vNewWorkerFk, util.VN_NOW() FROM state WHERE `code` = vStateCode COLLATE utf8_unicode_ci; ELSE From f83055057e5eb15c800033882ea117e6ee646673 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 18 Feb 2025 09:14:08 +0100 Subject: [PATCH 211/217] fix: expeditionTruck use editorFk --- db/routines/vn/views/expeditionTruck.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/views/expeditionTruck.sql b/db/routines/vn/views/expeditionTruck.sql index a5e0cf3502..8a3521fde7 100644 --- a/db/routines/vn/views/expeditionTruck.sql +++ b/db/routines/vn/views/expeditionTruck.sql @@ -7,5 +7,5 @@ AS SELECT `rs`.`id` AS `id`, `rs`.`description` AS `description`, `rs`.`bufferFk` AS `bufferFk`, `rs`.`created` AS `created`, - `rs`.`userFk` AS `userFk` + `rs`.`editorFk` AS `userFk` FROM `vn`.`roadmapStop` `rs`; From 08b4d0a4fa4cf2b02b04d3940b93fcfa251bf606 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 18 Feb 2025 09:16:31 +0100 Subject: [PATCH 212/217] build: refs #8622 dump db --- db/dump/.dump/data.sql | 186 ++++-- db/dump/.dump/privileges.sql | 54 +- db/dump/.dump/structure.sql | 1206 +++++++++++++++++++--------------- db/dump/.dump/triggers.sql | 172 ++++- 4 files changed, 980 insertions(+), 638 deletions(-) diff --git a/db/dump/.dump/data.sql b/db/dump/.dump/data.sql index 7fa281197d..bb63784b1f 100644 --- a/db/dump/.dump/data.sql +++ b/db/dump/.dump/data.sql @@ -4,7 +4,7 @@ USE `util`; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -INSERT INTO `version` VALUES ('vn-database','11410','7a02af9a3acae14a658de1557baa44542c24d480','2025-01-28 07:44:02','11423'); +INSERT INTO `version` VALUES ('vn-database','11436','f83055057e5eb15c800033882ea117e6ee646673','2025-02-18 09:15:11','11445'); INSERT INTO `versionLog` VALUES ('vn-database','10107','00-firstScript.sql','jenkins@10.0.2.69','2022-04-23 10:53:53',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','10112','00-firstScript.sql','jenkins@10.0.2.69','2022-05-09 09:14:53',NULL,NULL); @@ -853,6 +853,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','11071','00-firstScript.sql','jen INSERT INTO `versionLog` VALUES ('vn-database','11073','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-07-09 07:39:38',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11074','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-06-11 08:32:35',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11075','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-28 12:54:13',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11076','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:24',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11078','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-06-11 08:32:35',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11079','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-31 08:22:10',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11080','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-31 12:01:58',NULL,NULL); @@ -990,6 +991,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','11196','00-firstScript.sql','jen INSERT INTO `versionLog` VALUES ('vn-database','11197','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11198','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-11-12 07:42:49',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11201','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-08-27 13:04:26',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11202','01-updateStateAlertLevel.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:24',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11204','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-09-03 08:58:01',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11205','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-09-04 13:54:55',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11206','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-09-17 07:38:42',NULL,NULL); @@ -1139,11 +1141,15 @@ INSERT INTO `versionLog` VALUES ('vn-database','11377','00-firstScript.sql','jen INSERT INTO `versionLog` VALUES ('vn-database','11378','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11379','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11379','01-secScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11383','00-town.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:25',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11383','01-postCode.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:34',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11383','02-province.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:36',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11384','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:32',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11385','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-07 07:46:33',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11387','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:58',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11390','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-14 07:32:08',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11391','00-itemAlter.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-14 07:32:08',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11393','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:36',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11396','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:58',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11398','00-zoneEventPriceOptimum.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:59',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11398','00-zonePriceOptimum.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:43:59',NULL,NULL); @@ -1156,9 +1162,35 @@ INSERT INTO `versionLog` VALUES ('vn-database','11406','00-currrencyAlter.sql',' INSERT INTO `versionLog` VALUES ('vn-database','11406','01-currrencyUpdate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11407','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11410','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-28 07:44:00',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11411','00-agencyIncomingForeign.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:36',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11411','01-travelThermographAlter.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:37',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11415','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-01-20 08:12:38',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:37',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','01-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:37',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','02-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:37',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','03-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:38',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','04-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:40',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','05-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:40',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','06-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:40',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','07-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:41',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','08-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:41',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11416','09-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:41',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11418','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-21 11:03:27',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11419','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:41',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11422','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:41',NULL,NULL); INSERT INTO `versionLog` VALUES ('vn-database','11423','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-01-23 15:19:32',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11424','00-travel.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:45',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11425','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:45',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11427','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:46',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11428','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:47',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11429','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:47',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11430','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:47',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11432','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2025-02-06 13:34:31',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11433','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-06 13:45:28',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11436','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:47',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11436','01-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:47',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11436','02-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:47',NULL,NULL); +INSERT INTO `versionLog` VALUES ('vn-database','11436','03-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2025-02-18 08:53:47',NULL,NULL); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; @@ -1258,6 +1290,7 @@ INSERT INTO `role` VALUES (129,'buyerAssistant','Comprador que tienes mas permis INSERT INTO `role` VALUES (130,'reviewer','Revisor de producción',1,'2024-06-11 00:00:00','2024-06-11 00:00:00',10578); INSERT INTO `role` VALUES (131,'supplier','Privilegios básicos de un proveedor',1,'2024-07-05 10:18:58','2024-07-05 10:18:58',19295); INSERT INTO `role` VALUES (132,'salesPersonClaim','Departamento de ventas con funciones de reclamaciones',1,'2025-01-17 07:07:40','2025-01-17 07:07:40',19295); +INSERT INTO `role` VALUES (133,'deliveryFreelancer','Repartidor autónomo',1,'2025-02-18 08:53:36','2025-02-18 08:53:36',10578); INSERT INTO `roleInherit` VALUES (1,1,2,NULL); INSERT INTO `roleInherit` VALUES (2,1,3,NULL); @@ -1530,7 +1563,6 @@ INSERT INTO `roleInherit` VALUES (373,131,2,19295); INSERT INTO `roleInherit` VALUES (375,120,131,1437); INSERT INTO `roleInherit` VALUES (376,124,21,19336); INSERT INTO `roleInherit` VALUES (377,47,49,19295); -INSERT INTO `roleInherit` VALUES (378,101,15,19294); INSERT INTO `roleInherit` VALUES (379,103,121,19294); INSERT INTO `roleInherit` VALUES (381,119,123,19295); INSERT INTO `roleInherit` VALUES (382,48,72,783); @@ -1538,6 +1570,9 @@ INSERT INTO `roleInherit` VALUES (383,114,111,19295); INSERT INTO `roleInherit` VALUES (384,132,18,19295); INSERT INTO `roleInherit` VALUES (385,132,72,19295); INSERT INTO `roleInherit` VALUES (386,109,132,19295); +INSERT INTO `roleInherit` VALUES (387,101,122,19295); +INSERT INTO `roleInherit` VALUES (388,59,58,13657); +INSERT INTO `roleInherit` VALUES (389,59,111,19295); INSERT INTO `userPassword` VALUES (1,7,1,0,2,1); @@ -2096,7 +2131,7 @@ INSERT INTO `ACL` VALUES (664,'MailForward','*','*','ALLOW','ROLE','itManagement INSERT INTO `ACL` VALUES (667,'VnUser','*','*','ALLOW','ROLE','itManagement',NULL); INSERT INTO `ACL` VALUES (668,'VnUser','__get__preview','READ','ALLOW','ROLE','employee',NULL); INSERT INTO `ACL` VALUES (669,'VnUser','preview','*','ALLOW','ROLE','employee',NULL); -INSERT INTO `ACL` VALUES (670,'VnUser','create','*','ALLOW','ROLE','itManagement',NULL); +INSERT INTO `ACL` VALUES (670,'VnUser','create','*','ALLOW','ROLE','developerBoss',19295); INSERT INTO `ACL` VALUES (672,'PackingSiteAdvanced','*','*','ALLOW','ROLE','production',NULL); INSERT INTO `ACL` VALUES (673,'InvoiceOut','makePdfAndNotify','WRITE','ALLOW','ROLE','invoicing',NULL); INSERT INTO `ACL` VALUES (674,'InvoiceOutConfig','*','READ','ALLOW','ROLE','invoicing',NULL); @@ -2408,6 +2443,31 @@ INSERT INTO `ACL` VALUES (1013,'Route','optimizePriority','*','ALLOW','ROLE','em INSERT INTO `ACL` VALUES (1014,'Worker','canModifyAbsenceInPast','WRITE','ALLOW','ROLE','hr',10578); INSERT INTO `ACL` VALUES (1015,'Worker','__get__sip','READ','ALLOW','ROLE','employee',19294); INSERT INTO `ACL` VALUES (1016,'VnUser','adminUser','WRITE','ALLOW','ROLE','sysadmin',10578); +INSERT INTO `ACL` VALUES (1017,'BusinessReasonEnd','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1018,'CalendarType','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1019,'OccupationCode','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1020,'BusinessReasonEnd','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1021,'WorkerBusinessProfessionalCategory','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1022,'WorkerBusinessAgreement','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1023,'WorkerBusinessType','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1024,'PayrollCategory','find','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1025,'Worker','__get__business','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1026,'Worker','__create__business','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1027,'Business','crud','*','ALLOW','ROLE','hr',10578); +INSERT INTO `ACL` VALUES (1028,'Route','getTickets','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1029,'AgencyTerm','filter','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1030,'Route','summary','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1031,'Route','getRouteByAgency','WRITE','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1032,'Route','filter','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1033,'UserConfig','getUserConfig','*','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1034,'Route','getTickets','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1035,'Route','guessPriority','WRITE','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1036,'Route','getDeliveryPoint','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1037,'Route','findById','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1038,'Route','sendSms','WRITE','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1039,'Ticket','updateAttributes','WRITE','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1040,'Client','findById','READ','ALLOW','ROLE','deliveryFreelancer',10578); +INSERT INTO `ACL` VALUES (1041,'Entry','transfer','WRITE','ALLOW','ROLE','coolerBoss',10578); INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee'); INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee'); @@ -2706,77 +2766,79 @@ INSERT INTO `continent` VALUES (3,'África','AF'); INSERT INTO `continent` VALUES (4,'Europa','EU'); INSERT INTO `continent` VALUES (5,'Oceanía','OC'); -INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,132,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,134,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,5,NULL,72,0,0,1,1,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (23,'CMA','CAMARA',15,16,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,'PREVIOUS'); INSERT INTO `department` VALUES (31,'it','INFORMATICA',6,7,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',8,9,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (35,'finance','FINANZAS',10,11,NULL,0,0,0,1,0,1,'/1/',NULL,1,'begonya@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (36,'labor','LABORAL',12,13,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,39,NULL,72,1,1,1,12,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',14,41,NULL,72,1,1,1,13,1,'/1/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (38,'picking','SACADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,1,NULL,NULL,NULL,'ON_PREPARATION'); INSERT INTO `department` VALUES (39,'packing','ENCAJADO',19,20,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PACKING'); -INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',40,41,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (43,'VT','VENTAS',42,91,NULL,0,0,0,1,24,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (44,'management','GERENCIA',92,93,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',94,95,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (46,'delivery','REPARTO',96,97,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'DELIVERY'); -INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',98,99,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE'); -INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',100,101,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',102,103,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACIÓN',43,44,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',104,105,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',42,43,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (43,'VT','VENTAS',44,93,NULL,0,0,0,1,24,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (44,'management','GERENCIA',94,95,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',96,97,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (46,'delivery','REPARTO',98,99,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'DELIVERY'); +INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',100,101,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'STORAGE'); +INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',102,103,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',104,105,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACIÓN',45,46,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',106,107,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (55,NULL,'TALLER NATURAL',21,22,14548,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118,NULL,NULL,NULL); INSERT INTO `department` VALUES (56,NULL,'TALLER ARTIFICIAL',23,24,8470,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1927,NULL,NULL,NULL); -INSERT INTO `department` VALUES (58,'CMP','CAMPOS',106,109,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD'); -INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',110,111,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',45,46,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'CLAIM'); -INSERT INTO `department` VALUES (61,NULL,'VNH',112,115,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',116,117,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (58,'CMP','CAMPOS',108,111,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'FIELD'); +INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',112,113,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',47,48,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,'CLAIM'); +INSERT INTO `department` VALUES (61,NULL,'VNH',114,117,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',118,119,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (68,NULL,'COMPLEMENTOS',25,26,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',118,119,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPAÑA 5',47,48,4250,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',120,121,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (89,NULL,'COORDINACION',122,123,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (90,NULL,'TRAILER',113,114,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',120,121,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPAÑA 5',49,50,4250,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',122,123,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (89,NULL,'COORDINACION',124,125,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (90,NULL,'TRAILER',115,116,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',27,28,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PREVIOUS'); -INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',49,50,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',51,52,3797,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',53,54,24065,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',55,56,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',57,58,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCUÑANA',59,60,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',124,125,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPAÑA 3',61,62,1118,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',29,30,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',51,52,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',53,54,3797,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',55,56,24065,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',57,58,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',59,60,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCUÑANA',61,62,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',126,127,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPAÑA 3',63,64,1118,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (126,'preserved','PRESERVADO',29,30,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,'PALLETIZING'); INSERT INTO `department` VALUES (130,'reviewers','REVISION',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'ON_CHECKING'); -INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',107,108,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',63,64,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (133,'franceTeamManagement','EQUIPO GESTIÓN FRANCIA',65,66,9751,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL); -INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',67,68,8964,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL); -INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',126,127,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',128,129,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (137,'sorter','SORTER',130,131,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPAÑA 4',69,70,3803,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (140,'internationalTeam','EQUIPO INTERNACIONAL',71,72,24065,0,0,0,2,0,43,'/1/43/','int_equipo',1,'international@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',109,110,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',65,66,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (133,'franceTeamManagement','EQUIPO GESTIÓN FRANCIA',67,68,9751,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL); +INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',69,70,8964,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL); +INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',128,129,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',130,131,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (137,'sorter','SORTER',132,133,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPAÑA 4',71,72,3803,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (140,'internationalTeam','EQUIPO INTERNACIONAL',73,74,24065,0,0,0,2,0,43,'/1/43/','int_equipo',1,'international@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `department` VALUES (141,NULL,'PREVIA',35,36,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,'PREVIOUS'); INSERT INTO `department` VALUES (146,NULL,'VERDNACOLOMBIA',3,4,NULL,72,0,0,2,0,22,'/1/22/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); -INSERT INTO `department` VALUES (147,'spainTeamAsia','EQUIPO ESPAÑA ASIA',73,74,40214,0,0,0,2,0,43,'/1/43/','esA_equipo',1,'esA@verdnatura.es',0,0,0,0,NULL,NULL,'5500',NULL); -INSERT INTO `department` VALUES (148,'franceTeamCatchment','EQUIPO CAPTACIÓN FRANCIA',75,76,25178,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,'6000',NULL); -INSERT INTO `department` VALUES (149,'spainTeamCatchment','EQUIPO ESPAÑA CAPTACIÓN',77,78,1203,0,0,0,2,0,43,'/1/43/','es_captacion_equipo',1,'es_captacion@verdnatura.es',0,0,0,0,NULL,NULL,'5700',NULL); -INSERT INTO `department` VALUES (150,'spainTeamLevanteIslands','EQUIPO ESPAÑA LEVANTE',79,80,1118,0,0,0,2,0,43,'/1/43/','es_levante_equipo',1,'es_levante@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL); -INSERT INTO `department` VALUES (151,'spainTeamNorthwest','EQUIPO ESPAÑA NOROESTE',81,82,7102,0,0,0,2,0,43,'/1/43/','es_noroeste_equipo',1,'es_noroeste@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL); -INSERT INTO `department` VALUES (152,'spainTeamNortheast','EQUIPO ESPAÑA NORESTE',83,84,1118,0,0,0,2,0,43,'/1/43/','es_noreste_equipo',1,'es_noreste@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL); -INSERT INTO `department` VALUES (153,'spainTeamSouth','EQUIPO ESPAÑA SUR',85,86,36578,0,0,0,2,0,43,'/1/43/','es_sur_equipo',1,'es_sur@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL); -INSERT INTO `department` VALUES (154,'spainTeamCenter','EQUIPO ESPAÑA CENTRO',87,88,4661,0,0,0,2,0,43,'/1/43/','es_centro_equipo',1,'es_centro@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL); -INSERT INTO `department` VALUES (155,'spainTeamVip','EQUIPO ESPAÑA VIP',89,90,5432,0,0,0,2,0,43,'/1/43/','es_vip_equipo',1,'es_vip@verdnatura.es',0,0,0,0,NULL,NULL,'5600',NULL); +INSERT INTO `department` VALUES (147,'spainTeamAsia','EQUIPO ESPAÑA ASIA',75,76,40214,0,0,0,2,0,43,'/1/43/','esA_equipo',1,'esA@verdnatura.es',0,0,0,0,NULL,NULL,'5500',NULL); +INSERT INTO `department` VALUES (148,'franceTeamCatchment','EQUIPO CAPTACIÓN FRANCIA',77,78,25178,0,0,0,2,0,43,'/1/43/',NULL,1,NULL,0,0,0,0,NULL,NULL,'6000',NULL); +INSERT INTO `department` VALUES (149,'spainTeamCatchment','EQUIPO ESPAÑA CAPTACIÓN',79,80,1203,0,0,0,2,0,43,'/1/43/','es_captacion_equipo',1,'es_captacion@verdnatura.es',0,0,0,0,NULL,NULL,'5700',NULL); +INSERT INTO `department` VALUES (150,'spainTeamLevanteIslands','EQUIPO ESPAÑA LEVANTE',81,82,1118,0,0,0,2,0,43,'/1/43/','es_levante_equipo',1,'es_levante@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL); +INSERT INTO `department` VALUES (151,'spainTeamNorthwest','EQUIPO ESPAÑA NOROESTE',83,84,7102,0,0,0,2,0,43,'/1/43/','es_noroeste_equipo',1,'es_noroeste@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL); +INSERT INTO `department` VALUES (152,'spainTeamNortheast','EQUIPO ESPAÑA NORESTE',85,86,1118,0,0,0,2,0,43,'/1/43/','es_noreste_equipo',1,'es_noreste@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL); +INSERT INTO `department` VALUES (153,'spainTeamSouth','EQUIPO ESPAÑA SUR',87,88,36578,0,0,0,2,0,43,'/1/43/','es_sur_equipo',1,'es_sur@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL); +INSERT INTO `department` VALUES (154,'spainTeamCenter','EQUIPO ESPAÑA CENTRO',89,90,4661,0,0,0,2,0,43,'/1/43/','es_centro_equipo',1,'es_centro@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL); +INSERT INTO `department` VALUES (155,'spainTeamVip','EQUIPO ESPAÑA VIP',91,92,5432,0,0,0,2,0,43,'/1/43/','es_vip_equipo',1,'es_vip@verdnatura.es',0,0,0,0,NULL,NULL,'5600',NULL); INSERT INTO `department` VALUES (156,NULL,'COCINA',37,38,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); +INSERT INTO `department` VALUES (157,NULL,'RECICLAJE',39,40,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL); INSERT INTO `docuware` VALUES (1,'deliveryNote','Albaranes cliente','find','find','N__ALBAR_N',NULL); INSERT INTO `docuware` VALUES (2,'deliveryNote','Albaranes cliente','store','Archivar','N__ALBAR_N',NULL); INSERT INTO `docuware` VALUES (3,'hr','RRHH','find','Búsqueda','N__DOCUMENTO',3); +INSERT INTO `itemPackingType` VALUES ('A','Altillo',1); INSERT INTO `itemPackingType` VALUES ('F','Fruta y Verdura',0); INSERT INTO `itemPackingType` VALUES ('H','Horizontal',1); INSERT INTO `itemPackingType` VALUES ('P','Pienso',0); @@ -2878,21 +2940,21 @@ INSERT INTO `state` VALUES (13,'En Reparto',11,4,'ON_DELIVERY',13,0,1,0,0,0,0,0, INSERT INTO `state` VALUES (14,'Preparado',6,2,'PREPARED',14,0,1,0,2,0,0,1,0,'warning'); INSERT INTO `state` VALUES (15,'Pte Recogida',12,4,'WAITING_FOR_PICKUP',15,0,1,0,0,0,0,0,0,NULL); INSERT INTO `state` VALUES (16,'Entregado',13,4,'DELIVERED',16,0,1,0,0,0,0,0,0,NULL); -INSERT INTO `state` VALUES (20,'Asignado',4,0,'PICKER_DESIGNED',20,1,0,0,0,0,0,2,0,'success'); +INSERT INTO `state` VALUES (20,'Asignado',4,1,'PICKER_DESIGNED',20,1,0,0,0,0,0,2,0,'success'); INSERT INTO `state` VALUES (21,'Retornado',4,2,'PRINTED_BACK',21,0,0,0,0,0,0,2,0,'success'); INSERT INTO `state` VALUES (22,'Pte. Ampliar',2,0,'EXPANDABLE',22,0,0,0,0,0,0,4,1,'alert'); -INSERT INTO `state` VALUES (23,'URGENTE',5,2,'LAST_CALL',23,1,0,1,0,0,0,4,1,'success'); +INSERT INTO `state` VALUES (23,'URGENTE',5,1,'LAST_CALL',23,1,0,1,0,0,0,4,1,'success'); INSERT INTO `state` VALUES (24,'Encadenado',4,0,'CHAINED',24,0,0,0,0,0,0,3,1,'success'); INSERT INTO `state` VALUES (25,'Embarcando',3,0,'BOARDING',25,1,0,0,0,0,0,3,0,'alert'); -INSERT INTO `state` VALUES (26,'Prep Previa',5,0,'PREVIOUS_PREPARATION',28,1,0,0,1,0,0,2,0,'warning'); -INSERT INTO `state` VALUES (28,'Previa OK',3,0,'OK PREVIOUS',28,1,0,1,1,1,1,3,0,'warning'); -INSERT INTO `state` VALUES (29,'Previa Impreso',4,0,'PRINTED PREVIOUS',29,1,0,1,0,0,1,2,0,'success'); -INSERT INTO `state` VALUES (31,'Polizon Impreso',4,2,'PRINTED STOWAWAY',29,1,0,1,0,0,1,2,0,'success'); -INSERT INTO `state` VALUES (33,'Auto_Impreso',4,0,'PRINTED_AUTO',29,1,0,1,0,0,1,2,0,'success'); +INSERT INTO `state` VALUES (26,'Prep Previa',5,1,'PREVIOUS_PREPARATION',28,1,0,0,1,0,0,2,0,'warning'); +INSERT INTO `state` VALUES (28,'Previa OK',3,1,'OK PREVIOUS',28,1,0,1,1,1,1,3,0,'warning'); +INSERT INTO `state` VALUES (29,'Previa Impreso',4,1,'PRINTED PREVIOUS',29,1,0,1,0,0,1,2,0,'success'); +INSERT INTO `state` VALUES (31,'Polizon Impreso',4,1,'PRINTED STOWAWAY',29,1,0,1,0,0,1,2,0,'success'); +INSERT INTO `state` VALUES (33,'Auto_Impreso',4,1,'PRINTED_AUTO',29,1,0,1,0,0,1,2,0,'success'); INSERT INTO `state` VALUES (34,'Pte Pago',3,0,'WAITING_FOR_PAYMENT',34,0,0,0,0,0,0,4,1,'alert'); INSERT INTO `state` VALUES (35,'Semi-Encajado',9,3,'HALF_PACKED',10,0,1,0,0,0,0,1,0,NULL); -INSERT INTO `state` VALUES (36,'Previa Revisando',3,0,'PREVIOUS_CONTROL',37,1,0,0,4,0,1,2,0,'warning'); -INSERT INTO `state` VALUES (37,'Previa Revisado',3,0,'PREVIOUS_CONTROLLED',29,1,0,1,0,0,1,2,0,'warning'); +INSERT INTO `state` VALUES (36,'Previa Revisando',3,1,'PREVIOUS_CONTROL',37,1,0,0,4,0,1,2,0,'warning'); +INSERT INTO `state` VALUES (37,'Previa Revisado',3,1,'PREVIOUS_CONTROLLED',29,1,0,1,0,0,1,2,0,'warning'); INSERT INTO `state` VALUES (38,'Prep Cámara',6,2,'COOLER_PREPARATION',14,0,0,0,2,0,0,2,0,'warning'); INSERT INTO `state` VALUES (42,'Entregado en parte',13,3,'PARTIAL_DELIVERED',16,0,1,0,0,0,0,0,0,NULL); INSERT INTO `state` VALUES (43,'Preparación por caja',6,2,'BOX_PICKING',42,0,0,0,2,0,0,2,0,'warning'); @@ -2902,7 +2964,7 @@ INSERT INTO `ticketUpdateAction` VALUES (2,'Convertir en maná','mana'); INSERT INTO `ticketCanAdvanceConfig` VALUES (1,5); -INSERT INTO `volumeConfig` VALUES (2.67,1.60,0.8,150,0.30,120,57,2.0,50,200,10,167.0); +INSERT INTO `volumeConfig` VALUES (1,2.67,1.60,0.8,150,0.30,120,57,2.0,50,200,10,167.0); INSERT INTO `workerActivityType` VALUES ('CLAIM','RECLAMACIONES'); INSERT INTO `workerActivityType` VALUES ('DELIVERY','REPARTO'); diff --git a/db/dump/.dump/privileges.sql b/db/dump/.dump/privileges.sql index 1d4fce1892..634cdc95f6 100644 --- a/db/dump/.dump/privileges.sql +++ b/db/dump/.dump/privileges.sql @@ -326,7 +326,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','printQueue','juan@db INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','preservedBoss','travel','alexm@%','0000-00-00 00:00:00','Insert,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','travel','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','hr','Cubos','alexm@%','0000-00-00 00:00:00','Select',''); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyerAssistant','itemType','jgallego@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','itemType','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','Cubos','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','salesPerson','Cubos','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','artificialBoss','state','alexm@%','0000-00-00 00:00:00','Select',''); @@ -561,7 +561,6 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','logistic','awb_component_t INSERT IGNORE INTO `tables_priv` VALUES ('','vncontrol','employee','accion','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','volumeConfig','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','currency','alexm@%','0000-00-00 00:00:00','Select',''); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyerBoss','tag','alexm@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','currency','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','creditClassification','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','creditInsurance','alexm@%','0000-00-00 00:00:00','Select',''); @@ -752,11 +751,11 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','dua','alexm@%','0000-0 INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','duaEntry','alexm@%','0000-00-00 00:00:00','Insert,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','expeditionTruck','alexm@%','0000-00-00 00:00:00','Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','srt','maintenance','moving','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Delete',''); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hrBoss','machineDetail','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hrBoss','machineDms','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hrBoss','machineDetail','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hrBoss','machineDms','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','claimManager','vehicle','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','awb','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update',''); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hrBoss','machine','alexm@%','0000-00-00 00:00:00','Select,Insert,Update',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hrBoss','machine','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','logistic','Entradas_dits','alexm@%','0000-00-00 00:00:00','Insert,Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','workerTimeControlMail','alexm@%','0000-00-00 00:00:00','Select,Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','bi','coolerBoss','rotacion','alexm@%','0000-00-00 00:00:00','Select',''); @@ -835,6 +834,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','bi','salesPerson','tarifa_component INSERT IGNORE INTO `tables_priv` VALUES ('','srt','employee','expeditionLog','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','bs','salesPerson','clientNewBorn','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','saleItemShelving__','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminBoss','ticketDms','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','srt','employee','expedition','alexm@%','0000-00-00 00:00:00','Update',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','itemShelvingStock','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','saleParking__','alexm@%','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); @@ -889,7 +889,6 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','supplierAgenc INSERT IGNORE INTO `tables_priv` VALUES ('','vn','packager','franceExpressConfig','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','manager','ticketLog','juan@10.5.1.2','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','productionAssi','ticketCollection','alexm@%','0000-00-00 00:00:00','Delete',''); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','ticketDms','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','ticketObservation','alexm@%','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logistic','ticketPackaging','alexm@%','0000-00-00 00:00:00','Insert',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','ticketPackaging','alexm@%','0000-00-00 00:00:00','Select',''); @@ -1240,7 +1239,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','hedera','grafana','visitAccess','ro INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','v_botanic_export','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','itemCost','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','bs','deliveryAssistant','m3','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','ticketDms','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','marketingBoss','itemTypeI18n','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryAssistant','time','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryAssistant','v_Articles_botanical','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','inventoryConfig','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); @@ -1285,7 +1284,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','company','juan@db-pr INSERT IGNORE INTO `tables_priv` VALUES ('','srt','grafana','buffer','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','greuge','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','item','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','','Select,Update'); -INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerBoss','itemShelving','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','cooler','itemShelving','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','agencyIncoming','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','addressObservation','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','negativeOrigin','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); @@ -1505,6 +1504,29 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemSoldOutTa INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemDurationTag','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','itemGrowingTag','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete',''); INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminBoss','receipt','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','machine','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','packagerBoss','awb','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','machineDetail','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','hr','machineDms','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','tag','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','packagerBoss','buy','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','packagerBoss','genericAllocation','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','packagerBoss','Tintas','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','productionCountry','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','teamBoss','workerTimeControlConfig','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','packagerBoss','Entradas','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','packagerBoss','Compres','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','packagerBoss','buySource','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','payment','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','administrative','Tickets','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','','Update'); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financialBoss','payMethod','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','delivery','roadmap','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','delivery','roadmapStop','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','delivery','roadmapAddress','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','roadmap','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','roadmapStop','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','roadmapAddress','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete',''); +INSERT IGNORE INTO `tables_priv` VALUES ('','vn','deliveryBoss','volumeConfig','jenkins@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','','Update'); /*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */; /*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */; @@ -1564,6 +1586,8 @@ INSERT IGNORE INTO `columns_priv` VALUES ('','pbx','grafana','sip','user_id','00 INSERT IGNORE INTO `columns_priv` VALUES ('','pbx','grafana','sip','extension','0000-00-00 00:00:00','Select'); INSERT IGNORE INTO `columns_priv` VALUES ('','account','grafana','user','name','0000-00-00 00:00:00','Select'); INSERT IGNORE INTO `columns_priv` VALUES ('','account','grafana','user','active','0000-00-00 00:00:00','Select'); +INSERT IGNORE INTO `columns_priv` VALUES ('','vn','deliveryBoss','volumeConfig','palletM3','0000-00-00 00:00:00','Update'); +INSERT IGNORE INTO `columns_priv` VALUES ('','vn2008','administrative','Tickets','Bultos','0000-00-00 00:00:00','Update'); INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','business','workerFk','0000-00-00 00:00:00','Select'); INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','business','id','0000-00-00 00:00:00','Select'); INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','business','departmentFk','0000-00-00 00:00:00','Select'); @@ -1975,9 +1999,8 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','util','productionAssi','midnight','F INSERT IGNORE INTO `procs_priv` VALUES ('','dipole','employee','expedition_add','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemshelving_transfer','PROCEDURE','alexm@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','coolerBoss','itempacking','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00'); -INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesPerson','ticket_clone','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','cache','employee','available_refresh','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); -INSERT IGNORE INTO `procs_priv` VALUES ('','vn','logistic','ticket_clone','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','ticket_doCmr','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','coolerBoss','ticket_clone','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','payment_add','PROCEDURE','jgallego@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hr','timebusiness_calculatebyuser','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); @@ -1992,7 +2015,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','cache','buyer','last_buy_refresh','P INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','supplierpackaging_reportsource','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','cache','buyer','stock_refresh','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','itemshelvingproblem','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); -INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','itemshelvingradar','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','cache','employee','visible_refresh','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','util','grafana','quarterfirstday','FUNCTION','juan@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hr','workertimecontrol_sendmailbydepartment','PROCEDURE','alexm@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00'); @@ -2162,6 +2184,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','collection_printstic INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','deviceproductionuser_getworker','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','ticket_printlabelprevious','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','ticket_isoutclosurezone','FUNCTION','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','packagerBoss','entry_lock','PROCEDURE','jgallego@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','ticketstatetoday_setstate','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','device_checklogin','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','worker_getfromhasmistake','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00'); @@ -2212,6 +2235,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','entry_getTransfe INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','entry_getTransfer','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','intrastat_estimateNet','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','artificialBoss','confection_controlSource','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','packagerBoss','item_comparative','PROCEDURE','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','util','developer','connection_kill','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','client_getRisk','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','account','developer','user_hasRole','FUNCTION','root@localhost','Execute','0000-00-00 00:00:00'); @@ -2243,6 +2267,12 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','saletracking_secto INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesAssistant','saleSplit','PROCEDURE','carlosap@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemShelvingSale_deleteAdded','PROCEDURE','guillermo@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','buy_getUltimate','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','packagerBoss','entry_isintrastat','FUNCTION','carlosap@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','packagerBoss','entry_clone','PROCEDURE','carlosap@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','packagerBoss','buy_getUltimate','PROCEDURE','carlosap@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesAssistant','ticket_clone','PROCEDURE','guillermo@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','deliveryBoss','roadmap_cloneDay','PROCEDURE','guillermo@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); +INSERT IGNORE INTO `procs_priv` VALUES ('','vn','deliveryBoss','getTimeBetweenRoadmapAddresses','FUNCTION','guillermo@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00'); /*!40000 ALTER TABLE `procs_priv` ENABLE KEYS */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -2257,6 +2287,7 @@ USE `mysql`; /*!40000 ALTER TABLE `global_priv` DISABLE KEYS */; INSERT IGNORE INTO `global_priv` VALUES ('','account','{\"access\": 0, \"is_role\": true,\"version_id\":100707}'); +INSERT IGNORE INTO `global_priv` VALUES ('','adminAssistant','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','adminBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','adminOfficer','{\"access\": 0, \"version_id\": 101106, \"is_role\": true}'); INSERT IGNORE INTO `global_priv` VALUES ('','administrative','{\"access\": 0, \"is_role\": true, \"version_id\": 101106}'); @@ -2307,6 +2338,7 @@ INSERT IGNORE INTO `global_priv` VALUES ('','marketing','{\"access\": 0, \"is_ro INSERT IGNORE INTO `global_priv` VALUES ('','marketingBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','officeBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','packager','{\"access\":0,\"version_id\":100707,\"is_role\":true}'); +INSERT IGNORE INTO `global_priv` VALUES ('','packagerBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','palletizer','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','palletizerBoss','{\"access\":0,\"version_id\":101106,\"is_role\":true}'); INSERT IGNORE INTO `global_priv` VALUES ('','preservedBoss','{\"access\":0,\"version_id\":100707,\"is_role\":true}'); diff --git a/db/dump/.dump/structure.sql b/db/dump/.dump/structure.sql index 97f7bc512d..ca8d360044 100644 --- a/db/dump/.dump/structure.sql +++ b/db/dump/.dump/structure.sql @@ -5132,7 +5132,7 @@ BEGIN DECLARE vCalc INT; DECLARE vWarehouseFk INT; - DECLARE cWarehouses CURSOR FOR + DECLARE cWarehouses CURSOR FOR SELECT id FROM vn.warehouse WHERE isInventory; @@ -5145,13 +5145,13 @@ BEGIN read_loop: LOOP SET vDone = FALSE; FETCH cWarehouses INTO vWarehouseFk; - + IF vDone THEN LEAVE read_loop; END IF; - + CALL cache.visible_refresh(vCalc, FALSE, vWarehouseFk); - + CREATE OR REPLACE TEMPORARY TABLE tVisible SELECT itemFk, SUM(visible) totalVisible FROM vn.itemShelving ish @@ -5160,7 +5160,7 @@ BEGIN JOIN vn.sector sc ON sc.id = p.sectorFk WHERE sc.warehouseFk = vWarehouseFk GROUP BY itemFk; - + INSERT INTO inventoryDiscrepancyDetail( warehouseFk, itemFk, @@ -5188,7 +5188,7 @@ BEGIN JOIN vn.ticketState ts ON ts.ticketFk = t.id JOIN vn.alertLevel al ON al.id = ts.alertLevel WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) - AND s.isPicked = FALSE + AND NOT s.isPicked AND al.code = 'FREE' AND t.warehouseFk = vWarehouseFk GROUP BY s.itemFk @@ -5196,7 +5196,6 @@ BEGIN ) s ON s.itemFk = v.item_id WHERE v.calc_id = vCalc AND NOT v.visible <=> tv.totalVisible; - END LOOP; CLOSE cWarehouses; @@ -6112,7 +6111,7 @@ BEGIN DELETE FROM bs.ventas_contables WHERE year = vYear - AND month = vMonth; + AND month = vMonth; DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; CREATE TEMPORARY TABLE tmp.ticket_list @@ -7044,7 +7043,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `available_refresh`( OUT `vCalc` INT, `vRefresh` INT, `vWarehouse` INT, - `vDated` DATE + `vAvailabled` DATETIME ) proc: BEGIN DECLARE vStartDate DATE; @@ -7053,6 +7052,7 @@ proc: BEGIN DECLARE vInventoryDate DATE; DECLARE vLifeScope DATE; DECLARE vWarehouseFkInventory INT; + DECLARE vDated DATE; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN @@ -7060,13 +7060,17 @@ proc: BEGIN RESIGNAL; END; - IF vDated < util.VN_CURDATE() THEN + IF vAvailabled < util.VN_CURDATE() THEN LEAVE proc; END IF; + SET vDated = DATE(vAvailabled); + + SET vAvailabled = vDated + INTERVAL HOUR(vAvailabled) HOUR; + CALL vn.item_getStock(vWarehouse, vDated, NULL); - SET vParams = CONCAT_WS('/', vWarehouse, vDated); + SET vParams = CONCAT_WS('/', vWarehouse, vAvailabled); CALL cache_calc_start (vCalc, vRefresh, 'available', vParams); IF !vRefresh THEN @@ -7128,11 +7132,10 @@ proc: BEGIN SELECT i.itemFk, i.landed, i.quantity FROM vn.itemEntryIn i JOIN itemRange ir ON ir.itemFk = i.itemFk - LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk WHERE i.landed >= vStartDate + AND IFNULL(i.availabled, i.landed) <= vAvailabled AND (ir.ended IS NULL OR i.landed <= ir.ended) AND i.warehouseInFk = vWarehouse - AND ISNULL(wf.entryFk) UNION ALL SELECT i.itemFk, i.shipped, i.quantity FROM vn.itemEntryOut i @@ -16760,12 +16763,12 @@ DELIMITER ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `accountingMovements_add`( - vYear INT, + vYear INT, vCompanyFk INT ) BEGIN /** - * Traslada la info de contabilidad generada en base a vn.XDiario a la tabla sage.movConta + * Traslada la info de contabilidad generada en base a vn.XDiario a la tabla sage.movConta * para poder ejecutar posteriormente el proceso de importación de datos de SQL Server * Solo traladará los asientos marcados con el campo vn.XDiario.enlazadoSage = FALSE * @vYear Año contable del que se quiere trasladar la información @@ -16783,6 +16786,7 @@ BEGIN DECLARE vInvoiceTypeInformativeCode VARCHAR(1); DECLARE vCountryCanariasCode, vCountryCeutaMelillaCode VARCHAR(2); DECLARE vCompanyCode INT; + DECLARE vHasErrorTax BOOL DEFAULT FALSE; SELECT SiglaNacion INTO vCountryCanariasCode FROM Naciones @@ -16804,12 +16808,12 @@ BEGIN FROM taxType WHERE code = 'import4'; - SELECT shipmentTransactionTypeFk, - definitiveExportTransactionTypeFk, + SELECT shipmentTransactionTypeFk, + definitiveExportTransactionTypeFk, pendingServiceTransactionTypeFk, company_getCode(vCompanyFk) INTO vTransactionExportTaxFreeFk, - vTransactionExportFk, + vTransactionExportFk, vDuaTransactionFk, vCompanyCode FROM config; @@ -16826,6 +16830,24 @@ BEGIN WHERE enlazadoSage = FALSE AND Asiento <> 1 ; + SELECT EXISTS ( + SELECT TRUE + FROM vn.XDiario x + JOIN vn.invoiceIn ii ON ii.id = x.CLAVE + JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id + LEFT JOIN TiposIva ti ON ti.CodigoIva = it.taxTypeSageFk + LEFT JOIN taxType tt ON tt.id = it.taxTypeSageFk + WHERE x.FECHA BETWEEN vDatedFrom AND vDatedTo + AND NOT x.enlazadoSage + AND x.empresa_id = vCompanyFk + AND it.taxTypeSageFk + AND (ti.CodigoIva IS NULL OR tt.id IS NULL) + ) INTO vHasErrorTax; + + IF vHasErrorTax tHEN + CALL util.throw ('Error in tables for received invoices tax'); + END IF; + CALL invoiceOut_manager(vYear, vCompanyFk); CALL invoiceIn_manager(vYear, vCompanyFk); @@ -17066,8 +17088,8 @@ BEGIN mci.FechaFacturaOriginal = x.FECHA_EX, mci.SuFacturaNo = x.FACTURAEX, mci.FechaOperacion = x.FECHA_OP, - mci.ImporteFactura = mci.ImporteFactura + - x.BASEEURO + + mci.ImporteFactura = mci.ImporteFactura + + x.BASEEURO + CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10, 2)) WHERE pm.description = 'HP Iva pendiente' AND mci.enlazadoSage = FALSE @@ -17086,7 +17108,7 @@ BEGIN mci.CodigoIva2 = vTaxImportFk, mci.IvaDeducible2 = TRUE, mci.ImporteFactura = mci.ImporteFactura + - x.BASEEURO + + x.BASEEURO + CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10, 2)) WHERE pm.description = 'HP Iva pendiente' AND mci.enlazadoSage = FALSE @@ -17104,8 +17126,8 @@ BEGIN mci.CodigoTransaccion3 = vDuaTransactionFk , mci.CodigoIva3 = vTaxImportSuperReducedFk, mci.IvaDeducible3 = TRUE, - mci.ImporteFactura = mci.ImporteFactura + - x.BASEEURO + + mci.ImporteFactura = mci.ImporteFactura + + x.BASEEURO + CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10, 2)) WHERE pm.description = 'HP Iva pendiente' AND mci.enlazadoSage = FALSE @@ -17139,14 +17161,14 @@ BEGIN OR CodigoTransaccion2 = vTransactionExportFk OR CodigoTransaccion3 = vTransactionExportFk OR CodigoTransaccion4 = vTransactionExportFk) - AND SiglaNacion IN (vCountryCanariasCode COLLATE utf8mb3_unicode_ci, + AND SiglaNacion IN (vCountryCanariasCode COLLATE utf8mb3_unicode_ci, vCountryCeutaMelillaCode COLLATE utf8mb3_unicode_ci); UPDATE movConta mc SET CodigoDivisa = 'USD', FactorCambio = TRUE, - ImporteCambio = ABS( CAST( IF( ImporteDivisa <> 0 AND ImporteCambio = 0, - ImporteAsiento / ImporteDivisa, + ImporteCambio = ABS( CAST( IF( ImporteDivisa <> 0 AND ImporteCambio = 0, + ImporteAsiento / ImporteDivisa, ImporteCambio) AS DECIMAL( 10, 2))) WHERE enlazadoSage = FALSE AND (ImporteCambio <> 0 OR ImporteDivisa <> 0 OR FactorCambio); @@ -17163,20 +17185,20 @@ BEGIN WITH client AS( SELECT DISTINCT c.id FROM sage.movConta mc - JOIN vn.client c ON c.accountingAccount = mc.CodigoCuenta - WHERE NOT enlazadoSage - ),supplier AS( + JOIN vn.client c ON c.accountingAccount = mc.CodigoCuenta + WHERE NOT enlazadoSage + ),supplier AS( SELECT DISTINCT s.id FROM sage.movConta mc - JOIN vn.supplier s ON s.account = mc.CodigoCuenta - WHERE NOT enlazadoSage + JOIN vn.supplier s ON s.account = mc.CodigoCuenta + WHERE NOT enlazadoSage ),clientSupplierSync AS( SELECT idClientSupplier, `type` - FROM sage.clientSupplier cs - WHERE isSync + FROM sage.clientSupplier cs + WHERE isSync ) SELECT idClientSupplier, `type` - FROM sage.clientSupplier cs + FROM sage.clientSupplier cs WHERE NOT isSync UNION SELECT id, 'C' @@ -17184,7 +17206,7 @@ BEGIN LEFT JOIN clientSupplierSync cs ON cs.idClientSupplier = c.id AND cs.Type ='C' WHERE cs.idClientSupplier IS NULL - UNION + UNION SELECT id, 'P' FROM supplier s LEFT JOIN clientSupplierSync cs ON cs.idClientSupplier = s.id @@ -17196,7 +17218,7 @@ BEGIN INSERT IGNORE INTO sage.clientSupplier (companyFk, `type`, idClientSupplier, isSync) SELECT vCompanyCode, `type`, idClientSupplier, FALSE FROM tmp.clientSupplier; - + DROP TEMPORARY TABLE tmp.clientSupplier; CALL pgc_add(vCompanyFk); @@ -26037,7 +26059,8 @@ DROP TABLE IF EXISTS `agencyIncoming`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `agencyIncoming` ( `agencyModeFk` int(11) NOT NULL, - PRIMARY KEY (`agencyModeFk`) + PRIMARY KEY (`agencyModeFk`), + CONSTRAINT `fk_agencyIncoming_agencyMode` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Agencias de entrada de mercancias'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -26105,6 +26128,19 @@ CREATE TABLE `agencyMode` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `agencyModeIncoming` +-- + +DROP TABLE IF EXISTS `agencyModeIncoming`; +/*!50001 DROP VIEW IF EXISTS `agencyModeIncoming`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `agencyModeIncoming` AS SELECT + 1 AS `id`, + 1 AS `name` */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `agencyModeItemType` -- @@ -26419,6 +26455,7 @@ CREATE TABLE `awb` ( `hasFreightPrepaid` tinyint(3) DEFAULT 0, `invoiceInPaletizedFk` mediumint(8) unsigned DEFAULT NULL, `propertyNumber` int(11) DEFAULT NULL, + `costPerKg` decimal(10,2) unsigned DEFAULT NULL COMMENT 'Tarifa que indica a cuanto cuesta el kilo en ese vuelo', PRIMARY KEY (`id`), UNIQUE KEY `codigo_UNIQUE` (`code`,`year`), KEY `proveedor_id` (`transitoryFk`), @@ -26961,6 +26998,7 @@ CREATE TABLE `business` ( KEY `business_fk_editor` (`editorFk`), CONSTRAINT `business_FK` FOREIGN KEY (`workerBusinessProfessionalCategoryFk`) REFERENCES `professionalCategory` (`id`) ON UPDATE CASCADE, CONSTRAINT `business_calendarTypeFk` FOREIGN KEY (`calendarTypeFk`) REFERENCES `calendarType` (`id`) ON UPDATE CASCADE, + CONSTRAINT `business_companyCodeFk` FOREIGN KEY (`companyCodeFk`) REFERENCES `company` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `business_departmentFk` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON UPDATE CASCADE, CONSTRAINT `business_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`), CONSTRAINT `business_occupationCodeFk` FOREIGN KEY (`occupationCodeFk`) REFERENCES `occupationCode` (`code`) ON UPDATE CASCADE, @@ -32301,7 +32339,8 @@ SET character_set_client = utf8; 1 AS `quantity`, 1 AS `isReceived`, 1 AS `isVirtualStock`, - 1 AS `entryFk` */; + 1 AS `entryFk`, + 1 AS `availabled` */; SET character_set_client = @saved_cs_client; -- @@ -33607,6 +33646,7 @@ CREATE TABLE `mandate` ( `created` timestamp NULL DEFAULT current_timestamp(), `finished` timestamp NULL DEFAULT NULL, `mandateTypeFk` smallint(5) NOT NULL, + `editorFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `mandato_fgkey1_idx` (`clientFk`), KEY `mandato_fgkey2_idx` (`companyFk`), @@ -33617,6 +33657,36 @@ CREATE TABLE `mandate` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `mandateLog` +-- + +DROP TABLE IF EXISTS `mandateLog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mandateLog` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `originFk` int(11) DEFAULT NULL, + `userFk` int(10) unsigned DEFAULT NULL, + `action` set('insert','update','delete','select') NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, + `changedModel` enum('client') NOT NULL DEFAULT 'client', + `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)), + `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)), + `changedModelId` int(11) NOT NULL, + `changedModelValue` varchar(45) DEFAULT NULL, + `summaryId` varchar(30) DEFAULT NULL, + `reason` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `logMandate_userFk` (`userFk`), + KEY `mandateLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`), + KEY `mandateLog_originFk` (`originFk`,`creationDate`), + KEY `mandateLog_creationDate_IDX` (`creationDate` DESC) USING BTREE, + CONSTRAINT `mandateUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `mandateType` -- @@ -34364,6 +34434,7 @@ CREATE TABLE `packaging` ( `isPallet` tinyint(1) NOT NULL DEFAULT 0, `isPlantTray` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'The container is a plant tray. Used to restrict the picking of full plant trays, to make previous picking.', `isActive` tinyint(1) DEFAULT 1, + `flippingCost` decimal(10,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`id`), KEY `packaging_fk1` (`itemFk`), KEY `packaging_fk2_idx` (`freightItemFk`), @@ -35080,7 +35151,9 @@ CREATE TABLE `postCode` ( `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`code`,`townFk`), KEY `postCodeTownFk_idx` (`townFk`), - CONSTRAINT `postCodeTownFk` FOREIGN KEY (`townFk`) REFERENCES `town` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE + KEY `postCode_zoneGeo_FK` (`geoFk`), + CONSTRAINT `postCodeTownFk` FOREIGN KEY (`townFk`) REFERENCES `town` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `postCode_zoneGeo_FK` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -35821,8 +35894,10 @@ CREATE TABLE `province` ( KEY `warehouse_Id` (`warehouseFk`), KEY `provicne_zone_fk_idx` (`zoneFk`), KEY `province_FK` (`autonomyFk`), + KEY `province_zoneGeo_FK` (`geoFk`), CONSTRAINT `province_FK` FOREIGN KEY (`autonomyFk`) REFERENCES `autonomy` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `province_ibfk_1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE, + CONSTRAINT `province_zoneGeo_FK` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE, CONSTRAINT `province_zone_FK` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `warehouse_Id` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; @@ -36056,7 +36131,6 @@ CREATE TABLE `recovery` ( PRIMARY KEY (`id`), KEY `cliente_idx` (`clientFk`), KEY `recovery_fk_editor` (`editorFk`), - CONSTRAINT `cliente333` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE, CONSTRAINT `cliente_cliente` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE, CONSTRAINT `recovery_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='En esta tabla apuntaremos los acuerdos de recobro semanal a '; @@ -36173,34 +36247,44 @@ DROP TABLE IF EXISTS `roadmap`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `roadmap` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(45) NOT NULL, + `name` varchar(45) DEFAULT NULL, + `roadmapAddressFk` int(11) DEFAULT NULL, `tractorPlate` varchar(10) DEFAULT NULL, - `trailerPlate` varchar(12) DEFAULT NULL, + `trailerPlate` varchar(10) DEFAULT NULL, + `dollyPlate` varchar(10) DEFAULT NULL COMMENT 'Vehículo sin motor diseñado para conectarse a una unidad tractora, un camión o un vehículo tractor con fuerte potencia de tracción', + `tugPlate` varchar(10) DEFAULT NULL, `phone` varchar(15) DEFAULT NULL, `supplierFk` int(10) unsigned DEFAULT NULL, - `etd` datetime NOT NULL, + `etd` datetime NOT NULL COMMENT 'Tiempo estimado de salida', `observations` varchar(255) DEFAULT NULL, `created` timestamp NULL DEFAULT current_timestamp(), - `userFk` int(10) unsigned DEFAULT NULL, `price` decimal(10,2) DEFAULT NULL, `driverName` varchar(45) DEFAULT NULL, + `driver1Fk` int(10) unsigned DEFAULT NULL, + `driver2Fk` int(10) unsigned DEFAULT NULL, + `driverChangeName` varchar(45) DEFAULT NULL, + `driverChangeFk` int(10) unsigned DEFAULT NULL, `kmStart` mediumint(9) DEFAULT NULL, `kmEnd` mediumint(9) DEFAULT NULL, `started` datetime DEFAULT NULL, `finished` datetime DEFAULT NULL, - `m3` int(10) unsigned DEFAULT NULL, - `driver2Fk` int(10) unsigned DEFAULT NULL, - `driver1Fk` int(10) unsigned DEFAULT NULL, + `m3` int(10) unsigned DEFAULT NULL COMMENT 'Capacidad máxima del remolque', + `editorFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), - KEY `userFk` (`userFk`), KEY `roadmap_supplierFk` (`supplierFk`), - KEY `roadmap_worker_FK` (`driver1Fk`), - KEY `roadmap_worker_FK_2` (`driver2Fk`), - CONSTRAINT `roadmap_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE, + KEY `roadmap_etd_IDX` (`etd`) USING BTREE, + KEY `roadmap_roadmapAddress_FK` (`roadmapAddressFk`), + KEY `roadmap_driver_FK` (`driver1Fk`), + KEY `roadmap_driver_FK2` (`driver2Fk`), + KEY `roadmap_driverChange_FK` (`driverChangeFk`), + KEY `roadmap_user_Fk` (`editorFk`), + CONSTRAINT `roadmap_driverChange_FK` FOREIGN KEY (`driverChangeFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, + CONSTRAINT `roadmap_driver_FK` FOREIGN KEY (`driver1Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, + CONSTRAINT `roadmap_driver_FK2` FOREIGN KEY (`driver2Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, + CONSTRAINT `roadmap_roadmapAddress_FK` FOREIGN KEY (`roadmapAddressFk`) REFERENCES `roadmapAddress` (`addressFk`) ON UPDATE CASCADE, CONSTRAINT `roadmap_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, - CONSTRAINT `roadmap_worker_FK` FOREIGN KEY (`driver1Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, - CONSTRAINT `roadmap_worker_FK_2` FOREIGN KEY (`driver2Fk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Troncales diarios que se contratan'; + CONSTRAINT `roadmap_user_Fk` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Rutas troncales (trailers)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36215,9 +36299,22 @@ CREATE TABLE `roadmapAddress` ( `isActive` tinyint(4) DEFAULT 1, PRIMARY KEY (`addressFk`), CONSTRAINT `roadmapAddress_address_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Direcciones de los troncales'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Direcciones de los troncales o también llamados puntos de distribución'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `roadmapEta` +-- + +DROP TABLE IF EXISTS `roadmapEta`; +/*!50001 DROP VIEW IF EXISTS `roadmapEta`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `roadmapEta` AS SELECT + 1 AS `id`, + 1 AS `eta` */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `roadmapStop` -- @@ -36228,22 +36325,22 @@ DROP TABLE IF EXISTS `roadmapStop`; CREATE TABLE `roadmapStop` ( `id` int(11) NOT NULL AUTO_INCREMENT, `roadmapFk` int(10) unsigned DEFAULT NULL, - `addressFk` int(11) DEFAULT NULL, + `roadmapAddressFk` int(11) DEFAULT NULL, `eta` datetime DEFAULT NULL COMMENT 'Estimated time of arrival', `description` varchar(45) NOT NULL, `bufferFk` int(11) DEFAULT NULL COMMENT 'buffer destino de las cajas', `created` timestamp NULL DEFAULT current_timestamp(), - `userFk` int(10) unsigned DEFAULT NULL, + `editorFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `expeditionTruck_idx1` (`eta`), KEY `expeditionTruck_FK` (`bufferFk`), - KEY `expeditionTruck_FK_2` (`roadmapFk`), - KEY `expeditionTruck_FK_3` (`userFk`), - KEY `roadmapStop_roadmapAddress_FK` (`addressFk`), + KEY `expeditionTruck_FK_3` (`editorFk`), + KEY `roadmapStop_roadmapAddress_FK` (`roadmapAddressFk`), + KEY `roadmapStop_roadmap_FK` (`roadmapFk`), CONSTRAINT `expeditionTruck_FK` FOREIGN KEY (`bufferFk`) REFERENCES `srt`.`buffer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, - CONSTRAINT `expeditionTruck_FK_2` FOREIGN KEY (`roadmapFk`) REFERENCES `roadmap` (`id`) ON UPDATE CASCADE, - CONSTRAINT `expeditionTruck_FK_3` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE, - CONSTRAINT `roadmapStop_roadmapAddress_FK` FOREIGN KEY (`addressFk`) REFERENCES `roadmapAddress` (`addressFk`) ON UPDATE CASCADE + CONSTRAINT `expeditionTruck_FK_3` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE, + CONSTRAINT `roadmapStop_roadmapAddress_FK` FOREIGN KEY (`roadmapAddressFk`) REFERENCES `roadmapAddress` (`addressFk`) ON UPDATE CASCADE, + CONSTRAINT `roadmapStop_roadmap_FK` FOREIGN KEY (`roadmapFk`) REFERENCES `roadmap` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Distintas paradas que hacen los trocales'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -36303,26 +36400,26 @@ CREATE TABLE `route` ( `cost` double unsigned DEFAULT NULL, `m3` decimal(10,1) unsigned DEFAULT NULL, `description` text DEFAULT NULL, - `zoneFk` int(11) DEFAULT NULL, `priority` int(11) NOT NULL DEFAULT 0, `invoiceInFk` mediumint(8) unsigned DEFAULT NULL, `beachFk` int(11) DEFAULT NULL, `commissionWorkCenterFk` int(11) DEFAULT NULL COMMENT 'WorkerCenter que gestiona la ruta', - `editorFk` int(10) unsigned DEFAULT NULL, `dated` date NOT NULL, + `roadmapStopFk` int(11) DEFAULT NULL, + `editorFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `Id_Agencia` (`agencyModeFk`), KEY `Fecha` (`created`), KEY `gestdoc_id` (`gestdocFk`), KEY `route_ibfk_2_idx` (`workerFk`), - KEY `fk_route_1_idx` (`zoneFk`), KEY `asdfasdf_idx` (`invoiceInFk`), KEY `route_idxIsOk` (`isOk`), KEY `route_WorkCenterFk_idx` (`commissionWorkCenterFk`), KEY `route_fk_editor` (`editorFk`), KEY `route_vehicleFk` (`vehicleFk`), KEY `route_firstEditorFk` (`firstEditorFk`), - CONSTRAINT `fk_route_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + KEY `route_roadmapStop_FK` (`roadmapStopFk`), + KEY `route_dated_IDX` (`dated`) USING BTREE, CONSTRAINT `route_WorkCenterFk` FOREIGN KEY (`commissionWorkCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE, CONSTRAINT `route_firstEditorFk` FOREIGN KEY (`firstEditorFk`) REFERENCES `account`.`user` (`id`), CONSTRAINT `route_fk5` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, @@ -36330,6 +36427,7 @@ CREATE TABLE `route` ( CONSTRAINT `route_ibfk_1` FOREIGN KEY (`gestdocFk`) REFERENCES `dms` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `route_ibfk_2` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `route_invoiceInFk` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `route_roadmapStop_FK` FOREIGN KEY (`roadmapStopFk`) REFERENCES `roadmapStop` (`id`) ON UPDATE CASCADE, CONSTRAINT `route_vehicleFk` FOREIGN KEY (`vehicleFk`) REFERENCES `vehicle` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -37749,13 +37847,13 @@ CREATE TABLE `solunionCAP` ( /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `sorter` +-- Table structure for table `sorter__` -- -DROP TABLE IF EXISTS `sorter`; +DROP TABLE IF EXISTS `sorter__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `sorter` ( +CREATE TABLE `sorter__` ( `id` int(11) NOT NULL DEFAULT 0, `created` datetime NOT NULL, `routeFk` int(10) unsigned NOT NULL, @@ -37772,7 +37870,7 @@ CREATE TABLE `sorter` ( `palletOrder` int(5) DEFAULT NULL, `lungGrow` int(11) DEFAULT 0, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2025-01-22'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37895,13 +37993,13 @@ CREATE TABLE `splitFilter` ( /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `splitLine` +-- Table structure for table `splitLine__` -- -DROP TABLE IF EXISTS `splitLine`; +DROP TABLE IF EXISTS `splitLine__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `splitLine` ( +CREATE TABLE `splitLine__` ( `id` int(11) NOT NULL AUTO_INCREMENT, `splitFk` int(11) NOT NULL, `itemFk` int(11) DEFAULT NULL, @@ -37910,8 +38008,8 @@ CREATE TABLE `splitLine` ( KEY `Id_Split` (`splitFk`), KEY `Id_Compra` (`buyFk`), CONSTRAINT `Id_Compra` FOREIGN KEY (`buyFk`) REFERENCES `buy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `splitLine_ibfk_1` FOREIGN KEY (`splitFk`) REFERENCES `split` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; + CONSTRAINT `splitLine___ibfk_1` FOREIGN KEY (`splitFk`) REFERENCES `split` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='@deprecated 2025-01-22'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38415,6 +38513,7 @@ CREATE TABLE `tag` ( `unit` varchar(45) DEFAULT NULL, `ediTypeFk` varchar(3) DEFAULT NULL, `overwrite` varchar(45) DEFAULT NULL COMMENT 'nombre del campo de item a sobreescribir con el valor del tag, hay que añadir el código correspondiente en item_refreshTags', + `validationRegex` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tagNameIdx` (`name`,`ediTypeFk`), UNIQUE KEY `tagEdiTypeFkIdx` (`ediTypeFk`) @@ -39429,7 +39528,9 @@ CREATE TABLE `town` ( PRIMARY KEY (`id`), KEY `name_idx` (`name`), KEY `townProvinceFk` (`provinceFk`), - CONSTRAINT `townProvinceFk` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + KEY `town_zoneGeo_FK` (`geoFk`), + CONSTRAINT `townProvinceFk` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `town_zoneGeo_FK` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -39599,20 +39700,21 @@ CREATE TABLE `travel` ( `landingHour` time DEFAULT NULL, `warehouseInFk` smallint(6) unsigned DEFAULT NULL, `warehouseOutFk` smallint(6) unsigned DEFAULT NULL, - `ref` varchar(20) DEFAULT NULL, + `ref` varchar(25) DEFAULT NULL, `isDelivered` tinyint(1) NOT NULL DEFAULT 0, `isReceived` tinyint(1) NOT NULL DEFAULT 0, `m3` decimal(10,2) unsigned DEFAULT NULL, `kg` decimal(10,0) unsigned DEFAULT NULL, `cargoSupplierFk` int(11) DEFAULT NULL, `totalEntries` tinyint(4) unsigned DEFAULT 0, - `appointment` datetime DEFAULT NULL, + `appointment__` datetime DEFAULT NULL COMMENT '@deprecated 2025-01-28', `agencyModeFk` int(11) DEFAULT NULL, `clonedFrom` int(11) DEFAULT NULL, `editorFk` int(10) unsigned DEFAULT NULL, `awbFk` smallint(11) unsigned DEFAULT NULL, `daysInForward` int(10) unsigned DEFAULT NULL COMMENT 'Cuando es una redada, indica el número de días que se añadirán a la fecha de hoy para establecer el landed. NULL si no es una redada', `isRaid` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Redada', + `availabled` datetime DEFAULT NULL COMMENT 'Indicates the moment in time when the goods become available for picking', PRIMARY KEY (`id`), UNIQUE KEY `shipment_1` (`shipped`,`landed`,`warehouseInFk`,`warehouseOutFk`,`agencyModeFk`,`ref`), KEY `shipment` (`shipped`), @@ -39778,6 +39880,7 @@ CREATE TABLE `travelThermograph` ( `maxTemperature` decimal(5,2) DEFAULT NULL, `minTemperature` decimal(5,2) DEFAULT NULL, `editorFk` int(10) unsigned DEFAULT NULL, + `agencyModeFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `thermograph_fk_idx` (`thermographFk`), KEY `gestdoc_fk_idx` (`dmsFk`), @@ -39785,11 +39888,13 @@ CREATE TABLE `travelThermograph` ( KEY `warehouse_id` (`warehouseFk`), KEY `travelThermographTemperatureFgn` (`temperatureFk`), KEY `travelThermograph_fk_editor` (`editorFk`), + KEY `travelThermograph_agencyIncoming_fk` (`agencyModeFk`), CONSTRAINT `travelThermographDmsFgn` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `travelThermographTemperatureFgn` FOREIGN KEY (`temperatureFk`) REFERENCES `temperature` (`code`), CONSTRAINT `travelThermographThermographFgn` FOREIGN KEY (`thermographFk`) REFERENCES `thermograph` (`id`) ON UPDATE CASCADE, CONSTRAINT `travelThermographTravelFgn` FOREIGN KEY (`travelFk`) REFERENCES `travel` (`id`), CONSTRAINT `travelThermographWarehouseFgn` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE, + CONSTRAINT `travelThermograph_agencyIncoming_fk` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyIncoming` (`agencyModeFk`) ON UPDATE CASCADE, CONSTRAINT `travelThermograph_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Registra cada termografo que se ha introducido en cada travel'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -39924,6 +40029,7 @@ CREATE TABLE `vehicle` ( `supplierCoolerFk` int(10) unsigned DEFAULT NULL, `vin` varchar(50) DEFAULT NULL, `bankPolicyFk` int(11) DEFAULT NULL, + `typeFk` enum('car','van','truck','trailer','tug','dolly','trailerLink') NOT NULL DEFAULT 'van', PRIMARY KEY (`id`), UNIQUE KEY `vehicle_UN` (`numberPlate`), KEY `empresa_id` (`companyFk`), @@ -40135,6 +40241,7 @@ DROP TABLE IF EXISTS `volumeConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `volumeConfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, `palletM3` decimal(10,2) DEFAULT NULL COMMENT 'metros cúbicos', `trolleyM3` decimal(10,2) DEFAULT NULL COMMENT 'metros cúbicos', `dutchCompressionRate` double NOT NULL DEFAULT 1, @@ -40146,7 +40253,8 @@ CREATE TABLE `volumeConfig` ( `minTicketVolume` int(11) NOT NULL DEFAULT 75 COMMENT 'volumen mínimo, en litros, para que un pedido sea preparable', `shelveVolume` int(11) DEFAULT 200 COMMENT 'volumen en litros de una bandeja standard, a efectos de los sacadores', `minTicketValue` int(11) NOT NULL DEFAULT 50, - `aerealVolumetricDensity` decimal(10,1) DEFAULT 167.0 COMMENT 'factor de conversión para calcular el peso tasable aereo' + `aerealVolumetricDensity` decimal(10,1) DEFAULT 167.0 COMMENT 'factor de conversión para calcular el peso tasable aereo', + PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='almacena el valor standard para volumenes convencionales de Verdnatura, en metros cúbicos'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -43867,6 +43975,79 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 DROP FUNCTION IF EXISTS `getTimeBetweenRoadmapAddresses` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +DELIMITER ;; +CREATE DEFINER=`vn`@`localhost` FUNCTION `getTimeBetweenRoadmapAddresses`(vRoadmapAddressFrom INT, + vRoadmapAddressTo INT +) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Retorna el tiempo en segundos que se suele tardar en ir + * de un punto de distribución a otro en una ruta troncal. + * + * @param vRoadmapAddressFrom Punto de distribución de origen + * @param vRoadmapAddressTo Punto de distribución de destino + * @return Tiempo en segundos + */ + DECLARE vSeconds INT; + + WITH wRoadmapStop AS ( + SELECT ROW_NUMBER() OVER(PARTITION BY roadmapFk ORDER BY eta) `sequence`, + roadmapFk, + roadmapAddressFk, + eta + FROM vn.roadmapStop + WHERE roadmapFk IS NOT NULL + AND roadmapAddressFk IS NOT NULL + AND eta IS NOT NULL + ) + SELECT AVG(TIME_TO_SEC(TIMEDIFF(rsTo.eta, rsFrom.eta))) INTO vSeconds + FROM wRoadmapStop rsFrom + JOIN wRoadmapStop rsTo ON rsTo.roadmapFk = rsFrom.roadmapFk + WHERE rsFrom.roadmapAddressFk = vRoadmapAddressFrom + AND rsTo.roadmapAddressFk = vRoadmapAddressTo + AND rsFrom.`sequence` + 1 = rsTo.`sequence`; + + IF NOT IFNULL(vSeconds, 0) THEN + WITH wRoadmap AS ( + SELECT id, + roadmapAddressFk, + etd + FROM vn.roadmap + WHERE roadmapAddressFk = vRoadmapAddressFrom + AND etd IS NOT NULL + ), wRoadmapStop AS ( + SELECT ROW_NUMBER() OVER(PARTITION BY roadmapFk ORDER BY eta) `sequence`, + roadmapFk, + roadmapAddressFk, + eta + FROM vn.roadmapStop + WHERE roadmapFk IS NOT NULL + AND roadmapAddressFk = vRoadmapAddressTo + AND eta IS NOT NULL + ) + SELECT AVG(TIME_TO_SEC(TIMEDIFF(rsTo.eta, rFrom.etd))) INTO vSeconds + FROM wRoadmap rFrom + JOIN wRoadmapStop rsTo ON rsTo.roadmapFk = rFrom.id + AND rsTo.`sequence` = 1; + END IF; + + RETURN vSeconds; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; /*!50003 DROP FUNCTION IF EXISTS `getUser` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -54725,23 +54906,34 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; DELIMITER ;; -CREATE DEFINER=`vn`@`localhost` PROCEDURE `entry_clone`(vSelf INT) +CREATE DEFINER=`vn`@`localhost` PROCEDURE `entry_clone`( + vSelf INT, + OUT vOutputEntryFk INT +) BEGIN /** * clones an entry. * * @param vSelf The entry id + * @param vOutputEntryFk The new entry id */ DECLARE vNewEntryFk INT; - START TRANSACTION; + DECLARE vIsRequiredTx BOOL DEFAULT NOT @@in_transaction; + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + CALL util.tx_rollback(vIsRequiredTx); + RESIGNAL; + END; + + CALL util.tx_start(vIsRequiredTx); CALL entry_cloneHeader(vSelf, vNewEntryFk, NULL); CALL entry_copyBuys(vSelf, vNewEntryFk); - COMMIT; + CALL util.tx_commit(vIsRequiredTx); + SET vOutputEntryFk = vNewEntryFk; - SELECT vNewEntryFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -55588,14 +55780,14 @@ BEGIN read_loop: LOOP SET vDone = FALSE; - + FETCH cur INTO vBuyFk, vIshStickers, vBuyStickers; IF vDone THEN LEAVE read_loop; END IF; - IF vIshStickers = vBuyStickers THEN + IF vIshStickers = vBuyStickers THEN UPDATE buy SET entryFk = vToEntryFk WHERE id = vBuyFk; @@ -55715,6 +55907,177 @@ BEGIN SELECT vNewEntryFk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entry_transfer` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +DELIMITER ;; +CREATE DEFINER=`vn`@`localhost` PROCEDURE `entry_transfer`( + vOriginalEntry INT, + OUT vNewEntryFk INT + ) +BEGIN +/** + * Adelanta a mañana la mercancia de una entrada a partir de lo que hay ubicado en el almacén + * + * @param vOriginalEntry entrada que se quiera adelantar + * @param vNewEntry nueva entrada creada + */ + DECLARE vTravelFk INT; + DECLARE vWarehouseFk INT; + DECLARE vWarehouseInFk INT; + DECLARE vWarehouseOutFk INT; + DECLARE vRef INT; + DECLARE vIsReceived INT; + DECLARE vAgencyModeFk INT; + DECLARE vTomorrow DATETIME DEFAULT util.tomorrow(); + DECLARE vCurDate DATE DEFAULT util.VN_CURDATE(); + + DECLARE vIsRequiredTx BOOL DEFAULT NOT @@in_transaction; + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + CALL util.tx_rollback(vIsRequiredTx); + RESIGNAL; + END; + + -- Clonar la entrada + CALL entry_clone(vOriginalEntry, vNewEntryFk); + + CALL util.tx_start(vIsRequiredTx); + + /* Hay que crear un nuevo travel, con salida hoy y llegada mañana y + asignar la entrada nueva al nuevo travel.*/ + SELECT t.warehouseInFk, t.warehouseOutFk, t.`ref`, t.isReceived, t.agencyModeFk + INTO vWarehouseInFk, vWarehouseOutFk, vRef, vIsReceived, vAgencyModeFk + FROM travel t + JOIN entry e ON e.travelFk = t.id + WHERE e.id = vOriginalEntry; + + SELECT id INTO vTravelFk + FROM travel t + WHERE shipped = vCurDate + AND landed = vTomorrow + AND warehouseInFk = vWarehouseInFk + AND warehouseOutFk = vWarehouseOutFk + AND `ref` = vRef + AND isReceived =vIsReceived + AND agencyModeFk = vAgencyModeFk; + + IF vTravelFk IS NULL THEN + INSERT INTO travel( + shipped, + landed, + warehouseInFk, + warehouseOutFk, + `ref`, + isReceived, + agencyModeFk) + SELECT vCurDate, + vTomorrow, + t.warehouseInFk, + t.warehouseOutFk, + t.`ref`, + t.isReceived, + t.agencyModeFk + FROM travel t + JOIN entry e ON e.travelFk = t.id + WHERE e.id = vOriginalEntry; + + SET vTravelFk = LAST_INSERT_ID(); + END IF; + + UPDATE entry + SET travelFk = vTravelFk, + evaNotes = vOriginalEntry + WHERE id = vNewEntryFk; + + -- Poner a 0 las cantidades + UPDATE buy b + SET b.quantity = 0, b.stickers = 0 + WHERE b.entryFk = vNewEntryFk; + + -- Eliminar duplicados + DELETE b + FROM buy b + LEFT JOIN (SELECT b.id, b.itemFk + FROM buy b + WHERE b.entryFk = vNewEntryFk + GROUP BY b.itemFk) tBuy ON tBuy.id = b.id + WHERE b.entryFk = vNewEntryFk + AND tBuy.id IS NULL; + + SELECT t.warehouseInFk INTO vWarehouseFk + FROM travel t + JOIN entry e ON e.travelFk = t.id + WHERE e.id = vOriginalEntry; + + /* Actualizar nueva entrada con lo que no está ubicado HOY, + descontando lo vendido HOY de esas ubicaciones*/ + CREATE OR REPLACE TEMPORARY TABLE buys + WITH tBuy AS ( + SELECT b.itemFk, SUM(b.quantity) totalQuantity + FROM vn.buy b + WHERE b.entryFk = vOriginalEntry + GROUP BY b.itemFk + ), + itemShelvings AS ( + SELECT ish.itemFk, SUM(ish.visible) visible + FROM vn.itemShelving ish + JOIN vn.shelving sh ON sh.id = ish.shelvingFk + JOIN vn.parking p ON p.id = sh.parkingFk + JOIN vn.sector s ON s.id = p.sectorFk + JOIN vn.buy b ON b.id = ish.buyFk + JOIN vn.entry e ON e.id = b.entryFk + JOIN tBuy t ON t.itemFk = ish.itemFk + WHERE s.warehouseFk = vWarehouseFk + AND sh.parked >= vCurDate + GROUP BY ish.itemFk + ), + sales AS ( + SELECT s.itemFk, SUM(s.quantity) sold + FROM vn.ticket t + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id + JOIN vn.itemShelving is2 ON is2.id = iss.itemShelvingFk + JOIN vn.shelving s2 ON s2.id = is2.shelvingFk + JOIN tBuy t ON t.itemFk = s.itemFk + WHERE t.shipped BETWEEN vCurDate AND util.dayend(vCurDate) + AND s2.parked >= vCurDate + GROUP BY s.itemFk + ) + SELECT tmp.itemFk, + IFNULL(iss.visible, 0) visible, + tmp.totalQuantity, + IFNULL(s.sold, 0) sold + FROM tBuy tmp + LEFT JOIN itemShelvings iss ON tmp.itemFk = iss.itemFk + LEFT JOIN sales s ON s.itemFk = tmp.itemFk + WHERE visible < tmp.totalQuantity + OR iss.itemFk IS NULL; + + UPDATE buy b + JOIN buys tmp ON tmp.itemFk = b.itemFk + SET b.quantity = tmp.totalQuantity - tmp.visible - tmp.sold + WHERE b.entryFk = vNewEntryFk; + + -- Limpia la nueva entrada + DELETE FROM buy WHERE entryFk = vNewEntryFk AND quantity = 0; + + CALL util.tx_commit(vIsRequiredTx); + + CALL cache.visible_refresh(@c,TRUE,vWarehouseFk); + CALL cache.available_refresh(@c, TRUE, vWarehouseFk, vCurDate); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59978,226 +60341,6 @@ BEGIN AND st.saleFk IS NULL ORDER BY itemFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingRadar` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; -DELIMITER ;; -CREATE DEFINER=`vn`@`localhost` PROCEDURE `itemShelvingRadar`( - vSectorFk INT -) -BEGIN -/** - * Calcula la información detallada respecto un sector. - * - * @param vSectorFk Id de sector - */ - DECLARE vCalcVisibleFk INT; - DECLARE vCalcAvailableFk INT; - DECLARE hasFatherSector BOOLEAN; - DECLARE vBuyerFk INT DEFAULT 0; - DECLARE vWarehouseFk INT DEFAULT 0; - DECLARE vSonSectorFk INT; - DECLARE vWorkerFk INT; - - SELECT s.workerFk INTO vWorkerFk - FROM sector s - WHERE s.id = vSectorFk; - - SELECT COUNT(*) INTO hasFatherSector - FROM sector - WHERE sonFk = vSectorFk; - - SELECT warehouseFk, sonFk INTO vWarehouseFk, vSonSectorFk - FROM sector - WHERE id = vSectorFk; - - CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk); - CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE()); - - IF hasFatherSector THEN - CREATE OR REPLACE TEMPORARY TABLE tItemShelvingRadar - (PRIMARY KEY (itemFk)) - ENGINE = MEMORY - SELECT * - FROM ( - SELECT iss.itemFk, - i.longName, - i.size, - i.subName producer, - IFNULL(a.available, 0) available, - SUM(IF(s.sonFk = vSectorFk, IFNULL(iss.visible, 0), 0)) upstairs, - SUM(IF(iss.sectorFk = vSectorFk, IFNULL(iss.visible, 0), 0)) downstairs, - IF(it.isPackaging, NULL, IFNULL(v.visible, 0)) visible, - vSectorFk sectorFk, - ish.isChecked, - sub.isAllChecked - FROM itemShelvingStock iss - JOIN itemShelving ish ON ish.id = iss.itemShelvingFk - LEFT JOIN ( - SELECT itemFk, - IF( - COUNT(*) = SUM(IF(isChecked >= 0, 1, 0)), - TRUE, - FALSE - ) isAllChecked - FROM itemShelving is2 - GROUP BY itemFk - ) sub ON sub.itemFk = ish.itemFk - JOIN sector s ON s.id = iss.sectorFk - JOIN item i ON i.id = iss.itemFk - JOIN itemType it ON it.id = i.typeFk - LEFT JOIN cache.available a ON a.item_id = iss.itemFk - AND a.calc_id = vCalcAvailableFk - LEFT JOIN cache.visible v ON v.item_id = iss.itemFk - AND v.calc_id = vCalcVisibleFk - WHERE vSectorFk IN (iss.sectorFk, s.sonFk) - GROUP BY iss.itemFk - UNION ALL - SELECT v.item_id, - i.longName, - i.size, - i.subName, - IFNULL(a.available, 0), - 0, - 0, - IF(it.isPackaging, NULL, v.visible), - vSectorFk, - NULL, - NULL - FROM cache.visible v - JOIN item i ON i.id = v.item_id - JOIN itemType it ON it.id = i.typeFk - LEFT JOIN itemShelvingStock iss ON iss.itemFk = v.item_id - AND iss.warehouseFk = vWarehouseFk - LEFT JOIN cache.available a ON a.item_id = v.item_id - AND a.calc_id = vCalcAvailableFk - WHERE v.calc_id = vCalcVisibleFk - AND iss.itemFk IS NULL - AND it.isInventory - ) sub - GROUP BY itemFk; - - SELECT ishr.*, - CAST(visible - upstairs - downstairs AS DECIMAL(10, 0)) nicho, - CAST(downstairs - IFNULL(notPickedYed, 0) AS DECIMAL(10, 0)) pendiente - FROM tItemShelvingRadar ishr - JOIN item i ON i.id = ishr.itemFk - LEFT JOIN ( - SELECT s.itemFk, SUM(s.quantity) notPickedYed - FROM ticket t - JOIN ticketStateToday tst ON tst.ticketFk = t.id - JOIN alertLevel al ON al.id = tst.alertLevel - JOIN sale s ON s.ticketFk = t.id - WHERE t.warehouseFk = vWarehouseFk - AND al.code = 'FREE' - GROUP BY s.itemFk - ) sub ON sub.itemFk = ishr.itemFk - ORDER BY i.typeFk, i.longName; - ELSE - CREATE OR REPLACE TEMPORARY TABLE tItemShelvingRadar - (PRIMARY KEY (itemFk)) - ENGINE = MEMORY - SELECT iss.itemFk, - 0 `hour`, - 0 `minute`, - '--' itemPlacementCode, - i.longName, - i.size, - i.subName producer, - i.upToDown, - IFNULL(a.available, 0) available, - IFNULL(v.visible - iss.visible, 0) dayEndVisible, - IFNULL(v.visible - iss.visible, 0) firstNegative, - IFNULL(v.visible - iss.visible, 0) itemPlacementVisible, - IFNULL(i.minimum * b.packing, 0) itemPlacementSize, - ips.onTheWay, - iss.visible itemShelvingStock, - IFNULL(v.visible, 0) visible, - b.isPickedOff, - iss.sectorFk - FROM itemShelvingStock iss - JOIN item i ON i.id = iss.itemFk - LEFT JOIN cache.last_buy lb ON lb.item_id = iss.itemFk - AND lb.warehouse_id = vWarehouseFk - LEFT JOIN buy b ON b.id = lb.buy_id - LEFT JOIN cache.available a ON a.item_id = iss.itemFk - AND a.calc_id = vCalcAvailableFk - LEFT JOIN cache.visible v ON v.item_id = iss.itemFk - AND v.calc_id = vCalcVisibleFk - LEFT JOIN ( - SELECT itemFk, SUM(saldo) onTheWay - FROM itemPlacementSupplyList - WHERE saldo > 0 - GROUP BY itemFk - ) ips ON ips.itemFk = i.id - WHERE iss.sectorFk = vSectorFk - OR iss.sectorFk IS NULL; - - CREATE OR REPLACE TEMPORARY TABLE tmp.itemOutTime - SELECT *, SUM(amount) quantity - FROM ( - SELECT io.itemFk, - io.quantity amount, - IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) `hours`, - IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) `minutes` - FROM itemTicketOut `io` - JOIN tItemShelvingRadar isr ON isr.itemFk = io.itemFk - JOIN ticket t ON t.id= io.ticketFk - JOIN ticketState ts ON ts.ticketFk = io.ticketFk - JOIN `state` s ON s.id = ts.stateFk - LEFT JOIN `zone` z ON z.id = t.zoneFk - LEFT JOIN ( - SELECT DISTINCT saleFk - FROM saleTracking st - WHERE st.created > util.VN_CURDATE() - AND st.isChecked - ) stPrevious ON stPrevious.saleFk = io.saleFk - WHERE t.warehouseFk = vWarehouseFk - AND NOT s.isPicked - AND NOT io.reserved - AND stPrevious.saleFk IS NULL - AND io.shipped >= util.VN_CURDATE() - AND io.shipped < util.VN_CURDATE() + INTERVAL 1 DAY - ) sub - GROUP BY itemFk, `hours`, `minutes`; - - INSERT INTO tItemShelvingRadar (itemFk) - SELECT itemFk FROM tmp.itemOutTime - ON DUPLICATE KEY UPDATE dayEndVisible = dayEndVisible + quantity, - firstNegative = IF(firstNegative < 0, firstNegative, firstNegative + quantity), - `hour` = IFNULL(IF(firstNegative > 0 , `hour`, `hours`), 0), - `minute` = IFNULL(IF(firstNegative > 0, `minute`, `minutes`), 0); - - UPDATE tItemShelvingRadar isr - JOIN ( - SELECT s.itemFk, SUM(s.quantity) amount - FROM sale s - JOIN ticket t ON t.id = s.ticketFk - JOIN ticketState ts ON ts.ticketFk = t.id - WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) - AND ts.code = 'COOLER_PREPARATION' - GROUP BY s.itemFk - ) sub ON sub.itemFk = isr.itemFk - SET isr.dayEndVisible = dayEndVisible + sub.amount, - firstNegative = firstNegative + sub.amount; - - SELECT * FROM tItemShelvingRadar; - END IF; - - DROP TEMPORARY TABLE tItemShelvingRadar; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -61871,7 +62014,7 @@ BEGIN SELECT ish.id, p.pickingOrder, p.code parking, - ish.shelvingFk, + sh.code, ish.itemFk, i.longName, ish.visible, @@ -64372,8 +64515,6 @@ BEGIN * * @return tmp.itemList(itemFk, stock, visible, available) */ - DECLARE vIsLogifloraDay BOOL DEFAULT vn.isLogifloraDay(vDated, vWarehouseFk); - SET vDated = TIMESTAMP(vDated, '00:00:00'); CREATE OR REPLACE TEMPORARY TABLE tmp.itemList @@ -64393,14 +64534,11 @@ BEGIN UNION ALL SELECT iei.itemFk, iei.quantity FROM itemEntryIn iei - LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = iei.entryFk JOIN item i ON i.id = iei.itemFk WHERE iei.landed >= util.VN_CURDATE() AND iei.landed < vDated AND iei.warehouseInFk = vWarehouseFk AND (vItemFk IS NULL OR iei.itemFk = vItemFk) - AND (wf.entryFk IS NULL OR vIsLogifloraDay) - AND NOT (iei.landed > util.VN_CURDATE() AND i.isFloramondo) UNION ALL SELECT ieo.itemFk, ieo.quantity FROM itemEntryOut ieo @@ -64409,7 +64547,6 @@ BEGIN AND ieo.shipped < vDated AND ieo.warehouseOutFk = vWarehouseFk AND (vItemFk IS NULL OR ieo.itemFk = vItemFk) - AND NOT (ieo.shipped > util.VN_CURDATE() AND i.isFloramondo) ) sub GROUP BY itemFk HAVING stock; @@ -67013,14 +67150,14 @@ proc: BEGIN UPDATE tmp.productionBuffer pb JOIN sale s ON s.ticketFk = pb.ticketFk JOIN item i ON i.id = s.itemFk - JOIN cache.last_buy lb ON lb.warehouse_id = vWarehouseFk + JOIN cache.last_buy lb ON lb.warehouse_id = vWarehouseFk AND lb.item_id = s.itemFk JOIN buy b ON b.id = lb.buy_id JOIN packaging p ON p.id = b.packagingFk SET pb.hasPlantTray = TRUE WHERE p.isPlantTray AND s.quantity >= b.packing - AND pb.isOwn; + AND pb.isOwn; DROP TEMPORARY TABLE tmp.productionTicket, @@ -67890,6 +68027,91 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 DROP PROCEDURE IF EXISTS `roadmap_cloneDay` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +DELIMITER ;; +CREATE DEFINER=`vn`@`localhost` PROCEDURE `roadmap_cloneDay`( + vDateToCopy DATE, + vDateToPaste DATE +) +BEGIN +/** + * Clona roadmaps de un día a otro, incluyendo las paradas y sin algunos + * campos de la tabla principal, como matrículas, conductores... + * + * @param vDateToCopy Fecha para copiar + * @param vDateToPaste Fecha para pegar + */ + DECLARE vDaysDiff INT; + DECLARE vRoadmapFk INT; + DECLARE vNewRoadmapFk INT; + DECLARE vDone BOOL DEFAULT FALSE; + DECLARE vRoadmaps CURSOR FOR + SELECT id + FROM roadmap + WHERE etd BETWEEN vDateToCopy AND util.dayEnd(vDateToCopy); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + SET vDaysDiff = DATEDIFF(vDateToPaste, vDateToCopy); + + IF vDaysDiff IS NULL THEN + CALL util.throw("No valid dates"); + END IF; + + START TRANSACTION; + + OPEN vRoadmaps; + l: LOOP + SET vDone = FALSE; + FETCH vRoadmaps INTO vRoadmapFk; + + IF vDone THEN + LEAVE l; + END IF; + + INSERT INTO roadmap (`name`, roadmapAddressFk, etd, eta, observations, price) + SELECT `name`, + roadmapAddressFk, + etd + INTERVAL vDaysDiff DAY, + eta + INTERVAL vDaysDiff DAY, + observations, + price + FROM roadmap + WHERE id = vRoadmapFk; + + SET vNewRoadmapFk = LAST_INSERT_ID(); + + INSERT INTO roadmapStop (roadmapFk, roadmapAddressFk, eta, `description`, bufferFk) + SELECT vNewRoadmapFk, + roadmapAddressFk, + eta + INTERVAL vDaysDiff DAY, + `description`, + bufferFk + FROM roadmapStop + WHERE roadmapFk = vRoadmapFk; + END LOOP; + CLOSE vRoadmaps; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; /*!50003 DROP PROCEDURE IF EXISTS `routeGuessPriority` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -71794,6 +72016,7 @@ BEGIN ) currencyBalance FROM ( SELECT NULL bankFk, + NULL bank, ii.companyFk, ii.serial, ii.id, @@ -71827,6 +72050,7 @@ BEGIN GROUP BY iid.id, ii.id UNION ALL SELECT p.bankFk, + a.bank, p.companyFk, NULL, p.id, @@ -71862,6 +72086,7 @@ BEGIN AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated) UNION ALL SELECT NULL, + NULL bankFk, companyFk, NULL, se.id, @@ -71889,6 +72114,7 @@ BEGIN AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated) UNION ALL SELECT NULL bankFk, + NULL, e.companyFk, 'E' serial, e.invoiceNumber id, @@ -71907,7 +72133,7 @@ BEGIN JOIN travel tr ON tr.id = e.travelFk JOIN currency c ON c.id = e.currencyFk WHERE e.supplierFk = vSupplierFk - AND tr.landed >= CURDATE() + AND tr.landed >= util.VN_CURDATE() AND e.invoiceInFk IS NULL AND vHasEntries ORDER BY (dated IS NULL AND NOT isBooked), @@ -73550,6 +73776,7 @@ BEGIN sub2.iptd futureIpt, sub2.state futureState, t.clientFk, + cl.salespersonFk, t.warehouseFk, ts.alertLevel, sub2.alertLevel futureAlertLevel, @@ -73569,6 +73796,7 @@ BEGIN JOIN vn.province p ON p.id = a.provinceFk JOIN vn.country c ON c.id = p.countryFk JOIN vn.ticketState ts ON ts.ticketFk = t.id + JOIN vn.client cl ON cl.id = t.clientFk JOIN vn.state st ON st.id = ts.stateFk JOIN vn.alertLevel al ON al.id = ts.alertLevel LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id @@ -73622,7 +73850,7 @@ CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_canMerge`(vDated DATE, vScopeD BEGIN /** * Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro - * + * * @param vDated Fecha en cuestión * @param vScopeDays Dias en el futuro a sondear * @param vLitersMax Volumen máximo de los tickets a catapultar @@ -74137,15 +74365,12 @@ BEGIN */ DECLARE vDone BOOL; DECLARE vClientFk INT; - DECLARE vCurTicketFk INT; - DECLARE vIsTaxDataChecked BOOL; - DECLARE vCompanyFk INT; - DECLARE vShipped DATE; + DECLARE vCurTicketFk INT; DECLARE vNewInvoiceId INT; DECLARE vHasDailyInvoice BOOL; DECLARE vWithPackage BOOL; - DECLARE vHasToInvoice BOOL; - DECLARE vSerial VARCHAR(2); + DECLARE vHasToInvoice BOOL; + DECLARE vStateCode VARCHAR(45); DECLARE cur CURSOR FOR SELECT ticketFk FROM tmp.ticket_close; @@ -74166,18 +74391,11 @@ BEGIN LEAVE proc; END IF; - SELECT - c.id, - c.isTaxDataChecked, - t.companyFk, - t.shipped, + SELECT c.id, c.hasDailyInvoice, w.isManaged, c.hasToInvoice INTO vClientFk, - vIsTaxDataChecked, - vCompanyFk, - vShipped, vHasDailyInvoice, vWithPackage, vHasToInvoice @@ -74187,7 +74405,7 @@ BEGIN WHERE t.id = vCurTicketFk; INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity) - (SELECT vCurTicketFk, p.id, COUNT(*) + SELECT vCurTicketFk, p.id, COUNT(*) FROM expedition e JOIN packaging p ON p.id = e.packagingFk JOIN ticket t ON t.id = e.ticketFk @@ -74196,39 +74414,35 @@ BEGIN WHERE e.ticketFk = vCurTicketFk AND p.isPackageReturnable AND vWithPackage AND NOT dm.`code`= 'PICKUP' - GROUP BY p.itemFk); + GROUP BY p.itemFk; -- No retornables o no catalogados - INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed) - (SELECT e.freightItemFk, vCurTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.freightItemFk, vClientFk), 1 + INSERT INTO sale ( + itemFk, + ticketFk, + concept, + quantity, + price, isPriceFixed + )SELECT e.freightItemFk, + vCurTicketFk, + i.name, + COUNT(*) amount, + getSpecialPrice(e.freightItemFk, vClientFk), + TRUE FROM expedition e JOIN item i ON i.id = e.freightItemFk LEFT JOIN packaging p ON p.itemFk = i.id - WHERE e.ticketFk = vCurTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 + WHERE e.ticketFk = vCurTicketFk + AND (p.isPackageReturnable = 0 OR p.isPackageReturnable IS NULL) AND getSpecialPrice(e.freightItemFk, vClientFk) > 0 - GROUP BY e.freightItemFk); + GROUP BY e.freightItemFk; - IF(vHasDailyInvoice) AND vHasToInvoice THEN - SELECT invoiceSerial(vClientFk, vCompanyFk, 'quick') INTO vSerial; - IF vSerial IS NULL THEN - CALL util.throw('Cannot booking without a serial'); - END IF; - - CALL ticket_setState(vCurTicketFk, 'DELIVERED'); - - IF vIsTaxDataChecked THEN - CALL invoiceOut_newFromClient( - vClientFk, - vSerial, - vShipped, - vCompanyFk, - NULL, - NULL, - vNewInvoiceId); - END IF; + IF vHasDailyInvoice AND vHasToInvoice THEN + SET vStateCode = 'DELIVERED'; ELSE - CALL ticket_setState(vCurTicketFk, (SELECT vn.getAlert3State(vCurTicketFk))); + SELECT getAlert3State(vCurTicketFk) INTO vStateCode; END IF; + CALL ticket_setState(vCurTicketFk, vStateCode); END LOOP; CLOSE cur; @@ -74504,127 +74718,6 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_DelayTruck` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; -DELIMITER ;; -CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_DelayTruck`(vWarehouserFk INT, vHour INT, vMinute INT) -BEGIN - DECLARE done INT DEFAULT FALSE; - DECLARE vTicketFk INT; - DECLARE cur1 CURSOR FOR SELECT ticketFk FROM tTicket; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - CALL vn.productionControl(vWarehouserFk,0) ; - - DROP TEMPORARY TABLE IF EXISTS tTicket; - CREATE TEMPORARY TABLE tTicket - SELECT ticketFk - FROM tmp.productionBuffer - JOIN alertLevel al ON al.code = 'FREE' - WHERE shipped = util.VN_CURDATE() - AND problem LIKE '%I:%' - AND (HH <= vHour OR HH = vHour AND mm < vMinute) - AND alertLevel = al.id; - - OPEN cur1; - - read_loop: LOOP - FETCH cur1 INTO vTicketFk; - IF done THEN - LEAVE read_loop; - END IF; - - CALL vn.ticket_DelayTruckSplit(vTicketFk); - END LOOP; - - CLOSE cur1; - DROP TEMPORARY TABLE tTicket, tmp.productionBuffer; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_DelayTruckSplit` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; -DELIMITER ;; -CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_DelayTruckSplit`( - vTicketFk INT -) -BEGIN -/** - * Splita las lineas de ticket que no estan ubicadas - * - * @param vTicketFk Id ticket - */ - DECLARE vNewTicketFk INT; - DECLARE vTotalLines INT; - DECLARE vLinesToSplit INT; - - DROP TEMPORARY TABLE IF EXISTS tmp.SalesToSplit; - - SELECT COUNT(*) INTO vTotalLines - FROM sale - WHERE ticketFk = vTicketFk; - - CREATE TEMPORARY TABLE tmp.SalesToSplit - SELECT s.id saleFk - FROM ticket t - JOIN sale s ON t.id = s.ticketFk - LEFT JOIN ( - SELECT ish.itemFk itemFk, - SUM(ish.visible) visible, - s.warehouseFk warehouseFk - FROM itemShelving ish - JOIN shelving sh ON sh.id = ish.shelvingFk - JOIN parking p ON p.id = sh.parkingFk - JOIN sector s ON s.id = p.sectorFk - GROUP BY ish.itemFk, - s.warehouseFk - ) issw ON issw.itemFk = s.itemFk - AND issw.warehouseFk = t.warehouseFk - WHERE s.quantity > IFNULL(issw.visible, 0) - AND s.quantity > 0 - AND NOT s.isPicked - AND NOT s.reserved - AND t.id = vTicketFk; - - SELECT COUNT(*) INTO vLinesToSplit - FROM tmp.SalesToSplit; - - IF vLinesToSplit = vTotalLines AND vLinesToSplit > 0 THEN - SET vNewTicketFk = vTicketFk; - ELSE - CALL ticket_Clone(vTicketFk, vNewTicketFk); - UPDATE sale s - JOIN tmp.SalesToSplit sts ON sts.saleFk = s.id - SET s.ticketFk = vNewTicketFk; - END IF; - - CALL ticket_setState(vNewTicketFk, 'FIXING'); - - DROP TEMPORARY TABLE tmp.SalesToSplit; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticket_doCmr` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -74633,7 +74726,9 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; DELIMITER ;; -CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_doCmr`(vSelf INT) +CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_doCmr`( + vSelf INT +) BEGIN /** * Crea u actualiza la información del CMR asociado con @@ -74653,6 +74748,7 @@ BEGIN a.id addressFk, c2.defaultAddressFk, IFNULL(sat.supplierFk, su.id) supplierFk, + t.packages, t.landed FROM ticket t JOIN client c ON c.id = t.clientFk @@ -74667,7 +74763,7 @@ BEGIN LEFT JOIN route r ON r.id = t.routeFk LEFT JOIN worker wo ON wo.id = r.workerFk LEFT JOIN vehicle v ON v.id = r.vehicleFk - LEFT JOIN agencyMode am ON am.id = r.agencyModeFk + LEFT JOIN agencyMode am ON am.id = t.agencyModeFk LEFT JOIN agency ag ON ag.id = am.agencyFk LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = ag.id AND wo.isFreelance @@ -74676,7 +74772,7 @@ BEGIN AND w.code = 'ALG' AND t.id = vSelf GROUP BY t.id; - + IF vCmrFk THEN UPDATE cmr c JOIN tTicket t @@ -74686,9 +74782,10 @@ BEGIN c.addressToFk = t.addressFk, c.addressFromFk = t.defaultAddressFk, c.supplierFk = t.supplierFk, + c.packagesList = t.packages, c.ead = t.landed WHERE id = vCmrFk; - ELSE + ELSE INSERT INTO cmr ( senderInstruccions, truckPlate, @@ -74696,6 +74793,7 @@ BEGIN addressToFk, addressFromFk, supplierFk, + packagesList, ead ) SELECT * FROM tTicket; @@ -75324,7 +75422,7 @@ BEGIN LEFT JOIN agencyMode am ON am.id = tt.agencyModeFk LEFT JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk WHERE dm.code IN ('AGENCY') - AND it.isFragile; + AND (it.isFragile OR i.isFragile); CREATE OR REPLACE TEMPORARY TABLE tmp.ticket_warnings (PRIMARY KEY (ticketFk)) @@ -76401,55 +76499,62 @@ CREATE DEFINER=`vn`@`localhost` PROCEDURE `ticket_setState`( vSelf INT, vStateCode VARCHAR(255) COLLATE utf8_general_ci ) -BEGIN +proc:BEGIN /** * Modifica el estado de un ticket si se cumplen las condiciones necesarias. * * @param vSelf el id del ticket * @param vStateCode estado a modificar del ticket */ - DECLARE vticketAlertLevel INT; - DECLARE vTicketStateCode VARCHAR(255); + DECLARE vTicketAlertLevel INT; + DECLARE vTicketStateCode VARCHAR(255) COLLATE utf8_general_ci; DECLARE vCanChangeState BOOL; DECLARE vPackedAlertLevel INT; DECLARE vZoneFk INT; + DECLARE vOldWorkerFk INT; + DECLARE vNewWorkerFk INT; - SELECT s.alertLevel, s.`code`, t.zoneFk - INTO vticketAlertLevel, vTicketStateCode, vZoneFk + SET vNewWorkerFk = account.myUser_getId(); + + SELECT s.alertLevel, s.`code`, t.zoneFk, tt.userFk + INTO vTicketAlertLevel, vTicketStateCode, vZoneFk, vOldWorkerFk FROM state s JOIN ticketTracking tt ON tt.stateFk = s.id JOIN ticket t ON t.id = tt.ticketFk WHERE tt.ticketFk = vSelf - ORDER BY tt.created DESC + ORDER BY tt.created DESC, tt.id DESC LIMIT 1; - SELECT id INTO vPackedAlertLevel FROM alertLevel WHERE code = 'PACKED'; + SELECT id INTO vPackedAlertLevel FROM alertLevel WHERE code = 'PACKED'; IF vStateCode = 'OK' AND vZoneFk IS NULL THEN CALL util.throw('ASSIGN_ZONE_FIRST'); END IF; SET vCanChangeState = (( - vStateCode <> 'ON_CHECKING' AND vStateCode <> 'CHECKED') OR - vticketAlertLevel < vPackedAlertLevel - )AND NOT ( + vStateCode <> 'ON_CHECKING' AND vStateCode <> 'CHECKED') OR + vTicketAlertLevel < vPackedAlertLevel + ) AND NOT ( vTicketStateCode IN ('CHECKED', 'CHECKING') AND vStateCode IN ('PREPARED', 'ON_PREPARATION') ); IF vCanChangeState THEN - INSERT INTO ticketTracking (stateFk, ticketFk, userFk) - SELECT id, vSelf, account.myUser_getId() - FROM state - WHERE `code` = vStateCode COLLATE utf8_unicode_ci; - IF vStateCode = 'PACKED' THEN CALL ticket_doCmr(vSelf); END IF; + + IF vStateCode = vTicketStateCode AND vOldWorkerFk = vNewWorkerFk THEN + LEAVE proc; + END IF; + + INSERT INTO ticketTracking (stateFk, ticketFk, userFk, created) + SELECT id, vSelf, vNewWorkerFk, util.VN_NOW() + FROM state + WHERE `code` = vStateCode COLLATE utf8_unicode_ci; ELSE CALL util.throw('INCORRECT_TICKET_STATE'); END IF; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -78669,16 +78774,23 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; DELIMITER ;; -CREATE DEFINER=`vn`@`localhost` PROCEDURE `vehicle_checkNumberPlate`(vNumberPlate VARCHAR(10), vCountryCodeFk VARCHAR(2)) +CREATE DEFINER=`vn`@`localhost` PROCEDURE `vehicle_checkNumberPlate`( + vNumberPlate VARCHAR(10), + vCountryCodeFk VARCHAR(2) +) BEGIN /** - * Comprueba si la matricula pasada tiene el formato correcto dependiendo del pais del vehiculo + * Comprueba si la matricula pasada tiene el formato + * correcto dependiendo del pais del vehiculo. + * + * @param vNumberPlate Número de matricula + * @param vCountryCodeFk Código de pais */ DECLARE vRegex VARCHAR(45); - SELECT vp.regex INTO vRegex - FROM vehiclePlateRegex vp - WHERE vp.countryCodeFk = vCountryCodeFk; + SELECT regex INTO vRegex + FROM vehiclePlateRegex + WHERE countryCodeFk = vCountryCodeFk; IF NOT vNumberPlate REGEXP BINARY (vRegex)THEN CALL util.throw(CONCAT('Error: la matricula ', vNumberPlate, ' no es valida para ',vCountryCodeFk)); @@ -83198,7 +83310,8 @@ SET character_set_client = utf8; 1 AS `Base`, 1 AS `box`, 1 AS `costeRetorno`, - 1 AS `isActive` */; + 1 AS `isActive`, + 1 AS `flippingCost` */; SET character_set_client = @saved_cs_client; -- @@ -83577,21 +83690,6 @@ SET character_set_client = utf8; 1 AS `description` */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `Split_lines` --- - -DROP TABLE IF EXISTS `Split_lines`; -/*!50001 DROP VIEW IF EXISTS `Split_lines`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `Split_lines` AS SELECT - 1 AS `Id_Split_lines`, - 1 AS `Id_Split`, - 1 AS `Id_Article`, - 1 AS `Id_Compra` */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `Splits` -- @@ -83983,7 +84081,8 @@ SET character_set_client = utf8; 1 AS `invoiceInPaletizedFk`, 1 AS `observation`, 1 AS `hasFreightPrepaid`, - 1 AS `propertyNumber` */; + 1 AS `propertyNumber`, + 1 AS `costPerKg` */; SET character_set_client = @saved_cs_client; -- @@ -85391,7 +85490,6 @@ SET character_set_client = utf8; 1 AS `kg`, 1 AS `cargoSupplierFk`, 1 AS `totalEntries`, - 1 AS `appointment`, 1 AS `awbFk`, 1 AS `isRaid`, 1 AS `daysInForward` */; @@ -86761,6 +86859,24 @@ USE `vn`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; +-- +-- Final view structure for view `agencyModeIncoming` +-- + +/*!50001 DROP VIEW IF EXISTS `agencyModeIncoming`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `agencyModeIncoming` AS select `am`.`id` AS `id`,`am`.`name` AS `name` from (`agencyMode` `am` join `agencyIncoming` `ai` on(`am`.`id` = `ai`.`agencyModeFk`)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Final view structure for view `agencyTerm` -- @@ -87260,7 +87376,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionTruck` AS select `rs`.`id` AS `id`,`rs`.`roadmapFk` AS `roadmapFk`,`rs`.`eta` AS `eta`,`rs`.`description` AS `description`,`rs`.`bufferFk` AS `bufferFk`,`rs`.`created` AS `created`,`rs`.`userFk` AS `userFk` from `roadmapStop` `rs` */; +/*!50001 VIEW `expeditionTruck` AS select `rs`.`id` AS `id`,`rs`.`roadmapFk` AS `roadmapFk`,`rs`.`eta` AS `eta`,`rs`.`description` AS `description`,`rs`.`bufferFk` AS `bufferFk`,`rs`.`created` AS `created`,`rs`.`editorFk` AS `userFk` from `roadmapStop` `rs` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -87404,7 +87520,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemEntryIn` AS select `t`.`warehouseInFk` AS `warehouseInFk`,`t`.`landed` AS `landed`,`b`.`itemFk` AS `itemFk`,`b`.`quantity` AS `quantity`,`t`.`isReceived` AS `isReceived`,`t`.`isRaid` AS `isVirtualStock`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `b`.`quantity` <> 0 */; +/*!50001 VIEW `itemEntryIn` AS select `t`.`warehouseInFk` AS `warehouseInFk`,`t`.`landed` AS `landed`,`b`.`itemFk` AS `itemFk`,`b`.`quantity` AS `quantity`,`t`.`isReceived` AS `isReceived`,`t`.`isRaid` AS `isVirtualStock`,`e`.`id` AS `entryFk`,`t`.`availabled` AS `availabled` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `b`.`quantity` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -88003,6 +88119,24 @@ USE `vn`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; +-- +-- Final view structure for view `roadmapEta` +-- + +/*!50001 DROP VIEW IF EXISTS `roadmapEta`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`vn`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `roadmapEta` AS select `roadmapStop`.`roadmapFk` AS `id`,max(`roadmapStop`.`eta`) AS `eta` from `roadmapStop` where `roadmapStop`.`roadmapFk` is not null group by `roadmapStop`.`roadmapFk` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Final view structure for view `role` -- @@ -88850,7 +88984,7 @@ USE `vn2008`; /*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ -/*!50001 VIEW `Cubos` AS select `p`.`id` AS `Id_Cubo`,`p`.`volume` AS `Volumen`,`p`.`width` AS `X`,`p`.`depth` AS `Y`,`p`.`height` AS `Z`,`p`.`isPackageReturnable` AS `Retornable`,`p`.`created` AS `odbc_date`,`p`.`itemFk` AS `item_id`,`p`.`price` AS `pvp`,`p`.`cubicPackage` AS `bultoCubico`,`p`.`value` AS `Valor`,`p`.`packagingReturnFk` AS `idCubos_Retorno`,`p`.`lower` AS `Bajan`,`p`.`upload` AS `Suben`,`p`.`base` AS `Base`,`p`.`isBox` AS `box`,`p`.`returnCost` AS `costeRetorno`,`p`.`isActive` AS `isActive` from `vn`.`packaging` `p` */; +/*!50001 VIEW `Cubos` AS select `p`.`id` AS `Id_Cubo`,`p`.`volume` AS `Volumen`,`p`.`width` AS `X`,`p`.`depth` AS `Y`,`p`.`height` AS `Z`,`p`.`isPackageReturnable` AS `Retornable`,`p`.`created` AS `odbc_date`,`p`.`itemFk` AS `item_id`,`p`.`price` AS `pvp`,`p`.`cubicPackage` AS `bultoCubico`,`p`.`value` AS `Valor`,`p`.`packagingReturnFk` AS `idCubos_Retorno`,`p`.`lower` AS `Bajan`,`p`.`upload` AS `Suben`,`p`.`base` AS `Base`,`p`.`isBox` AS `box`,`p`.`returnCost` AS `costeRetorno`,`p`.`isActive` AS `isActive`,`p`.`flippingCost` AS `flippingCost` from `vn`.`packaging` `p` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -89197,24 +89331,6 @@ USE `vn2008`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `Split_lines` --- - -/*!50001 DROP VIEW IF EXISTS `Split_lines`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_unicode_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ -/*!50001 VIEW `Split_lines` AS select `sl`.`id` AS `Id_Split_lines`,`sl`.`splitFk` AS `Id_Split`,`sl`.`itemFk` AS `Id_Article`,`sl`.`buyFk` AS `Id_Compra` from `vn`.`splitLine` `sl` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `Splits` -- @@ -89570,7 +89686,7 @@ USE `vn2008`; /*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ -/*!50001 VIEW `awb` AS select `a`.`id` AS `id`,`a`.`code` AS `codigo`,`a`.`package` AS `bultos`,`a`.`weight` AS `peso`,`a`.`created` AS `MYSQL_TIME`,`a`.`transitoryFk` AS `transitario_id`,`a`.`taxFk` AS `iva_id`,`a`.`duakk` AS `duakk`,`a`.`docFk` AS `gestdoc_id`,`a`.`amount` AS `importe`,`a`.`freightFk` AS `carguera_id`,`a`.`m3` AS `m3`,`a`.`stems` AS `stems`,`a`.`flightFk` AS `flight_id`,`a`.`volumeWeight` AS `volume_weight`,`a`.`hb` AS `hb`,`a`.`rate` AS `rate`,`a`.`booked` AS `booked`,`a`.`issued` AS `issued`,`a`.`operated` AS `operated`,`a`.`bookEntried` AS `bookEntried`,`a`.`invoiceInFk` AS `invoiceInFk`,`a`.`isChecked` AS `isChecked`,`a`.`isTransitoryChecked` AS `isTransitoryChecked`,`a`.`year` AS `year`,`a`.`invoiceInPaletizedFk` AS `invoiceInPaletizedFk`,`a`.`observation` AS `observation`,`a`.`hasFreightPrepaid` AS `hasFreightPrepaid`,`a`.`propertyNumber` AS `propertyNumber` from `vn`.`awb` `a` */; +/*!50001 VIEW `awb` AS select `a`.`id` AS `id`,`a`.`code` AS `codigo`,`a`.`package` AS `bultos`,`a`.`weight` AS `peso`,`a`.`created` AS `MYSQL_TIME`,`a`.`transitoryFk` AS `transitario_id`,`a`.`taxFk` AS `iva_id`,`a`.`duakk` AS `duakk`,`a`.`docFk` AS `gestdoc_id`,`a`.`amount` AS `importe`,`a`.`freightFk` AS `carguera_id`,`a`.`m3` AS `m3`,`a`.`stems` AS `stems`,`a`.`flightFk` AS `flight_id`,`a`.`volumeWeight` AS `volume_weight`,`a`.`hb` AS `hb`,`a`.`rate` AS `rate`,`a`.`booked` AS `booked`,`a`.`issued` AS `issued`,`a`.`operated` AS `operated`,`a`.`bookEntried` AS `bookEntried`,`a`.`invoiceInFk` AS `invoiceInFk`,`a`.`isChecked` AS `isChecked`,`a`.`isTransitoryChecked` AS `isTransitoryChecked`,`a`.`year` AS `year`,`a`.`invoiceInPaletizedFk` AS `invoiceInPaletizedFk`,`a`.`observation` AS `observation`,`a`.`hasFreightPrepaid` AS `hasFreightPrepaid`,`a`.`propertyNumber` AS `propertyNumber`,`a`.`costPerKg` AS `costPerKg` from `vn`.`awb` `a` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -90938,7 +91054,7 @@ USE `vn2008`; /*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ -/*!50001 VIEW `travel` AS select `t`.`id` AS `id`,`t`.`shipped` AS `shipment`,`t`.`shipmentHour` AS `shipment_hour`,`t`.`landed` AS `landing`,`t`.`landingHour` AS `landing_hour`,`t`.`warehouseInFk` AS `warehouse_id`,`t`.`warehouseOutFk` AS `warehouse_id_out`,`t`.`agencyModeFk` AS `agency_id`,`t`.`ref` AS `ref`,`t`.`isDelivered` AS `delivered`,`t`.`isReceived` AS `received`,`t`.`m3` AS `m3`,`t`.`kg` AS `kg`,`t`.`cargoSupplierFk` AS `cargoSupplierFk`,`t`.`totalEntries` AS `totalEntries`,`t`.`appointment` AS `appointment`,`t`.`awbFk` AS `awbFk`,`t`.`isRaid` AS `isRaid`,`t`.`daysInForward` AS `daysInForward` from `vn`.`travel` `t` */; +/*!50001 VIEW `travel` AS select `t`.`id` AS `id`,`t`.`shipped` AS `shipment`,`t`.`shipmentHour` AS `shipment_hour`,`t`.`landed` AS `landing`,`t`.`landingHour` AS `landing_hour`,`t`.`warehouseInFk` AS `warehouse_id`,`t`.`warehouseOutFk` AS `warehouse_id_out`,`t`.`agencyModeFk` AS `agency_id`,`t`.`ref` AS `ref`,`t`.`isDelivered` AS `delivered`,`t`.`isReceived` AS `received`,`t`.`m3` AS `m3`,`t`.`kg` AS `kg`,`t`.`cargoSupplierFk` AS `cargoSupplierFk`,`t`.`totalEntries` AS `totalEntries`,`t`.`awbFk` AS `awbFk`,`t`.`isRaid` AS `isRaid`,`t`.`daysInForward` AS `daysInForward` from `vn`.`travel` `t` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -91042,4 +91158,4 @@ USE `vn2008`; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2025-01-28 7:08:42 +-- Dump completed on 2025-02-18 8:15:40 diff --git a/db/dump/.dump/triggers.sql b/db/dump/.dump/triggers.sql index 4f7bab43b8..502e89a56e 100644 --- a/db/dump/.dump/triggers.sql +++ b/db/dump/.dump/triggers.sql @@ -2668,6 +2668,7 @@ trig:BEGIN THEN CALL entry_isEditable(OLD.entryFk); + CALL entry_isEditable(NEW.entryFk); END IF; SET NEW.editorFk = account.myUser_getId(); @@ -2736,11 +2737,11 @@ trig:BEGIN SET NEW.buyerFk = vBuyerFk; END IF; - IF NOT (NEW.itemFk <=> OLD.itemFk) OR - NOT (OLD.entryFk <=> NEW.entryFk) THEN + IF NOT (NEW.itemFk <=> OLD.itemFk) OR + NOT (OLD.entryFk <=> NEW.entryFk) THEN CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck SELECT NEW.id; - CALL buy_checkItem(); + CALL buy_checkItem(); END IF; END */;; DELIMITER ; @@ -4979,7 +4980,6 @@ BEGIN IF NEW.isBooked = OLD.isBooked AND ( NOT (NEW.supplierFk <=> OLD.supplierFk) OR - NOT (NEW.dated <=> OLD.dated) OR NOT (NEW.travelFk <=> OLD.travelFk) OR NOT (NEW.companyFk <=> OLD.companyFk) OR NOT (NEW.invoiceInFk <=> OLD.invoiceInFk) OR @@ -6994,11 +6994,57 @@ DELIMITER ;; BEFORE INSERT ON `mandate` FOR EACH ROW BEGIN + SET NEW.editorFk = account.myUser_getId(); + IF (NEW.code IS NULL) THEN - SET NEW.code=CONCAT(NEW.clientFk,'-',(SELECT AUTO_INCREMENT - FROM information_schema.TABLES - WHERE TABLE_SCHEMA='vn' and TABLE_NAME='mandate')); - END IF; + SET NEW.code=CONCAT(NEW.clientFk,'-',(SELECT AUTO_INCREMENT + FROM information_schema.TABLES + WHERE TABLE_SCHEMA='vn' and TABLE_NAME='mandate')); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`mandate_beforeUpdate` + BEFORE INSERT ON `mandate` + FOR EACH ROW +BEGIN + SET NEW.editorFk = account.myUser_getId(); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`vn`@`localhost`*/ /*!50003 TRIGGER `vn`.`mandate_afterDelete` + AFTER DELETE ON `mandate` + FOR EACH ROW +BEGIN + INSERT INTO mandateLog + SET `action` = 'delete', + `changedModel` = 'mandate', + `changedModelId` = OLD.id, + `userFk` = account.myUser_getId(); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -7978,10 +8024,31 @@ DELIMITER ;; BEFORE INSERT ON `roadmap` FOR EACH ROW BEGIN + SET NEW.editorFk = account.myUser_getId(); + + IF NEW.name IS NOT NULL THEN + SET NEW.name = UCASE(NEW.name); + END IF; + + IF NEW.trailerPlate IS NOT NULL OR NEW.tugPlate IS NOT NULL THEN + SET NEW.m3 = (SELECT SUM(m3) FROM vehicle WHERE numberPlate IN (NEW.trailerPlate, NEW.tugPlate)); + END IF; + IF NEW.driver1Fk IS NOT NULL THEN - SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk); - ELSE - SET NEW.driverName = NULL; + SET NEW.driverName = (SELECT CONCAT(w.firstName, ' ', w.lastName) + FROM worker w + WHERE w.id = NEW.driver1Fk); + + SET NEW.phone = (SELECT COALESCE(w.phone, c.mobile, c.phone, c.mobile) + FROM worker w + LEFT JOIN client c ON c.id = w.id + WHERE w.id = NEW.driver1Fk); + END IF; + + IF NEW.driverChangeFk IS NOT NULL THEN + SET NEW.driverChangeName = (SELECT CONCAT(w.firstName, ' ', w.lastName) + FROM worker w + WHERE w.id = NEW.driverChangeFk); END IF; END */;; DELIMITER ; @@ -8002,10 +8069,51 @@ DELIMITER ;; BEFORE UPDATE ON `roadmap` FOR EACH ROW BEGIN - IF NEW.driver1Fk IS NOT NULL THEN - SET NEW.driverName = (SELECT firstName FROM worker WHERE id = NEW.driver1Fk); - ELSE - SET NEW.driverName = NULL; + DECLARE vSeconds INT; + + SET NEW.editorFk = account.myUser_getId(); + + IF NOT (NEW.name <=> OLD.name) THEN + SET NEW.name = UCASE(NEW.name); + END IF; + + IF NOT (NEW.trailerPlate <=> OLD.trailerPlate) OR NOT (NEW.tugPlate <=> OLD.tugPlate) THEN + SET NEW.m3 = (SELECT SUM(m3) FROM vehicle WHERE numberPlate IN (NEW.trailerPlate, NEW.tugPlate)); + END IF; + + IF NOT (NEW.driverName <=> OLD.driverName) THEN + SET NEW.driver1Fk = NULL; + END IF; + + IF NOT (NEW.driver1Fk <=> OLD.driver1Fk) AND NEW.driver1Fk IS NOT NULL THEN + SET NEW.driverName = (SELECT CONCAT(w.firstName, ' ', w.lastName) + FROM worker w + WHERE w.id = NEW.driver1Fk); + + SET NEW.phone = (SELECT COALESCE(w.phone, c.mobile, c.phone, c.mobile) + FROM worker w + LEFT JOIN client c ON c.id = w.id + WHERE w.id = NEW.driver1Fk); + END IF; + + IF NOT (NEW.driverChangeName <=> OLD.driverChangeName) THEN + SET NEW.driverChangeFk = NULL; + END IF; + + IF NOT (NEW.driverChangeFk <=> OLD.driverChangeFk) AND NEW.driverChangeFk IS NOT NULL THEN + SET NEW.driverChangeName = (SELECT CONCAT(w.firstName, ' ', w.lastName) + FROM worker w + WHERE w.id = NEW.driverChangeFk); + END IF; + + IF NOT (NEW.etd <=> OLD.etd) THEN + SET vSeconds = TIME_TO_SEC(TIMEDIFF(NEW.etd, OLD.etd)); + + IF vSeconds <> 0 THEN + UPDATE roadmapStop + SET eta = eta + INTERVAL vSeconds SECOND + WHERE roadmapFk = NEW.id; + END IF; END IF; END */;; DELIMITER ; @@ -8026,9 +8134,17 @@ DELIMITER ;; BEFORE INSERT ON `roadmapStop` FOR EACH ROW BEGIN + SET NEW.editorFk = account.myUser_getId(); - SET NEW.description = UCASE(NEW.description); + IF NEW.description IS NOT NULL THEN + SET NEW.description = UCASE(NEW.description); + END IF; + IF NEW.roadmapFk IS NOT NULL THEN + IF NEW.eta < (SELECT etd FROM roadmap WHERE id = NEW.roadmapFk) THEN + CALL util.throw('Departure time can not be after arrival time'); + END IF; + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -8048,9 +8164,18 @@ DELIMITER ;; BEFORE UPDATE ON `roadmapStop` FOR EACH ROW BEGIN + SET NEW.editorFk = account.myUser_getId(); - SET NEW.description = UCASE(NEW.description); + IF NOT (NEW.description <=> OLD.description) THEN + SET NEW.description = UCASE(NEW.description); + END IF; + IF NOT (NEW.roadmapFk <=> OLD.roadmapFk) OR NOT (NEW.eta <=> OLD.eta) THEN + + IF NEW.eta < (SELECT etd FROM roadmap WHERE id = NEW.roadmapFk) THEN + CALL util.throw('Departure time can not be after arrival time'); + END IF; + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -10577,6 +10702,10 @@ BEGIN IF NEW.awbFk IS NOT NULL THEN CALL travel_throwAwb(NEW.id); END IF; + + IF NEW.availabled < NEW.landed THEN + CALL util.throw('The travel availabled cannot be earlier than landed'); + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -10633,6 +10762,10 @@ BEGIN IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN CALL travel_throwAwb(NEW.id); END IF; + + IF NEW.availabled < NEW.landed THEN + CALL util.throw('The travel availabled cannot be earlier than landed'); + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -11526,9 +11659,8 @@ BEGIN INSERT INTO zoneLog SET `action` = 'delete', `changedModel` = 'zoneIncluded', - `changedModelId` = OLD.zoneFk, + `changedModelId` = OLD.id, `userFk` = account.myUser_getId(); - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -11611,4 +11743,4 @@ USE `vn2008`; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2025-01-28 7:09:01 +-- Dump completed on 2025-02-18 8:16:03 From a8c03548d9307602ef6666f97358e58c15533be6 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 18 Feb 2025 09:51:08 +0100 Subject: [PATCH 213/217] fix: refs #8627 update stateFk assignment to use code instead of id --- modules/ticket/back/methods/ticket/state.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ticket/back/methods/ticket/state.js b/modules/ticket/back/methods/ticket/state.js index e7daacacca..fea9475f8c 100644 --- a/modules/ticket/back/methods/ticket/state.js +++ b/modules/ticket/back/methods/ticket/state.js @@ -43,8 +43,8 @@ module.exports = Self => { const {code} = await models.State.findById(params.stateFk, {fields: ['code']}, myOptions); params.code = code; } else { - const state = await models.State.findOne({where: {id: params.code}}, myOptions); - params.stateFk = state.id; + const {id} = await models.State.findOne({where: {code: params.code}}, myOptions); + params.stateFk = id; } if (!params.userFk) { From 06c123d7f290f84e55ab6340dd445f5351ab0854 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 18 Feb 2025 10:15:28 +0100 Subject: [PATCH 214/217] fix: refs #8627 ticket isTaxDataChecked --- modules/ticket/front/future/index.html | 2 +- modules/ticket/front/index/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ticket/front/future/index.html b/modules/ticket/front/future/index.html index cceca266f7..dec8e1e855 100644 --- a/modules/ticket/front/future/index.html +++ b/modules/ticket/front/future/index.html @@ -92,7 +92,7 @@ diff --git a/modules/ticket/front/index/index.html b/modules/ticket/front/index/index.html index 26e5553edc..08a6e3f7b6 100644 --- a/modules/ticket/front/index/index.html +++ b/modules/ticket/front/index/index.html @@ -40,7 +40,7 @@ From 2386874a9685e6cb15dfde826db5c6fc0d4880f4 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 18 Feb 2025 10:28:00 +0100 Subject: [PATCH 215/217] fix: refs #8627 add claim in getSales --- modules/ticket/back/methods/ticket/getSales.js | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ticket/back/methods/ticket/getSales.js b/modules/ticket/back/methods/ticket/getSales.js index 3b5ee21a67..574fd36732 100644 --- a/modules/ticket/back/methods/ticket/getSales.js +++ b/modules/ticket/back/methods/ticket/getSales.js @@ -98,6 +98,7 @@ module.exports = Self => { for (let sale of sales) { const problems = saleProblems.get(sale.id); + sale.claim = claimedSales.get(sale.id); if (problems) { for (const problem in problems) sale[problem] = problems[problem]; From b8a216444c384419b57928f226dd84ea4da3890d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Tue, 18 Feb 2025 13:11:27 +0000 Subject: [PATCH 216/217] Actualizar db/routines/cache/procedures/available_refresh.sql --- db/routines/cache/procedures/available_refresh.sql | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/db/routines/cache/procedures/available_refresh.sql b/db/routines/cache/procedures/available_refresh.sql index 0e42a62cdc..87c003648c 100644 --- a/db/routines/cache/procedures/available_refresh.sql +++ b/db/routines/cache/procedures/available_refresh.sql @@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`available_refres OUT `vCalc` INT, `vRefresh` INT, `vWarehouse` INT, - `vAvailabled` DATETIME + `vDated` DATE ) proc: BEGIN DECLARE vStartDate DATE; @@ -12,7 +12,6 @@ proc: BEGIN DECLARE vInventoryDate DATE; DECLARE vLifeScope DATE; DECLARE vWarehouseFkInventory INT; - DECLARE vDated DATE; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN @@ -20,17 +19,13 @@ proc: BEGIN RESIGNAL; END; - IF vAvailabled < util.VN_CURDATE() THEN + IF vDated < util.VN_CURDATE() THEN LEAVE proc; END IF; - SET vDated = DATE(vAvailabled); - - SET vAvailabled = vDated + INTERVAL HOUR(vAvailabled) HOUR; - CALL vn.item_getStock(vWarehouse, vDated, NULL); - SET vParams = CONCAT_WS('/', vWarehouse, vAvailabled); + SET vParams = CONCAT_WS('/', vWarehouse, vDated); CALL cache_calc_start (vCalc, vRefresh, 'available', vParams); IF !vRefresh THEN @@ -92,10 +87,11 @@ proc: BEGIN SELECT i.itemFk, i.landed, i.quantity FROM vn.itemEntryIn i JOIN itemRange ir ON ir.itemFk = i.itemFk + LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk WHERE i.landed >= vStartDate - AND IFNULL(i.availabled, i.landed) <= vAvailabled AND (ir.ended IS NULL OR i.landed <= ir.ended) AND i.warehouseInFk = vWarehouse + AND ISNULL(wf.entryFk) UNION ALL SELECT i.itemFk, i.shipped, i.quantity FROM vn.itemEntryOut i From f414ababb2f2e35611d5e0d8dbae2f4d198ff1a4 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 20 Feb 2025 07:29:38 +0100 Subject: [PATCH 217/217] fix: refs #8227 Added localPalletM3 --- db/versions/11447-whiteGalax/00-firstScript.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 db/versions/11447-whiteGalax/00-firstScript.sql diff --git a/db/versions/11447-whiteGalax/00-firstScript.sql b/db/versions/11447-whiteGalax/00-firstScript.sql new file mode 100644 index 0000000000..9777017a92 --- /dev/null +++ b/db/versions/11447-whiteGalax/00-firstScript.sql @@ -0,0 +1,5 @@ +ALTER TABLE vn.volumeConfig + MODIFY COLUMN palletM3 decimal(10,2) DEFAULT NULL NULL + COMMENT 'metros cúbicos para el warehouse VNH (Se refactorizará en el redmine refs #8637)', + ADD localPalletM3 decimal(10,2) NULL + COMMENT 'metros cúbicos para el warehouse Algemesi (Se refactorizará en el redmine refs #8637)';