From 91f5ee3b93b755a581b1b46674cca2cc507b059a Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 20 Jan 2024 12:29:41 +0100 Subject: [PATCH 001/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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/315] 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 36297009e11dc13ba1e8ff3c6d31758937f56b5f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 17 Sep 2024 16:43:09 +0200 Subject: [PATCH 050/315] 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 2cb57225ffbbc0824242a22d3b68142371aa765e Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 21 Sep 2024 00:26:55 +0200 Subject: [PATCH 051/315] 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 052/315] 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 053/315] 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 6300795e525e3f11f3e56d375311336d2630222b Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 18 Dec 2024 13:17:47 +0100 Subject: [PATCH 054/315] 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 055/315] 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 190731899e5d925ef2ddb6508e44b1961e24c9e6 Mon Sep 17 00:00:00 2001 From: jgallego Date: Thu, 9 Jan 2025 12:33:20 +0100 Subject: [PATCH 056/315] feat: refs #7937 add ClaimConfig model and update refund ticket logic --- .../11401-azureMoss/00-claimConfig.sql | 13 ++++ .../importToNewRefundTicket.js | 69 ++++++++++++++----- modules/claim/back/model-config.json | 5 +- modules/claim/back/models/claim-config.json | 47 +++++++++++++ 4 files changed, 115 insertions(+), 19 deletions(-) create mode 100644 db/versions/11401-azureMoss/00-claimConfig.sql create mode 100644 modules/claim/back/models/claim-config.json diff --git a/db/versions/11401-azureMoss/00-claimConfig.sql b/db/versions/11401-azureMoss/00-claimConfig.sql new file mode 100644 index 0000000000..d50fa363d4 --- /dev/null +++ b/db/versions/11401-azureMoss/00-claimConfig.sql @@ -0,0 +1,13 @@ +ALTER TABLE `vn`.`claimConfig` + ADD COLUMN `pickupAgencyFk` INT(11) DEFAULT 6 + COMMENT 'Agencia utilizada para las recogidas mediante agencia', + ADD COLUMN `pickupDeliveryFk` INT(11) DEFAULT 847 + COMMENT 'Agencia utilizada para las recogidas mediante reparto', + + ADD CONSTRAINT `fk_claimConfig_pickupAgencyFk` + FOREIGN KEY (`pickupAgencyFk`) + REFERENCES `agencyMode` (`id`), + + ADD CONSTRAINT `fk_claimConfig_pickupdeliveryFk` + FOREIGN KEY (`pickupdeliveryFk`) + REFERENCES `agencyMode` (`id`); diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index a0dc2248c4..b220e06c8c 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -82,31 +82,64 @@ module.exports = Self => { where: {code: 'salesPerson'} }, myOptions); - const agencyMode = await models.AgencyMode.findOne({ - where: {code: 'refund'} - }, myOptions); - - const state = await models.State.findOne({ - where: {code: 'DELIVERED'} - }, myOptions); - - const zone = await models.Zone.findOne({ - where: {agencyModeFk: agencyMode.id} - }, myOptions); - const claim = await models.Claim.findOne(filter, myOptions); const today = Date.vnNew(); + let shipped; + let landed; + let warehouseFk; + let agencyModeFk; + let zoneFk; + let nickname; + let state; + if (claim.pickup === null) { + state = await models.State.findOne({ + where: {code: 'DELIVERED'} + }, myOptions); + const agencyMode = await models.AgencyMode.findOne({ + where: {code: 'refund'} + }, myOptions); + const zone = await models.Zone.findOne({ + where: {agencyModeFk: agencyMode.id} + }, myOptions); + + shipped = today; + landed = today; + warehouseFk = claim.ticket().warehouseFk; + agencyModeFk = agencyMode.id; + zoneFk = zone.id; + nickname = `Abono del: ${claim.ticketFk}`; + } else { + state = await models.State.findOne({ + where: {code: 'WAITING_FOR_PICKUP'} + }, myOptions); + const warehouse = await models.Warehouse.findOne({ + where: {code: 'rcl'} + }, myOptions); + warehouseFk = warehouse.id; + nickname = `Recogida pendiente del: ${claim.ticketFk}`; + zoneFk = zone.id; + const claimConfig = await models.claimConfig.findOne(); + if (claim.pickup == 'delivery') { + shipped = today; + landed = today; + agencyModeFk = claimConfig.pickupDeliveryFk; + } else { + shipped = null; + landed = null; + agencyModeFk = claimConfig.pickupAgencyFk; + } + } const newRefundTicket = await models.Ticket.create({ clientFk: claim.ticket().clientFk, - shipped: today, - landed: today, - nickname: `Abono del: ${claim.ticketFk}`, - warehouseFk: claim.ticket().warehouseFk, + shipped, + landed, + nickname, + warehouseFk, companyFk: claim.ticket().companyFk, addressFk: claim.ticket().addressFk, - agencyModeFk: agencyMode.id, - zoneFk: zone.id + agencyModeFk, + zoneFk }, myOptions); await models.TicketRefund.create({ diff --git a/modules/claim/back/model-config.json b/modules/claim/back/model-config.json index d90ed4c1e8..6183a31423 100644 --- a/modules/claim/back/model-config.json +++ b/modules/claim/back/model-config.json @@ -2,6 +2,9 @@ "Claim": { "dataSource": "vn" }, + "ClaimConfig": { + "dataSource": "vn" + }, "ClaimContainer": { "dataSource": "claimStorage" }, @@ -43,5 +46,5 @@ }, "ClaimObservation": { "dataSource": "vn" - } + } } diff --git a/modules/claim/back/models/claim-config.json b/modules/claim/back/models/claim-config.json new file mode 100644 index 0000000000..7e5aac1ce4 --- /dev/null +++ b/modules/claim/back/models/claim-config.json @@ -0,0 +1,47 @@ + +{ + "name": "ClaimConfig", + "base": "VnModel", + "mixins": { + "Loggable": true + }, + "options": { + "mysql": { + "table": "claimConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "maxResponsibility": { + "type": "number" + }, + "monthsToRefund": { + "type": "number" + }, + "minShipped": { + "type": "date" + }, + "pickupAgencyFk": { + "type": "number" + }, + "pickupdeliveryFk": { + "type": "number" + } + }, + "relations": { + "pickupAgency": { + "type": "belongsTo", + "model": "AgencyMode", + "foreignKey": "pickupAgencyFk" + }, + "pickupDelivery": { + "type": "belongsTo", + "model": "AgencyMode", + "foreignKey": "pickupdeliveryFk" + } + } +} From 0f83549651ede433e4a66274301c484244717b7c Mon Sep 17 00:00:00 2001 From: jgallego Date: Mon, 13 Jan 2025 09:55:46 +0100 Subject: [PATCH 057/315] feat: refs #7937 add warehouse and pickup agency fields to ClaimConfig model and update related logic --- db/dump/fixtures.before.sql | 4 +- .../11401-azureMoss/00-claimConfig.sql | 27 +++++--- loopback/locale/en.json | 2 +- .../importToNewRefundTicket.js | 69 +++++++++++-------- modules/claim/back/models/claim-config.json | 3 + 5 files changed, 62 insertions(+), 43 deletions(-) diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index ff896b84d2..5d37c0ac01 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1940,9 +1940,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`, `pickupAgencyFk`, `pickupDeliveryFk`, `warehouseFk`) VALUES - (1, 5, 4, '2016-10-01'); + (1, 5, 4, '2016-10-01', 1, 8, 4); INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`) VALUES diff --git a/db/versions/11401-azureMoss/00-claimConfig.sql b/db/versions/11401-azureMoss/00-claimConfig.sql index d50fa363d4..ccd9653a92 100644 --- a/db/versions/11401-azureMoss/00-claimConfig.sql +++ b/db/versions/11401-azureMoss/00-claimConfig.sql @@ -1,13 +1,20 @@ ALTER TABLE `vn`.`claimConfig` - ADD COLUMN `pickupAgencyFk` INT(11) DEFAULT 6 - COMMENT 'Agencia utilizada para las recogidas mediante agencia', - ADD COLUMN `pickupDeliveryFk` INT(11) DEFAULT 847 - COMMENT 'Agencia utilizada para las recogidas mediante reparto', + ADD COLUMN `pickupAgencyFk` INT(11) + COMMENT 'Agencia utilizada para las recogidas mediante agencia', + ADD COLUMN `pickupDeliveryFk` INT(11) + COMMENT 'Agencia utilizada para las recogidas mediante reparto', + ADD COLUMN `warehouseFk` smallint(6) unsigned + COMMENT 'Almacén usado para los tickets de reclamaciones', - ADD CONSTRAINT `fk_claimConfig_pickupAgencyFk` - FOREIGN KEY (`pickupAgencyFk`) - REFERENCES `agencyMode` (`id`), + ADD CONSTRAINT `fk_claimConfig_pickupAgencyFk` + FOREIGN KEY (`pickupAgencyFk`) + REFERENCES `agencyMode` (`id`), + + ADD CONSTRAINT `fk_claimConfig_pickupdeliveryFk` + FOREIGN KEY (`pickupdeliveryFk`) + REFERENCES `agencyMode` (`id`), + + ADD CONSTRAINT `fk_claimConfig_warehouseFk` + FOREIGN KEY (`warehouseFk`) + REFERENCES `warehouse` (`id`); - ADD CONSTRAINT `fk_claimConfig_pickupdeliveryFk` - FOREIGN KEY (`pickupdeliveryFk`) - REFERENCES `agencyMode` (`id`); diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 80da13ae59..2e25408c62 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -251,4 +251,4 @@ "Price cannot be blank": "Price cannot be blank", "There are tickets to be invoiced": "There are tickets to be invoiced", "The address of the customer must have information about Incoterms and Customs Agent": "The address of the customer must have information about Incoterms and Customs Agent" -} \ No newline at end of file +} diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index b220e06c8c..f6cd15607f 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -78,19 +78,17 @@ module.exports = Self => { where: {id: userId} }, myOptions); - const obsevationType = await models.ObservationType.findOne({ + const observationSalesPerson = await models.ObservationType.findOne({ where: {code: 'salesPerson'} }, myOptions); const claim = await models.Claim.findOne(filter, myOptions); const today = Date.vnNew(); - let shipped; - let landed; let warehouseFk; let agencyModeFk; - let zoneFk; let nickname; let state; + let discountValue = null; if (claim.pickup === null) { state = await models.State.findOne({ @@ -99,49 +97,47 @@ module.exports = Self => { const agencyMode = await models.AgencyMode.findOne({ where: {code: 'refund'} }, myOptions); - const zone = await models.Zone.findOne({ - where: {agencyModeFk: agencyMode.id} - }, myOptions); - shipped = today; - landed = today; warehouseFk = claim.ticket().warehouseFk; agencyModeFk = agencyMode.id; - zoneFk = zone.id; nickname = `Abono del: ${claim.ticketFk}`; } else { + const claimConfig = await models.ClaimConfig.findOne(); + + discountValue = 100; state = await models.State.findOne({ where: {code: 'WAITING_FOR_PICKUP'} }, myOptions); - const warehouse = await models.Warehouse.findOne({ - where: {code: 'rcl'} - }, myOptions); - warehouseFk = warehouse.id; + nickname = `Recogida pendiente del: ${claim.ticketFk}`; - zoneFk = zone.id; - const claimConfig = await models.claimConfig.findOne(); - if (claim.pickup == 'delivery') { - shipped = today; - landed = today; + warehouseFk = claimConfig.warehouseFk; + if (claim.pickup == 'delivery') agencyModeFk = claimConfig.pickupDeliveryFk; - } else { - shipped = null; - landed = null; + else agencyModeFk = claimConfig.pickupAgencyFk; - } } const newRefundTicket = await models.Ticket.create({ clientFk: claim.ticket().clientFk, - shipped, - landed, + shipped: await getNextShipped(today, claim.ticket().addressFk, agencyModeFk, warehouseFk, myOptions), + landed: null, nickname, warehouseFk, companyFk: claim.ticket().companyFk, addressFk: claim.ticket().addressFk, agencyModeFk, - zoneFk + zoneFk: null }, myOptions); + if (claim.pickup == 'pickup') { + const observationDelivery = + await models.ObservationType.findOne({where: {code: 'delivery'}}, myOptions); + + await saveObservation({ + description: `recoger reclamación: ${claim.id}`, + ticketFk: newRefundTicket.id, + observationTypeFk: observationDelivery.id + }, myOptions); + } await models.TicketRefund.create({ refundTicketFk: newRefundTicket.id, originalTicketFk: claim.ticket().id @@ -150,7 +146,7 @@ module.exports = Self => { await saveObservation({ description: `Reclama ticket: ${claim.ticketFk}`, ticketFk: newRefundTicket.id, - observationTypeFk: obsevationType.id + observationTypeFk: observationSalesPerson.id }, myOptions); await models.Ticket.state(ctx, { @@ -160,7 +156,7 @@ module.exports = Self => { }, myOptions); const salesToRefund = await models.ClaimBeginning.find(salesFilter, myOptions); - const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, myOptions); + const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, discountValue, myOptions); await insertIntoClaimEnd(createdSales, id, worker.id, myOptions); await Self.rawSql('CALL vn.ticketCalculateClon(?, ?)', [ @@ -176,7 +172,7 @@ module.exports = Self => { } }; - async function addSalesToTicket(salesToRefund, ticketId, options) { + async function addSalesToTicket(salesToRefund, ticketId, discountValue, options) { let formatedSales = []; salesToRefund.forEach(sale => { let formatedSale = { @@ -185,7 +181,7 @@ module.exports = Self => { concept: sale.sale().concept, quantity: -Math.abs(sale.quantity), price: sale.sale().price, - discount: sale.sale().discount, + discount: discountValue ?? sale.sale().discount, reserved: sale.sale().reserved, isPicked: sale.sale().isPicked, created: sale.sale().created @@ -218,4 +214,17 @@ module.exports = Self => { observation.description ], options); } + + async function getNextShipped(vLanded, vAddressFk, vAgencyModeFk, warehouseFk, options) { + await Self.rawSql( + 'CALL vn.zone_getShipped(?, ?, ?, TRUE)', [vLanded, vAddressFk, vAgencyModeFk], options); + + try { + const [resultSet] = await Self.rawSql( + 'SELECT shipped FROM tmp.zoneGetShipped WHERE warehouseFk = ?', [warehouseFk], options); + return resultSet.shipped; + } catch (error) { + return Date.vnNew(); + } + } }; diff --git a/modules/claim/back/models/claim-config.json b/modules/claim/back/models/claim-config.json index 7e5aac1ce4..858070ae49 100644 --- a/modules/claim/back/models/claim-config.json +++ b/modules/claim/back/models/claim-config.json @@ -30,6 +30,9 @@ }, "pickupdeliveryFk": { "type": "number" + }, + "warehouseFk": { + "type": "number" } }, "relations": { From b97eeea2d2094688b88a836be007d63427d3cbb2 Mon Sep 17 00:00:00 2001 From: jgallego Date: Thu, 16 Jan 2025 08:30:11 +0100 Subject: [PATCH 058/315] refactor: refs #7937 streamline importToNewRefundTicket function and add comprehensive tests --- .../importToNewRefundTicket.js | 68 +++++++------ .../importToNewRefundTicket.spec.js | 44 --------- .../specs/importToNewRefundTicket.spec.js | 97 +++++++++++++++++++ 3 files changed, 135 insertions(+), 74 deletions(-) delete mode 100644 modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js create mode 100644 modules/claim/back/methods/claim-beginning/specs/importToNewRefundTicket.spec.js diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index f6cd15607f..aea649576d 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -74,10 +74,6 @@ module.exports = Self => { } try { - const worker = await models.Worker.findOne({ - where: {id: userId} - }, myOptions); - const observationSalesPerson = await models.ObservationType.findOne({ where: {code: 'salesPerson'} }, myOptions); @@ -89,6 +85,7 @@ module.exports = Self => { let nickname; let state; let discountValue = null; + let packages = 0; if (claim.pickup === null) { state = await models.State.findOne({ @@ -105,6 +102,7 @@ module.exports = Self => { const claimConfig = await models.ClaimConfig.findOne(); discountValue = 100; + packages = 1; state = await models.State.findOne({ where: {code: 'WAITING_FOR_PICKUP'} }, myOptions); @@ -125,7 +123,8 @@ module.exports = Self => { companyFk: claim.ticket().companyFk, addressFk: claim.ticket().addressFk, agencyModeFk, - zoneFk: null + zoneFk: claim.ticket().zoneFk, + packages }, myOptions); if (claim.pickup == 'pickup') { @@ -149,20 +148,16 @@ module.exports = Self => { observationTypeFk: observationSalesPerson.id }, myOptions); + const salesToRefund = await models.ClaimBeginning.find(salesFilter, myOptions); + const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, discountValue, myOptions); + await insertIntoClaimEnd(createdSales, id, userId, myOptions); + await models.Ticket.state(ctx, { ticketFk: newRefundTicket.id, stateFk: state.id, - userFk: worker.id + userFk: userId }, myOptions); - const salesToRefund = await models.ClaimBeginning.find(salesFilter, myOptions); - const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, discountValue, myOptions); - await insertIntoClaimEnd(createdSales, id, worker.id, myOptions); - - await Self.rawSql('CALL vn.ticketCalculateClon(?, ?)', [ - newRefundTicket.id, claim.ticketFk - ], myOptions); - if (tx) await tx.commit(); return newRefundTicket; @@ -172,23 +167,36 @@ module.exports = Self => { } }; - async function addSalesToTicket(salesToRefund, ticketId, discountValue, options) { - let formatedSales = []; - salesToRefund.forEach(sale => { - let formatedSale = { - itemFk: sale.sale().itemFk, - ticketFk: ticketId, - concept: sale.sale().concept, - quantity: -Math.abs(sale.quantity), - price: sale.sale().price, - discount: discountValue ?? sale.sale().discount, - reserved: sale.sale().reserved, - isPicked: sale.sale().isPicked, - created: sale.sale().created + async function addSalesToTicket(salesToRefund, newTicketId, discountValue, options) { + const createdSales = []; + const models = Self.app.models; + for (const saleToRefund of salesToRefund) { + const oldSale = saleToRefund.sale(); + const newSaleData = { + itemFk: oldSale.itemFk, + ticketFk: newTicketId, + concept: oldSale.concept, + quantity: -Math.abs(saleToRefund.quantity), + price: oldSale.price, + discount: discountValue ?? oldSale.discount, + reserved: oldSale.reserved, + isPicked: oldSale.isPicked, + created: oldSale.created }; - formatedSales.push(formatedSale); - }); - return await Self.app.models.Sale.create(formatedSales, options); + const newSale = await models.Sale.create(newSaleData, options); + const oldSaleComponents = await models.SaleComponent.find({ + where: {saleFk: oldSale.id} + }, options); + const newComponents = oldSaleComponents.map(component => { + const data = component.toJSON ? component.toJSON() : {...component}; + delete data.id; + data.saleFk = newSale.id; + return data; + }); + await models.SaleComponent.create(newComponents, options); + createdSales.push(newSale); + } + return createdSales; } async function insertIntoClaimEnd(createdSales, claimId, workerId, options) { diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js deleted file mode 100644 index 156caaeec6..0000000000 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js +++ /dev/null @@ -1,44 +0,0 @@ -const app = require('vn-loopback/server/server'); -const LoopBackContext = require('loopback-context'); -const models = app.models; - -describe('claimBeginning', () => { - const claimManagerId = 72; - const activeCtx = { - accessToken: {userId: claimManagerId}, - __: value => value - }; - const ctx = {req: activeCtx}; - - describe('importToNewRefundTicket()', () => { - it('should create a new ticket with negative sales and insert the negative sales into claimEnd', async() => { - spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ - active: activeCtx - }); - let claimId = 1; - - const tx = await models.Entry.beginTransaction({}); - try { - const options = {transaction: tx}; - - const ticket = await models.ClaimBeginning.importToNewRefundTicket(ctx, claimId, options); - - const refundTicketSales = await models.Sale.find({ - where: {ticketFk: ticket.id} - }, options); - const salesInsertedInClaimEnd = await models.ClaimEnd.find({ - where: {claimFk: claimId} - }, options); - - expect(refundTicketSales.length).toEqual(1); - expect(refundTicketSales[0].quantity).toEqual(-5); - expect(salesInsertedInClaimEnd[0].saleFk).toEqual(refundTicketSales[0].id); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); - }); -}); diff --git a/modules/claim/back/methods/claim-beginning/specs/importToNewRefundTicket.spec.js b/modules/claim/back/methods/claim-beginning/specs/importToNewRefundTicket.spec.js new file mode 100644 index 0000000000..f77efbddf0 --- /dev/null +++ b/modules/claim/back/methods/claim-beginning/specs/importToNewRefundTicket.spec.js @@ -0,0 +1,97 @@ +const app = require('vn-loopback/server/server'); +const LoopBackContext = require('loopback-context'); +const models = app.models; + +describe('importToNewRefundTicket()', () => { + let tx; + const claimManagerId = 72; + const activeCtx = { + accessToken: {userId: claimManagerId}, + }; + let ctx = {req: activeCtx}; + let options; + const claimId = 1; + + beforeEach(async() => { + LoopBackContext.getCurrentContext = () => ({ + active: activeCtx, + }); + tx = await models.Entry.beginTransaction({}); + options = {transaction: tx}; + }); + + afterEach(async() => { + await tx.rollback(); + }); + + it('should create a new ticket with negative sales and insert the negative sales into claimEnd', async() => { + const ticket = await models.ClaimBeginning.importToNewRefundTicket(ctx, claimId, options); + + const refundTicketSales = await models.Sale.find({ + where: {ticketFk: ticket.id} + }, options); + const salesInsertedInClaimEnd = await models.ClaimEnd.find({ + where: {claimFk: claimId} + }, options); + + expect(refundTicketSales.length).toEqual(1); + expect(refundTicketSales[0].quantity).toEqual(-5); + expect(salesInsertedInClaimEnd[0].saleFk).toEqual(refundTicketSales[0].id); + }); + + it('debe establecer estado DELIVERED y modo de agencia refund', async() => { + const state = await models.State.findOne({ + where: {code: 'DELIVERED'} + }, options); + const ticket = await models.ClaimBeginning.importToNewRefundTicket(ctx, claimId, options); + const ticketTracking = await models.TicketTracking.findOne({ + where: {ticketFk: ticket.id}, + order: 'id DESC' + }, options); + + const newSales = await models.Sale.find({ + where: {ticketFk: ticket.id} + }, options); + + newSales.forEach(sale => { + expect(sale.discount).toEqual(0); + }); + + expect(ticketTracking.stateFk).toEqual(state.id); + }); + + it('debe establecer estado WAITING_FOR_PICKUP para las recogidas por reparto', async() => { + const state = await models.State.findOne({ + where: {code: 'WAITING_FOR_PICKUP'} + }, options); + await models.Claim.updateAll({id: claimId}, {pickup: 'delivery'}, options); + const ticket = await models.ClaimBeginning.importToNewRefundTicket(ctx, claimId, options); + const ticketTracking = await models.TicketTracking.findOne({ + where: {ticketFk: ticket.id}, + order: 'id DESC' + }, options); + + expect(ticketTracking.stateFk).toEqual(state.id); + }); + + it('debe establecer estado WAITING_FOR_PICKUP para las recogidas por agencia', async() => { + const state = await models.State.findOne({ + where: {code: 'WAITING_FOR_PICKUP'} + }, options); + await models.Claim.updateAll({id: claimId}, {pickup: 'agency'}, options); + const ticket = await models.ClaimBeginning.importToNewRefundTicket(ctx, claimId, options); + const ticketTracking = await models.TicketTracking.findOne({ + where: {ticketFk: ticket.id}, + order: 'id DESC' + }, options); + const newSales = await models.Sale.find({ + where: {ticketFk: ticket.id} + }, options); + + newSales.forEach(sale => { + expect(sale.discount).toEqual(100); + }); + + expect(ticketTracking.stateFk).toEqual(state.id); + }); +}); From f8a156b7ab501d7ffa90035995f7d082a6f249ee Mon Sep 17 00:00:00 2001 From: pablone Date: Fri, 17 Jan 2025 08:11:18 +0100 Subject: [PATCH 059/315] 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 060/315] 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 bd54eacda187e55bf575687715d8d53af676a634 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sun, 26 Jan 2025 02:36:39 +0100 Subject: [PATCH 061/315] 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 062/315] 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 063/315] 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 064/315] 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 a93e8b28db87fd57d441cf3a027d78618d8d5f71 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 28 Jan 2025 23:37:56 +0100 Subject: [PATCH 065/315] 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 066/315] 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 067/315] 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 75b4202a7b5c61cefea2415e9d8a41af6dccdc40 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 31 Jan 2025 01:04:14 +0100 Subject: [PATCH 068/315] 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 069/315] 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 070/315] 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 071/315] 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 072/315] 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 073/315] 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 e7dd1f6a58159a694adfdf588600378e39770294 Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 3 Feb 2025 13:16:48 +0100 Subject: [PATCH 074/315] 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 075/315] 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 076/315] 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 5d209314f6a7bc1ac5865f0c9bacf12d72cf0f4e Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 4 Feb 2025 14:09:48 +0100 Subject: [PATCH 077/315] 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 272c7c028925c679abe1bc32e389f8924157604c Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Tue, 4 Feb 2025 23:42:16 +0100 Subject: [PATCH 078/315] 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 079/315] 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 e02dcf23b71eaf8174bd496ed783d68d2f902247 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 5 Feb 2025 15:36:01 +0100 Subject: [PATCH 080/315] 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 081/315] 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 082/315] 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 083/315] 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 084/315] 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 085/315] 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 086/315] 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 087/315] 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 ab0667f85c804eb3c4797756c0cb62dac946a6ac Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 12:31:46 +0000 Subject: [PATCH 088/315] 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 089/315] 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 090/315] 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 091/315] 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 092/315] 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 6a83cec33fbc163cc7c99df0bc72e4ee21da977a Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 6 Feb 2025 17:43:58 +0100 Subject: [PATCH 093/315] fix: add await --- modules/client/back/models/client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/client/back/models/client.js b/modules/client/back/models/client.js index dc19c5d812..967469c060 100644 --- a/modules/client/back/models/client.js +++ b/modules/client/back/models/client.js @@ -250,7 +250,7 @@ module.exports = Self => { const loopBackContext = LoopBackContext.getCurrentContext(); const accessToken = {req: loopBackContext.active.accessToken}; - const editVerifiedDataWithoutTaxDataChecked = models.ACL.checkAccessAcl( + const editVerifiedDataWithoutTaxDataChecked = await models.ACL.checkAccessAcl( accessToken, 'Client', 'editVerifiedDataWithoutTaxDataCheck', From ba58746a030c1ca025e1e8e101ca3cadf596f989 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 6 Feb 2025 23:22:58 +0100 Subject: [PATCH 094/315] 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 ec01c6b0c2f08ebe4b56cfe48379eb31b2fd3e63 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 7 Feb 2025 07:51:18 +0100 Subject: [PATCH 095/315] fix: fixed company filter --- modules/invoiceOut/back/methods/invoiceOut/filter.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/invoiceOut/back/methods/invoiceOut/filter.js b/modules/invoiceOut/back/methods/invoiceOut/filter.js index ab67821403..89cba2ac6d 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/filter.js +++ b/modules/invoiceOut/back/methods/invoiceOut/filter.js @@ -31,6 +31,11 @@ module.exports = Self => { type: 'integer', description: 'The client id', http: {source: 'query'} + }, { + arg: 'companyFk', + type: 'integer', + description: 'The company id', + http: {source: 'query'} }, { arg: 'fi', @@ -148,6 +153,7 @@ module.exports = Self => { i.hasPdf, i.customsAgentFk, c.socialName AS clientSocialName, + i.companyFk, co.code AS companyCode, ca.fiscalName AS customsAgentName FROM invoiceOut i From 9390c0efedb180902b0cdf7c140f1391ef639bf7 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 07:53:00 +0100 Subject: [PATCH 096/315] 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 200f159c6b41f2de51519a20ef3173d0bcff9b16 Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 7 Feb 2025 07:55:08 +0100 Subject: [PATCH 097/315] fix: style --- modules/invoiceOut/back/methods/invoiceOut/filter.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/invoiceOut/back/methods/invoiceOut/filter.js b/modules/invoiceOut/back/methods/invoiceOut/filter.js index 89cba2ac6d..9d18646765 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/filter.js +++ b/modules/invoiceOut/back/methods/invoiceOut/filter.js @@ -31,7 +31,8 @@ module.exports = Self => { type: 'integer', description: 'The client id', http: {source: 'query'} - }, { + }, + { arg: 'companyFk', type: 'integer', description: 'The company id', From e035a73e064d7eddb2d0e12d8b8d08e70fc9b979 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 07:57:10 +0100 Subject: [PATCH 098/315] 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 099/315] 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 100/315] 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 101/315] 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 102/315] 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 23134deab5d57a14ed9248640510f80c739052c6 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 11:11:22 +0100 Subject: [PATCH 103/315] fix: before save checkAccessAcl --- modules/client/back/models/client.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/client/back/models/client.js b/modules/client/back/models/client.js index 967469c060..477431e218 100644 --- a/modules/client/back/models/client.js +++ b/modules/client/back/models/client.js @@ -248,7 +248,8 @@ module.exports = Self => { const models = Self.app.models; const loopBackContext = LoopBackContext.getCurrentContext(); - const accessToken = {req: loopBackContext.active.accessToken}; + + const accessToken = {req: {accessToken: loopBackContext.active.accessToken}}; const editVerifiedDataWithoutTaxDataChecked = await models.ACL.checkAccessAcl( accessToken, From ba323bb7bf3f6b1cb0ede117ab678808ca6a38fb Mon Sep 17 00:00:00 2001 From: Pako Date: Fri, 7 Feb 2025 12:53:15 +0100 Subject: [PATCH 104/315] 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 105/315] 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 106/315] 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 107/315] 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 95d2823666fab9f5b897a7ff3c47ae0cc765d176 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 7 Feb 2025 14:27:27 +0100 Subject: [PATCH 108/315] fix: refs #7024 Deleted dated check --- db/routines/vn/triggers/entry_beforeUpdate.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/db/routines/vn/triggers/entry_beforeUpdate.sql b/db/routines/vn/triggers/entry_beforeUpdate.sql index 4f2c5ed4ab..a375fc2afa 100644 --- a/db/routines/vn/triggers/entry_beforeUpdate.sql +++ b/db/routines/vn/triggers/entry_beforeUpdate.sql @@ -10,7 +10,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 From adf416a086834e2d4b8c5ce551af1bae3ee821a5 Mon Sep 17 00:00:00 2001 From: Pako Date: Fri, 7 Feb 2025 14:29:50 +0100 Subject: [PATCH 109/315] 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 b56468d3aac68d57263f84e5622193ab51bbb82e Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 7 Feb 2025 15:05:04 +0100 Subject: [PATCH 110/315] fix: refs #7024 Test --- modules/entry/back/models/specs/entry.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/entry/back/models/specs/entry.spec.js b/modules/entry/back/models/specs/entry.spec.js index 15a8202c4d..e468e08715 100644 --- a/modules/entry/back/models/specs/entry.spec.js +++ b/modules/entry/back/models/specs/entry.spec.js @@ -29,9 +29,9 @@ describe('entry_isEditable trigger', () => { }); async function prepareEntry(isBooked, typeFk) { - let newCreated = Date.vnNew(); + const companyFk = 69; await entry.updateAttributes({isBooked, typeFk}, options); - await entry.updateAttributes({dated: newCreated}, options); + await entry.updateAttributes({companyFk}, options); } it('should throw an error when entry is booked and typeFk is null', async() => { From 9bb273807de6b90b1f642f92b86116c711f78fbf Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 7 Feb 2025 16:18:26 +0100 Subject: [PATCH 111/315] 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 112/315] 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 113/315] 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 50a295d4953b48927cf1c0f8584a4179137a586e Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 10 Feb 2025 07:25:39 +0100 Subject: [PATCH 114/315] fix: refs #7162 Update JOIN condition for agencyMode in ticket_doCmr --- db/routines/vn/procedures/ticket_doCmr.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/ticket_doCmr.sql b/db/routines/vn/procedures/ticket_doCmr.sql index 59bb3e0704..c53cf1221f 100644 --- a/db/routines/vn/procedures/ticket_doCmr.sql +++ b/db/routines/vn/procedures/ticket_doCmr.sql @@ -33,7 +33,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 @@ -42,7 +42,7 @@ BEGIN AND w.code = 'ALG' AND t.id = vSelf GROUP BY t.id; - + IF vCmrFk THEN UPDATE cmr c JOIN tTicket t From b60f251c56187281d92cfa557eb6254d5adc96a8 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 10 Feb 2025 07:34:15 +0100 Subject: [PATCH 115/315] 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 116/315] 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 117/315] 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 118/315] 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 afef9f40258cde8676054d6bb6304ce7d7a310ae Mon Sep 17 00:00:00 2001 From: jgallego Date: Mon, 10 Feb 2025 13:14:57 +0100 Subject: [PATCH 119/315] feat: refs #7937 add initial state 'Recogido' to state table with relevant attributes --- db/versions/11401-azureMoss/01-createState.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 db/versions/11401-azureMoss/01-createState.sql diff --git a/db/versions/11401-azureMoss/01-createState.sql b/db/versions/11401-azureMoss/01-createState.sql new file mode 100644 index 0000000000..8162e45a9d --- /dev/null +++ b/db/versions/11401-azureMoss/01-createState.sql @@ -0,0 +1,2 @@ +INSERT IGNORE INTO vn.state (name,`order`,alertLevel,code,isPreviousPreparable,isPicked) + VALUES ('Recogido',3,4,'PICKED_UP',0,1) From ec5ef3d7f8e0ba10ddecee9311fb1502b8654be0 Mon Sep 17 00:00:00 2001 From: Pako Date: Mon, 10 Feb 2025 14:00:34 +0100 Subject: [PATCH 120/315] 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 121/315] 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 02f51a244d6b71b8210b25f31f5f73c3238b2fe7 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 11 Feb 2025 12:19:15 +0100 Subject: [PATCH 122/315] feat: refs #8555 added new filter field --- modules/travel/back/methods/travel/extraCommunityFilter.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/travel/back/methods/travel/extraCommunityFilter.js b/modules/travel/back/methods/travel/extraCommunityFilter.js index 2f3f998d6e..5c294a9651 100644 --- a/modules/travel/back/methods/travel/extraCommunityFilter.js +++ b/modules/travel/back/methods/travel/extraCommunityFilter.js @@ -67,6 +67,11 @@ module.exports = Self => { type: 'number', description: 'The freighter supplier id' }, + { + arg: 'entrySupplierFk', + type: 'number', + description: 'The supplier of the entry(not freighter) id' + }, ], returns: { type: ['Object'], @@ -94,6 +99,8 @@ module.exports = Self => { return {'t.landed': {lte: value}}; case 'continent': return {'cnt.code': value}; + case 'entrySupplierFk': + return {'e.supplierFk': value}; case 'id': case 'agencyModeFk': case 'warehouseOutFk': From 96248132a1d519493f521f740a2040994aa1b366 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 11 Feb 2025 13:02:50 +0100 Subject: [PATCH 123/315] 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 a387e3ae929db2012b80bf6b0f3054ac38fad9c8 Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 11 Feb 2025 13:25:30 +0100 Subject: [PATCH 124/315] feat: refs #7162 Add packages and packagesList to ticket_doCmr procedure --- db/routines/vn/procedures/ticket_doCmr.sql | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/ticket_doCmr.sql b/db/routines/vn/procedures/ticket_doCmr.sql index c53cf1221f..2c3f2f1dbd 100644 --- a/db/routines/vn/procedures/ticket_doCmr.sql +++ b/db/routines/vn/procedures/ticket_doCmr.sql @@ -1,5 +1,7 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_doCmr`(vSelf INT) +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`ticket_doCmr`( + vSelf INT +) BEGIN /** * Crea u actualiza la información del CMR asociado con @@ -19,6 +21,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 @@ -52,9 +55,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, @@ -62,6 +66,7 @@ BEGIN addressToFk, addressFromFk, supplierFk, + packagesList, ead ) SELECT * FROM tTicket; From 3fbd740a2b3ecd9419881c2ee0fa5f8cfbc35a37 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 11 Feb 2025 14:31:26 +0100 Subject: [PATCH 125/315] fix: address invoice daily --- db/routines/vn/procedures/ticket_close.sql | 24 +-- .../ticket/back/methods/ticket/closeAll.js | 154 ++++++------------ .../methods/ticket/specs/closeAll.spec.js | 2 +- 3 files changed, 55 insertions(+), 125 deletions(-) diff --git a/db/routines/vn/procedures/ticket_close.sql b/db/routines/vn/procedures/ticket_close.sql index e2dcef9a5a..2b6a33fbaa 100644 --- a/db/routines/vn/procedures/ticket_close.sql +++ b/db/routines/vn/procedures/ticket_close.sql @@ -18,6 +18,7 @@ BEGIN DECLARE vWithPackage BOOL; DECLARE vHasToInvoice BOOL; DECLARE vSerial VARCHAR(2); + DECLARE vStateCode VARCHAR(45); DECLARE cur CURSOR FOR SELECT ticketFk FROM tmp.ticket_close; @@ -80,27 +81,14 @@ BEGIN AND getSpecialPrice(e.freightItemFk, vClientFk) > 0 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 vn.getAlert3State(vCurTicketFk) INTO vStateCode; END IF; + CALL ticket_setState(vCurTicketFk, vStateCode); + END LOOP; CLOSE cur; diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js index 71122808cc..d98f448cf5 100644 --- a/modules/ticket/back/methods/ticket/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -1,5 +1,3 @@ -const closure = require('./closure'); - module.exports = Self => { Self.remoteMethodCtx('closeAll', { description: 'Makes the closure process from all warehouses', @@ -36,111 +34,32 @@ module.exports = Self => { toDate.setHours(0, 0, 0, 0); toDate.setDate(toDate.getDate() - 1); - const tickets = await Self.rawSql(` - SELECT t.id, - t.clientFk, - t.companyFk, - c.id clientFk, - c.name clientName, - c.email recipient, - c.salesPersonFk, - c.isToBeMailed, - c.hasToInvoice, - c.hasDailyInvoice, - eu.email salesPersonEmail, - t.addressFk - FROM ticket t - JOIN agencyMode am ON am.id = t.agencyModeFk - JOIN warehouse wh ON wh.id = t.warehouseFk AND wh.hasComission - JOIN ticketState ts ON ts.ticketFk = t.id - JOIN alertLevel al ON al.id = ts.alertLevel - JOIN client c ON c.id = t.clientFk - JOIN province p ON p.id = c.provinceFk - JOIN country co ON co.id = p.countryFk - LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk - JOIN ticketConfig tc ON TRUE - WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code <> 'delivered')) - AND t.shipped BETWEEN ? - INTERVAL tc.closureDaysAgo DAY AND util.dayEnd(?) - AND t.refFk IS NULL - GROUP BY t.id + await Self.rawSql(` + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_close; + CREATE TEMPORARY TABLE tmp.ticket_close + ENGINE = MEMORY + SELECT + DISTINCT t.id ticketFk, + t.clientFk, + t.addressFk, + c.hasToInvoiceByAddress, + t.totalWithVat, + t.companyFk + FROM ticket t + JOIN agencyMode am ON am.id = t.agencyModeFk + JOIN warehouse wh ON wh.id = t.warehouseFk AND wh.hasComission + JOIN ticketState ts ON ts.ticketFk = t.id + JOIN alertLevel al ON al.id = ts.alertLevel + JOIN client c ON c.id = t.clientFk + JOIN province p ON p.id = c.provinceFk + JOIN country co ON co.id = p.countryFk + LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk + JOIN ticketConfig tc ON TRUE + WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code <> 'delivered')) + AND t.shipped BETWEEN ? - INTERVAL tc.closureDaysAgo DAY AND util.dayEnd(?) + AND t.refFk IS NULL; + CALL ticket_close(); `, [toDate, toDate], myOptions); - const ticketIds = tickets.map(ticket => ticket.id); - await Self.rawSql(` - INSERT INTO util.debug (variable, value) - VALUES ('nightInvoicing', ?) - `, [ticketIds.join(',')], myOptions); - - await Self.rawSql(` - WITH ticketNotInvoiceable AS( - SELECT JSON_OBJECT( - 'tickets', - JSON_ARRAYAGG( - JSON_OBJECT( - 'ticketId', ticketFk, - 'reason', reason, - 'clientId', clientFk - ) - ) - )errors - FROM ( - SELECT ticketFk, - CONCAT_WS(', ', - IF(hasErrorToInvoice, 'Facturar', NULL), - IF(hasErrorTaxDataChecked, 'Datos comprobados', NULL), - IF(hasErrorDeleted, 'Eliminado', NULL), - IF(hasErrorItemTaxCountry, 'Impuesto no informado', NULL), - IF(hasErrorAddress, 'Sin dirección', NULL), - IF(hasErrorInfoTaxAreaWorld, 'Datos exportaciones', NULL)) reason, - clientFk - FROM ( - SELECT t.id ticketFk, - SUM(NOT c.hasToInvoice) hasErrorToInvoice, - SUM(NOT c.isTaxDataChecked) hasErrorTaxDataChecked, - SUM(t.isDeleted) hasErrorDeleted, - SUM(itc.id IS NULL) hasErrorItemTaxCountry, - SUM(a.id IS NULL) hasErrorAddress, - SUM(ios.code IS NOT NULL - AND(ad.customsAgentFk IS NULL - OR ad.incotermsFk IS NULL)) hasErrorInfoTaxAreaWorld, - t.clientFk clientFk - FROM ticket t - LEFT JOIN address ad ON ad.id = t.addressFk - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - JOIN supplier su ON su.id = t.companyFk - JOIN agencyMode am ON am.id = t.agencyModeFk - JOIN warehouse wh ON wh.id = t.warehouseFk AND wh.hasComission - JOIN ticketState ts ON ts.ticketFk = t.id - JOIN alertLevel al ON al.id = ts.alertLevel - JOIN client c ON c.id = t.clientFk - JOIN province p ON p.id = c.provinceFk - JOIN ticketConfig tc ON TRUE - LEFT JOIN autonomy a ON a.id = p.autonomyFk - JOIN country co ON co.id = p.countryFk - LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk - LEFT JOIN itemTaxCountry itc ON itc.itemFk = i.id - AND itc.countryFk = su.countryFk - LEFT JOIN vn.invoiceOutSerial ios ON ios.taxAreaFk = 'WORLD' - AND ios.code = invoiceSerial(t.clientFk, t.companyFk, 'multiple') - WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code <> 'delivered')) - AND t.shipped BETWEEN ? - INTERVAL tc.closureDaysAgo DAY AND util.dayEnd(?) - AND t.refFk IS NULL - AND c.hasDailyInvoice - GROUP BY ticketFk - HAVING hasErrorToInvoice - OR hasErrorTaxDataChecked - OR hasErrorDeleted - OR hasErrorItemTaxCountry - OR hasErrorAddress - OR hasErrorInfoTaxAreaWorld - )sub - )sub2 - ) SELECT IF(errors = '{"tickets": null}', - 'No errors', - util.notification_send('invoice-ticket-closure', errors, NULL)) - FROM ticketNotInvoiceable`, [toDate, toDate], myOptions); - - await closure(ctx, Self, tickets, myOptions); await Self.rawSql(` UPDATE ticket t @@ -157,9 +76,32 @@ module.exports = Self => { AND tob.id IS NULL AND t.routeFk`, [toDate, toDate], myOptions); + const [clients] = await Self.rawSql(` + SELECT clientFk clientId, + addressFk addressId, + companyFk, + SUM(totalWithVat) total, + 'quick' serialType + FROM tmp.ticket_close + GROUP BY IF (hasToInvoiceByAddress, addressFk, clientFk), companyFk + HAVING total > 0; + DROP TEMPORARY TABLE tmp.ticket_close; + `, [], myOptions); + if (tx) await tx.commit(); + for (const client of clients) { + ctx.args = { + ...client, + invoiceDate: Date.vnNew(), + maxShipped: Date.vnNew() + }; + const id = await Self.app.models.InvoiceOut.invoiceClient(ctx); + // if (id) + // await Self.app.models.InvoiceOut.makePdfAndNotify(ctx, id); + } + return { message: 'Success' }; diff --git a/modules/ticket/back/methods/ticket/specs/closeAll.spec.js b/modules/ticket/back/methods/ticket/specs/closeAll.spec.js index f01541eec0..923f688bbb 100644 --- a/modules/ticket/back/methods/ticket/specs/closeAll.spec.js +++ b/modules/ticket/back/methods/ticket/specs/closeAll.spec.js @@ -1,7 +1,7 @@ const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); -describe('Ticket Closure - closeAll function', () => { +fdescribe('Ticket Closure - closeAll function', () => { let ctx = { req: { getLocale: () => 'es', From 92232b34cec774d3983960011ef029e79b6402e8 Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 11 Feb 2025 15:55:08 +0100 Subject: [PATCH 126/315] fix: hotfix delivery-note --- print/templates/reports/delivery-note/delivery-note.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/print/templates/reports/delivery-note/delivery-note.html b/print/templates/reports/delivery-note/delivery-note.html index 89bc07488e..4f5d71106e 100644 --- a/print/templates/reports/delivery-note/delivery-note.html +++ b/print/templates/reports/delivery-note/delivery-note.html @@ -70,7 +70,7 @@ {{sale.itemFk}} {{sale.quantity}} {{sale.concept}} - {{sale.subName}} + {{sale.subName}} {{sale.price | currency('EUR', $i18n.locale)}} {{(sale.discount / 100) | percentage}} {{sale.vatType}} From f347d9668f613707fd976bcc10c15fc022af68f9 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 11 Feb 2025 16:50:00 +0100 Subject: [PATCH 127/315] 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 3adc155b74f3125bf07d46c3e42dd0a9fe7fce45 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Wed, 12 Feb 2025 07:57:31 +0100 Subject: [PATCH 128/315] feat: refs #4409 buyLot and buyLot refresh refactor and fixes --- .../stock/procedures/buyLot_refresh.sql | 126 ++++++++++++++++++ ...d_removePick.sql => buyLot_removePick.sql} | 16 +-- ...uantity.sql => buyLot_requestQuantity.sql} | 2 +- .../{inbound_sync.sql => buyLot_sync.sql} | 2 +- .../stock/procedures/buyOut_refresh.sql | 46 +++++++ .../stock/procedures/buyOut_refreshBuy.sql | 52 ++++++++ .../stock/procedures/buyOut_refreshOrder.sql | 55 ++++++++ .../stock/procedures/buyOut_refreshSale.sql | 53 ++++++++ ...uantity.sql => buyOut_requestQuantity.sql} | 10 +- .../{outbound_sync.sql => buyOut_sync.sql} | 2 +- .../{inbound_addPick.sql => buy_addPick.sql} | 12 +- db/routines/stock/procedures/log_clean.sql | 7 - db/routines/stock/procedures/log_delete.sql | 19 --- .../stock/procedures/log_refreshBuy.sql | 74 ---------- .../stock/procedures/log_refreshOrder.sql | 47 ------- .../stock/procedures/log_refreshSale.sql | 66 --------- db/routines/stock/procedures/log_sync.sql | 45 ------- .../stock/triggers/buyOut_afterDelete.sql | 15 +++ .../stock/triggers/buyOut_beforeInsert.sql | 8 ++ .../stock/triggers/inbound_afterDelete.sql | 22 --- .../stock/triggers/inbound_beforeInsert.sql | 15 --- .../stock/triggers/outbound_afterDelete.sql | 22 --- .../stock/triggers/outbound_beforeInsert.sql | 16 --- .../10996-pinkPhormium/03-dropStockLog.sql | 1 + db/versions/11009-tealRuscus/00-buyPick.sql | 18 +++ db/versions/11009-tealRuscus/01-alterBuy.sql | 5 + .../11009-tealRuscus/01-alterTravel.sql | 4 + db/versions/11009-tealRuscus/02-buyLot.sql | 14 ++ .../03-removeStockVisible.sql | 1 + db/versions/11009-tealRuscus/04-buyOut.sql | 6 + db/versions/11009-tealRuscus/05-buyOutBuy.sql | 8 ++ .../11009-tealRuscus/05-buyOutOrder.sql | 6 + .../11009-tealRuscus/05-buyOutSale.sql | 6 + 33 files changed, 447 insertions(+), 354 deletions(-) create mode 100644 db/routines/stock/procedures/buyLot_refresh.sql rename db/routines/stock/procedures/{inbound_removePick.sql => buyLot_removePick.sql} (53%) rename db/routines/stock/procedures/{inbound_requestQuantity.sql => buyLot_requestQuantity.sql} (98%) rename db/routines/stock/procedures/{inbound_sync.sql => buyLot_sync.sql} (98%) create mode 100644 db/routines/stock/procedures/buyOut_refresh.sql create mode 100644 db/routines/stock/procedures/buyOut_refreshBuy.sql create mode 100644 db/routines/stock/procedures/buyOut_refreshOrder.sql create mode 100644 db/routines/stock/procedures/buyOut_refreshSale.sql rename db/routines/stock/procedures/{outbound_requestQuantity.sql => buyOut_requestQuantity.sql} (93%) rename db/routines/stock/procedures/{outbound_sync.sql => buyOut_sync.sql} (98%) rename db/routines/stock/procedures/{inbound_addPick.sql => buy_addPick.sql} (59%) delete mode 100644 db/routines/stock/procedures/log_clean.sql delete mode 100644 db/routines/stock/procedures/log_delete.sql delete mode 100644 db/routines/stock/procedures/log_refreshBuy.sql delete mode 100644 db/routines/stock/procedures/log_refreshOrder.sql delete mode 100644 db/routines/stock/procedures/log_refreshSale.sql create mode 100644 db/routines/stock/triggers/buyOut_afterDelete.sql create mode 100644 db/routines/stock/triggers/buyOut_beforeInsert.sql delete mode 100644 db/routines/stock/triggers/inbound_afterDelete.sql delete mode 100644 db/routines/stock/triggers/inbound_beforeInsert.sql delete mode 100644 db/routines/stock/triggers/outbound_afterDelete.sql delete mode 100644 db/routines/stock/triggers/outbound_beforeInsert.sql create mode 100644 db/versions/10996-pinkPhormium/03-dropStockLog.sql create mode 100644 db/versions/11009-tealRuscus/00-buyPick.sql create mode 100644 db/versions/11009-tealRuscus/01-alterBuy.sql create mode 100644 db/versions/11009-tealRuscus/01-alterTravel.sql create mode 100644 db/versions/11009-tealRuscus/02-buyLot.sql create mode 100644 db/versions/11009-tealRuscus/03-removeStockVisible.sql create mode 100644 db/versions/11009-tealRuscus/04-buyOut.sql create mode 100644 db/versions/11009-tealRuscus/05-buyOutBuy.sql create mode 100644 db/versions/11009-tealRuscus/05-buyOutOrder.sql create mode 100644 db/versions/11009-tealRuscus/05-buyOutSale.sql diff --git a/db/routines/stock/procedures/buyLot_refresh.sql b/db/routines/stock/procedures/buyLot_refresh.sql new file mode 100644 index 0000000000..5446fbcdd1 --- /dev/null +++ b/db/routines/stock/procedures/buyLot_refresh.sql @@ -0,0 +1,126 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyLot_refresh`( + `vTable` ENUM('buy', 'entry', 'travel'), + `vId` INT) +BEGIN + START TRANSACTION; + + -- Update cache + + CREATE OR REPLACE TEMPORARY TABLE tOldLot + ENGINE = MEMORY + SELECT buyFk + FROM buyLot + WHERE + (vTable = 'travel' AND travelFk = vId) + OR (vTable = 'entry' AND entryFk = vId) + OR (vTable = 'buy' AND buyFk = vId); + + CREATE OR REPLACE TEMPORARY TABLE tNewLot + ENGINE = MEMORY + SELECT + t.id travelFk, + t.landed, + t.landingHour, + t.warehouseInFk, + t.isReceived, + e.id entryFk, + e.isRaid, + b.id buyFk, + b.itemFk, + b.life, + b.quantity, + b.available + FROM vn.buy b + JOIN vn.entry e ON e.id = b.entryFk + JOIN vn.travel t ON t.id = e.travelFk + JOIN vn.item i ON i.id = b.itemFk + WHERE b.quantity > 0 + AND t.isAlive + AND ( + (vTable = 'travel' AND t.id = vId) + OR (vTable = 'entry' AND e.id = vId) + OR (vTable = 'buy' AND b.id = vId) + ); + + DELETE FROM buyLot + WHERE buyFk IN ( + SELECT buyFk FROM tOldLot + EXCEPT + SELECT buyFk FROM tNewLot + ); + + INSERT INTO buyLot ( + buyFk, + entryFk, + travelFk, + isSync, + isPicked, + warehouseFk, + itemFk, + dated, + expired, + quantity, + available + ) + SELECT + buyFk, + entryFk, + travelFk, + FALSE, + isReceived, + warehouseInFk, + itemFk, + @dated := ADDTIME(landed, IFNULL(landingHour, '00:00:00')), + @dated + INTERVAL life DAY, + quantity, + available + FROM tNewLot + ON DUPLICATE KEY UPDATE + entryFk = VALUES(entryFk), + travelFk = VALUES(travelFk), + isSync = VALUES(isSync), + isPicked = VALUES(isPicked), + warehouseFk = VALUES(warehouseFk), + itemFk = VALUES(itemFk), + dated = VALUES(dated), + expired = VALUES(expired), + quantity = VALUES(quantity), + available = VALUES(available); + + -- Update picks + + CREATE OR REPLACE TEMPORARY TABLE tAliveBuys + ENGINE = MEMORY + SELECT b.id buyFk + FROM vn.buy b + JOIN vn.entry e ON e.id = b.entryFk + JOIN vn.travel t ON t.id = e.travelFk + WHERE t.isAlive + AND b.id IN ( + SELECT buyFk FROM tOldLot + UNION + SELECT buyFk FROM tNewLot + ); + + UPDATE buyOut o + JOIN buyPick p + ON p.source = o.tableName AND p.outFk = o.tableId + JOIN tAliveBuys a + ON a.buyFk = p.buyFk + SET o.isSync = FALSE, + o.lack = o.lack + p.quantity; + + DELETE p FROM buyPick p + JOIN tAliveBuys a USING(buyFk); + + DROP TEMPORARY TABLE + tOldLot, + tNewLot, + tAliveBuys; + + COMMIT; + + CALL buyOut_refreshBuy(vTable, vId); +END$$ +DELIMITER ; diff --git a/db/routines/stock/procedures/inbound_removePick.sql b/db/routines/stock/procedures/buyLot_removePick.sql similarity index 53% rename from db/routines/stock/procedures/inbound_removePick.sql rename to db/routines/stock/procedures/buyLot_removePick.sql index e183e11712..659edb650c 100644 --- a/db/routines/stock/procedures/inbound_removePick.sql +++ b/db/routines/stock/procedures/buyLot_removePick.sql @@ -1,20 +1,20 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`inbound_removePick`( +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyLot_removePick`( vSelf INT, - vOutboundFk INT, + vOutFk INT, vQuantity INT, vTotalQuantity INT ) BEGIN IF vQuantity < vTotalQuantity THEN - UPDATE inboundPick + UPDATE buyPick SET quantity = quantity - vQuantity - WHERE inboundFk = vSelf - AND outboundFk = vOutboundFk; + WHERE buyFk = vSelf + AND outFk = vOutFk; ELSE - DELETE FROM inboundPick - WHERE inboundFk = vSelf - AND outboundFk = vOutboundFk; + DELETE FROM buyPick + WHERE buyFk = vSelf + AND outFk = vOutFk; END IF; END$$ DELIMITER ; diff --git a/db/routines/stock/procedures/inbound_requestQuantity.sql b/db/routines/stock/procedures/buyLot_requestQuantity.sql similarity index 98% rename from db/routines/stock/procedures/inbound_requestQuantity.sql rename to db/routines/stock/procedures/buyLot_requestQuantity.sql index 1cbc1908bf..ecab017358 100644 --- a/db/routines/stock/procedures/inbound_requestQuantity.sql +++ b/db/routines/stock/procedures/buyLot_requestQuantity.sql @@ -1,5 +1,5 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`inbound_requestQuantity`( +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyLot_requestQuantity`( vSelf INT, vRequested INT, vDated DATETIME, diff --git a/db/routines/stock/procedures/inbound_sync.sql b/db/routines/stock/procedures/buyLot_sync.sql similarity index 98% rename from db/routines/stock/procedures/inbound_sync.sql rename to db/routines/stock/procedures/buyLot_sync.sql index 77d3e42f7e..c675f2ebd2 100644 --- a/db/routines/stock/procedures/inbound_sync.sql +++ b/db/routines/stock/procedures/buyLot_sync.sql @@ -1,5 +1,5 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`inbound_sync`(vSelf INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyLot_sync`(vSelf INT) BEGIN /** * Associates a inbound with their possible outbounds, updating it's available. diff --git a/db/routines/stock/procedures/buyOut_refresh.sql b/db/routines/stock/procedures/buyOut_refresh.sql new file mode 100644 index 0000000000..7390c8c1b5 --- /dev/null +++ b/db/routines/stock/procedures/buyOut_refresh.sql @@ -0,0 +1,46 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_refresh`( + `vTable` VARCHAR(255), + `vId` INT) +BEGIN + CREATE TEMPORARY TABLE tDelete + ENGINE = MEMORY + SELECT tableId FROM tOldOut + EXCEPT + SELECT tableId FROM tNewOut; + + DELETE o FROM buyOut o + JOIN tDelete d USING(tableId); + + INSERT INTO buyOut ( + tableName, + tableId, + warehouseFk, + dated, + itemFk, + quantity, + created, + isPicked, + isSync + ) + SELECT + vTable, + tableId, + warehouseFk, + dated, + itemFk, + quantity, + created, + isPicked, + FALSE + FROM tNewOut + ON DUPLICATE KEY UPDATE + warehouseFk = VALUES(warehouseFk), + dated = VALUES(dated), + itemFk = VALUES(itemFk), + quantity = VALUES(quantity), + created = VALUES(created), + isPicked = VALUES(isPicked), + isSync = VALUES(isSync); +END$$ +DELIMITER ; diff --git a/db/routines/stock/procedures/buyOut_refreshBuy.sql b/db/routines/stock/procedures/buyOut_refreshBuy.sql new file mode 100644 index 0000000000..18b19b049a --- /dev/null +++ b/db/routines/stock/procedures/buyOut_refreshBuy.sql @@ -0,0 +1,52 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_refreshBuy`( + `vTable` VARCHAR(255), + `vId` INT) +BEGIN + CREATE OR REPLACE TEMPORARY TABLE tOldOut + ENGINE = MEMORY + SELECT buyFk tableId + FROM buyOutBuy + WHERE + (vTable = 'travel' AND travelFk = vId) + OR (vTable = 'entry' AND entryFk = vId) + OR (vTable = 'buy' AND buyFk = vId); + + CREATE OR REPLACE TEMPORARY TABLE tNewOut + ENGINE = MEMORY + SELECT + t.id travelFk, + e.id entryFk, + b.id tableId, + t.warehouseOutFk warehouseFk, + ADDTIME(t.shipped, IFNULL(shipmentHour, '00:00:00')) dated, + t.isDelivered isPicked, + b.itemFk, + b.quantity, + b.created + FROM vn.buy b + JOIN vn.entry e ON e.id = b.entryFk + JOIN vn.travel t ON t.id = e.travelFk + WHERE b.quantity > 0 + AND t.isAlive + AND ( + (vTable = 'travel' AND t.id = vId) + OR (vTable = 'entry' AND e.id = vId) + OR (vTable = 'buy' AND b.id = vId) + ); + + START TRANSACTION; + + CALL buyOut_refresh('buy', vId); + + DELETE o FROM buyOutBuy o + JOIN tDelete d ON d.tableId = o.buyFk; + + INSERT IGNORE INTO buyOutBuy (travelFk, entryFk, buyFk) + SELECT travelFk, entryFk, tableId FROM tNewOut; + + COMMIT; + + DROP TEMPORARY TABLE tNewOut, tOldOut, tDelete; +END$$ +DELIMITER ; diff --git a/db/routines/stock/procedures/buyOut_refreshOrder.sql b/db/routines/stock/procedures/buyOut_refreshOrder.sql new file mode 100644 index 0000000000..2a9f3daef5 --- /dev/null +++ b/db/routines/stock/procedures/buyOut_refreshOrder.sql @@ -0,0 +1,55 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_refreshOrder`( + `vTable` VARCHAR(255), + `vId` INT) +BEGIN + DECLARE vExpired DATETIME; + + SELECT SUBTIME(util.VN_NOW(), reserveTime) + INTO vExpired + FROM hedera.orderConfig LIMIT 1; + + CREATE OR REPLACE TEMPORARY TABLE tOldOut + ENGINE = MEMORY + SELECT rowFk tableId + FROM buyOutOrder + WHERE + (vTable = 'order' AND orderFk = vId) + OR (vTable = 'orderRow' AND rowFk = vId); + + CREATE OR REPLACE TEMPORARY TABLE tNewOut + ENGINE = MEMORY + SELECT + o.id orderFk, + r.id tableId, + r.warehouseFk, + r.shipment dated, + r.itemFk, + r.amount quantity, + r.created, + FALSE isPicked + FROM hedera.orderRow r + JOIN hedera.`order` o ON o.id = r.orderFk + WHERE !o.confirmed + AND r.created >= vExpired + AND r.amount > 0 + AND ( + (vTable = 'order' AND o.id = vId) + OR (vTable = 'orderRow' AND r.id = vId) + ); + + START TRANSACTION; + + CALL buyOut_refresh('orderRow', vId); + + DELETE o FROM buyOutOrder o + JOIN tDelete d ON d.tableId = o.rowFk; + + INSERT IGNORE INTO buyOutOrder (orderFk, rowFk) + SELECT orderFk, tableId FROM tNewOut; + + COMMIT; + + DROP TEMPORARY TABLE tNewOut, tOldOut, tDelete; +END$$ +DELIMITER ; diff --git a/db/routines/stock/procedures/buyOut_refreshSale.sql b/db/routines/stock/procedures/buyOut_refreshSale.sql new file mode 100644 index 0000000000..13bc911a27 --- /dev/null +++ b/db/routines/stock/procedures/buyOut_refreshSale.sql @@ -0,0 +1,53 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_refreshSale`( + `vTable` VARCHAR(255), + `vId` INT) +BEGIN + DECLARE vPreparation INT; + + SELECT id INTO vPreparation + FROM vn.alertLevel WHERE code = 'ON_PREPARATION'; + + CREATE OR REPLACE TEMPORARY TABLE tOldOut + ENGINE = MEMORY + SELECT saleFk tableId + FROM buyOutSale + WHERE + (vTable = 'ticket' AND ticketFk = vId) + OR (vTable = 'sale' AND saleFk = vId); + + CREATE OR REPLACE TEMPORARY TABLE tNewOut + ENGINE = MEMORY + SELECT + t.id ticketFk, + s.id tableId, + t.warehouseFk, + t.shipped dated, + s.itemFk, + s.quantity, + s.created, + s.isPicked OR alertLevel > vPreparation isPicked + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.ticketState ts ON s.ticketFk = t.id + WHERE s.quantity >= 0 + AND ( + (vTable = 'ticket' AND t.id = vId) + OR (vTable = 'sale' AND s.id = vId) + ); + + START TRANSACTION; + + CALL buyOut_refresh('sale', vId); + + DELETE o FROM buyOutSale o + JOIN tDelete d ON d.tableId = o.saleFk; + + INSERT IGNORE INTO buyOutSale (ticketFk, saleFk) + SELECT ticketFk, tableId FROM tNewOut; + + COMMIT; + + DROP TEMPORARY TABLE tNewOut, tOldOut, tDelete; +END$$ +DELIMITER ; diff --git a/db/routines/stock/procedures/outbound_requestQuantity.sql b/db/routines/stock/procedures/buyOut_requestQuantity.sql similarity index 93% rename from db/routines/stock/procedures/outbound_requestQuantity.sql rename to db/routines/stock/procedures/buyOut_requestQuantity.sql index 7ddc3545ca..40a7019c03 100644 --- a/db/routines/stock/procedures/outbound_requestQuantity.sql +++ b/db/routines/stock/procedures/buyOut_requestQuantity.sql @@ -1,9 +1,9 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`outbound_requestQuantity`( +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_requestQuantity`( vSelf INT, - vRequested INT, - vDated DATETIME, - OUT vSupplied INT) + vRequested INT, + vDated DATETIME, + OUT vSupplied INT) BEGIN /** * Disassociates outbound picks after the given date until the @@ -45,7 +45,7 @@ BEGIN SET vPickGranted = LEAST(vRequested - vSupplied, vPickQuantity); SET vSupplied = vSupplied + vPickGranted; CALL inbound_removePick(vInboundFk, vSelf, vPickGranted, vPickQuantity); - + UPDATE inbound SET isSync = FALSE, available = available + vPickGranted diff --git a/db/routines/stock/procedures/outbound_sync.sql b/db/routines/stock/procedures/buyOut_sync.sql similarity index 98% rename from db/routines/stock/procedures/outbound_sync.sql rename to db/routines/stock/procedures/buyOut_sync.sql index 0de3521761..0a659c31d6 100644 --- a/db/routines/stock/procedures/outbound_sync.sql +++ b/db/routines/stock/procedures/buyOut_sync.sql @@ -1,5 +1,5 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`outbound_sync`(vSelf INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buyOut_sync`(vSelf INT) BEGIN /** * Attaches a outbound with available inbounds. diff --git a/db/routines/stock/procedures/inbound_addPick.sql b/db/routines/stock/procedures/buy_addPick.sql similarity index 59% rename from db/routines/stock/procedures/inbound_addPick.sql rename to db/routines/stock/procedures/buy_addPick.sql index 41b93a9868..3b499358f7 100644 --- a/db/routines/stock/procedures/inbound_addPick.sql +++ b/db/routines/stock/procedures/buy_addPick.sql @@ -1,14 +1,16 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`inbound_addPick`( +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`buy_addPick`( vSelf INT, - vOutboundFk INT, + vSource ENUM('buy', 'sale', 'orderRow'), + vPickFk INT, vQuantity INT ) BEGIN - INSERT INTO inboundPick + INSERT INTO buyPick SET - inboundFk = vSelf, - outboundFk = vOutboundFk, + buyFk = vSelf, + source = vSource, + pickFk = vPickFk, quantity = vQuantity ON DUPLICATE KEY UPDATE quantity = quantity + vQuantity; diff --git a/db/routines/stock/procedures/log_clean.sql b/db/routines/stock/procedures/log_clean.sql deleted file mode 100644 index 56634b371a..0000000000 --- a/db/routines/stock/procedures/log_clean.sql +++ /dev/null @@ -1,7 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_clean`() -BEGIN - DELETE FROM inbound WHERE dated = vn.getInventoryDate(); - DELETE FROM outbound WHERE dated = vn.getInventoryDate(); -END$$ -DELIMITER ; diff --git a/db/routines/stock/procedures/log_delete.sql b/db/routines/stock/procedures/log_delete.sql deleted file mode 100644 index e3b631b4ea..0000000000 --- a/db/routines/stock/procedures/log_delete.sql +++ /dev/null @@ -1,19 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_delete`(vTableName VARCHAR(255), vTableId INT) -proc: BEGIN -/** - * Processes orphan transactions. - */ - IF vTableName NOT IN ('buy', 'sale', 'orderRow') THEN - LEAVE proc; - END IF; - - DELETE FROM inbound - WHERE tableName = vTableName COLLATE utf8_general_ci - AND tableId = vTableId; - - DELETE FROM outbound - WHERE tableName = vTableName COLLATE utf8_general_ci - AND tableId = vTableId; -END$$ -DELIMITER ; diff --git a/db/routines/stock/procedures/log_refreshBuy.sql b/db/routines/stock/procedures/log_refreshBuy.sql deleted file mode 100644 index 488c00a28a..0000000000 --- a/db/routines/stock/procedures/log_refreshBuy.sql +++ /dev/null @@ -1,74 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_refreshBuy`( - `vTableName` VARCHAR(255), - `vTableId` INT) -BEGIN - DROP TEMPORARY TABLE IF EXISTS tValues; - CREATE TEMPORARY TABLE tValues - ENGINE = MEMORY - SELECT - b.id buyFk, - e.id entryFk, - t.id travelFk, - b.itemFk, - e.isRaid, - ADDTIME(t.shipped, - IFNULL(t.shipmentHour, '00:00:00')) shipped, - t.warehouseOutFk, - t.isDelivered, - ADDTIME(t.landed, - IFNULL(t.landingHour, '00:00:00')) landed, - t.warehouseInFk, - t.isReceived, - tp.life, - ABS(b.quantity) quantity, - b.created, - b.quantity > 0 isIn, - t.shipped < vn.getInventoryDate() lessThanInventory - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel t ON t.id = e.travelFk - JOIN vn.item i ON i.id = b.itemFk - JOIN vn.itemType tp ON tp.id = i.typeFk - WHERE ( - vTableId IS NULL - OR (vTableName = 'travel' AND t.id = vTableId) - OR (vTableName = 'entry' AND e.id = vTableId) - OR (vTableName = 'buy' AND b.id = vTableId) - ) - AND t.landed >= vn.getInventoryDate() - AND b.quantity != 0; - - REPLACE INTO inbound ( - tableName, tableId, warehouseFk, dated, - itemFk, expired, quantity, isPicked - ) - SELECT 'buy', - buyFk, - IF(isIn, warehouseInFk, warehouseOutFk), - @dated := IF(isIn, landed, shipped), - itemFk, - TIMESTAMPADD(DAY, life, @dated), - quantity, - IF(isIn, isReceived, isDelivered) AND !isRaid - FROM tValues - WHERE isIn OR !lessThanInventory; - - REPLACE INTO outbound ( - tableName, tableId, warehouseFk, dated, - itemFk, created, quantity, isPicked - ) - SELECT 'buy', - buyFk, - IF(isIn, warehouseOutFk, warehouseInFk), - IF(isIn, shipped, landed), - itemFk, - created, - quantity, - IF(isIn, isDelivered, isReceived) AND !isRaid - FROM tValues - WHERE !isIn OR !lessThanInventory; - - DROP TEMPORARY TABLE tValues; -END$$ -DELIMITER ; diff --git a/db/routines/stock/procedures/log_refreshOrder.sql b/db/routines/stock/procedures/log_refreshOrder.sql deleted file mode 100644 index ce5b31cc8e..0000000000 --- a/db/routines/stock/procedures/log_refreshOrder.sql +++ /dev/null @@ -1,47 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_refreshOrder`( - `vTableName` VARCHAR(255), - `vTableId` INT) -BEGIN - DECLARE vExpireTime INT DEFAULT 20; - DECLARE vExpired DATETIME DEFAULT TIMESTAMPADD(MINUTE, -vExpireTime, util.VN_NOW()); - - DROP TEMPORARY TABLE IF EXISTS tValues; - CREATE TEMPORARY TABLE tValues - ENGINE = MEMORY - SELECT - r.id rowFk, - r.itemFk, - r.warehouseFk, - r.shipment shipped, - r.amount quantity, - r.created - FROM hedera.orderRow r - JOIN hedera.`order` o ON o.id = r.orderFk - WHERE ( - vTableId IS NULL - OR (vTableName = 'order' AND o.id = vTableId) - OR (vTableName = 'orderRow' AND r.id = vTableId) - ) - AND !o.confirmed - AND r.shipment >= vn.getInventoryDate() - AND r.created >= vExpired - AND r.amount != 0; - - REPLACE INTO outbound ( - tableName, tableId, warehouseFk, dated, - itemFk, created, expired, quantity - ) - SELECT 'orderRow', - rowFk, - warehouseFk, - shipped, - itemFk, - created, - TIMESTAMPADD(MINUTE, vExpireTime, created), - quantity - FROM tValues; - - DROP TEMPORARY TABLE tValues; -END$$ -DELIMITER ; diff --git a/db/routines/stock/procedures/log_refreshSale.sql b/db/routines/stock/procedures/log_refreshSale.sql deleted file mode 100644 index 3054f8ecb2..0000000000 --- a/db/routines/stock/procedures/log_refreshSale.sql +++ /dev/null @@ -1,66 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_refreshSale`( - `vTableName` VARCHAR(255), - `vTableId` INT) -BEGIN - DROP TEMPORARY TABLE IF EXISTS tValues; - CREATE TEMPORARY TABLE tValues - ENGINE = MEMORY - SELECT - m.id saleFk, - m.ticketFk, - m.itemFk, - t.warehouseFk, - t.shipped, - ABS(m.quantity) quantity, - m.created, - TIMESTAMPADD(DAY, tp.life, t.shipped) expired, - m.quantity < 0 isIn, - m.isPicked OR s.alertLevel > al.id isPicked - FROM vn.sale m - JOIN vn.ticket t ON t.id = m.ticketFk - JOIN vn.ticketState s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = m.itemFk - JOIN vn.itemType tp ON tp.id = i.typeFk - JOIN vn.alertLevel al ON al.code = 'ON_PREPARATION' - WHERE ( - vTableId IS NULL - OR (vTableName = 'ticket' AND t.id = vTableId) - OR (vTableName = 'sale' AND m.id = vTableId) - ) - AND t.shipped >= vn.getInventoryDate() - AND m.quantity != 0; - - REPLACE INTO inbound ( - tableName, tableId, warehouseFk, dated, - itemFk, expired, quantity, isPicked - ) - SELECT 'sale', - saleFk, - warehouseFk, - shipped, - itemFk, - expired, - quantity, - isPicked - FROM tValues - WHERE isIn; - - REPLACE INTO outbound ( - tableName, tableId, warehouseFk, dated, - itemFk, created, quantity, isPicked - ) - SELECT 'sale', - saleFk, - warehouseFk, - shipped, - itemFk, - created, - quantity, - isPicked - FROM tValues - WHERE !isIn; - - DROP TEMPORARY TABLE tValues; -END$$ -DELIMITER ; diff --git a/db/routines/stock/procedures/log_sync.sql b/db/routines/stock/procedures/log_sync.sql index 5b03b6ab0e..60eaf7f1e4 100644 --- a/db/routines/stock/procedures/log_sync.sql +++ b/db/routines/stock/procedures/log_sync.sql @@ -2,9 +2,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_sync`(vSync BOOL) proc: BEGIN DECLARE vDone BOOL; - DECLARE vLogId INT; DECLARE vHasPendingSync BOOL; - DECLARE vOperation VARCHAR(255); DECLARE vTableName VARCHAR(255); DECLARE vTableId VARCHAR(255); DECLARE vInboundFk INT; @@ -29,49 +27,6 @@ proc: BEGIN RESIGNAL; END; - -- Applies changes - - opsLoop: LOOP - START TRANSACTION; - - SET vDone = FALSE; - SELECT id, operation, tableName, tableId - INTO vLogId, vOperation, vTableName, vTableId - FROM `log` - ORDER BY id LIMIT 1 - FOR UPDATE; - - IF vDone THEN - COMMIT; - LEAVE opsLoop; - END IF; - - CALL log_delete(vTableName, vTableId); - - IF vOperation = 'insert' THEN - IF vTableName IN ('travel', 'entry', 'buy') THEN - CALL log_refreshBuy(vTableName, vTableId); - ELSEIF vTableName IN ('ticket', 'sale') THEN - CALL log_refreshSale(vTableName, vTableId); - ELSEIF vTableName IN ('order', 'orderRow') THEN - CALL log_refreshOrder(vTableName, vTableId); - END IF; - END IF; - - DELETE FROM `log` WHERE id = vLogId; - SET vSync = TRUE; - - COMMIT; - END LOOP; - - IF !vSync THEN - LEAVE proc; - END IF; - - -- Deletes expired outbounds - - DELETE FROM outbound WHERE expired <= util.VN_NOW(); - -- Attaches desync inbounds REPEAT diff --git a/db/routines/stock/triggers/buyOut_afterDelete.sql b/db/routines/stock/triggers/buyOut_afterDelete.sql new file mode 100644 index 0000000000..5e185a2651 --- /dev/null +++ b/db/routines/stock/triggers/buyOut_afterDelete.sql @@ -0,0 +1,15 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`buyOut_afterDelete` + AFTER DELETE ON `buyOut` + FOR EACH ROW +BEGIN + UPDATE buyLot bl + JOIN buyPick bp ON bp.buyFk = bl.buyFk + SET bl.available = bl.available + bp.quantity, + bl.isSync = FALSE + WHERE bp.outFk = OLD.id; + + DELETE FROM buyPick + WHERE outFk = OLD.id; +END$$ +DELIMITER ; diff --git a/db/routines/stock/triggers/buyOut_beforeInsert.sql b/db/routines/stock/triggers/buyOut_beforeInsert.sql new file mode 100644 index 0000000000..a470f72de9 --- /dev/null +++ b/db/routines/stock/triggers/buyOut_beforeInsert.sql @@ -0,0 +1,8 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`buyOut_beforeInsert` + BEFORE INSERT ON `buyOut` + FOR EACH ROW +BEGIN + SET NEW.lack = NEW.quantity; +END$$ +DELIMITER ; diff --git a/db/routines/stock/triggers/inbound_afterDelete.sql b/db/routines/stock/triggers/inbound_afterDelete.sql deleted file mode 100644 index 451dcc5995..0000000000 --- a/db/routines/stock/triggers/inbound_afterDelete.sql +++ /dev/null @@ -1,22 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`inbound_afterDelete` - AFTER DELETE ON `inbound` - FOR EACH ROW -BEGIN - UPDATE outbound o - JOIN inboundPick ou ON ou.outboundFk = o.id - SET o.lack = o.lack + ou.quantity, - o.isSync = FALSE - WHERE ou.inboundFk = OLD.id; - - DELETE FROM inboundPick - WHERE inboundFk = OLD.id; - - CALL visible_log( - OLD.isPicked, - OLD.warehouseFk, - OLD.itemFk, - -OLD.quantity - ); -END$$ -DELIMITER ; diff --git a/db/routines/stock/triggers/inbound_beforeInsert.sql b/db/routines/stock/triggers/inbound_beforeInsert.sql deleted file mode 100644 index 723cb3222f..0000000000 --- a/db/routines/stock/triggers/inbound_beforeInsert.sql +++ /dev/null @@ -1,15 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`inbound_beforeInsert` - BEFORE INSERT ON `inbound` - FOR EACH ROW -BEGIN - SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE(); - - CALL visible_log( - NEW.isPicked, - NEW.warehouseFk, - NEW.itemFk, - NEW.quantity - ); -END$$ -DELIMITER ; diff --git a/db/routines/stock/triggers/outbound_afterDelete.sql b/db/routines/stock/triggers/outbound_afterDelete.sql deleted file mode 100644 index e7d756871d..0000000000 --- a/db/routines/stock/triggers/outbound_afterDelete.sql +++ /dev/null @@ -1,22 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`outbound_afterDelete` - AFTER DELETE ON `outbound` - FOR EACH ROW -BEGIN - UPDATE inbound i - JOIN inboundPick ou ON ou.inboundFk = i.id - SET i.available = i.available + ou.quantity, - i.isSync = FALSE - WHERE ou.outboundFk = OLD.id; - - DELETE FROM inboundPick - WHERE outboundFk = OLD.id; - - CALL visible_log( - OLD.isPicked, - OLD.warehouseFk, - OLD.itemFk, - OLD.quantity - ); -END$$ -DELIMITER ; diff --git a/db/routines/stock/triggers/outbound_beforeInsert.sql b/db/routines/stock/triggers/outbound_beforeInsert.sql deleted file mode 100644 index 86546413e9..0000000000 --- a/db/routines/stock/triggers/outbound_beforeInsert.sql +++ /dev/null @@ -1,16 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `stock`.`outbound_beforeInsert` - BEFORE INSERT ON `outbound` - FOR EACH ROW -BEGIN - SET NEW.lack = NEW.quantity; - SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE(); - - CALL visible_log( - NEW.isPicked, - NEW.warehouseFk, - NEW.itemFk, - -NEW.quantity - ); -END$$ -DELIMITER ; diff --git a/db/versions/10996-pinkPhormium/03-dropStockLog.sql b/db/versions/10996-pinkPhormium/03-dropStockLog.sql new file mode 100644 index 0000000000..ab5b0a254f --- /dev/null +++ b/db/versions/10996-pinkPhormium/03-dropStockLog.sql @@ -0,0 +1 @@ +DROP TABLE stock.log; diff --git a/db/versions/11009-tealRuscus/00-buyPick.sql b/db/versions/11009-tealRuscus/00-buyPick.sql new file mode 100644 index 0000000000..ba4241a277 --- /dev/null +++ b/db/versions/11009-tealRuscus/00-buyPick.sql @@ -0,0 +1,18 @@ +DROP TABLE IF EXISTS stock.inboundPick; + +CREATE TABLE stock.buyPick ( + id INT UNSIGNED auto_increment NOT NULL, + buyFk INT(11) NOT NULL + COMMENT 'Lot id', + source ENUM('buy','sale','orderRow') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL + COMMENT 'Source table of pick', + outFk INT UNSIGNED NOT NULL + COMMENT 'Id of source table', + quantity INT UNSIGNED NOT NULL + COMMENT 'Picked quantity', + PRIMARY KEY (id), + CONSTRAINT buyPick_unique UNIQUE KEY (buyFk, source, outFk) +) +ENGINE=InnoDB +DEFAULT CHARSET=utf8mb3 +COLLATE=utf8mb3_unicode_ci; diff --git a/db/versions/11009-tealRuscus/01-alterBuy.sql b/db/versions/11009-tealRuscus/01-alterBuy.sql new file mode 100644 index 0000000000..3db4ffedcc --- /dev/null +++ b/db/versions/11009-tealRuscus/01-alterBuy.sql @@ -0,0 +1,5 @@ +ALTER TABLE vn.buy + ADD life INT UNSIGNED NULL + COMMENT 'Lot life expressed in days', + ADD available INT UNSIGNED NULL DEFAULT NULL + COMMENT 'Available quantity of the lot'; diff --git a/db/versions/11009-tealRuscus/01-alterTravel.sql b/db/versions/11009-tealRuscus/01-alterTravel.sql new file mode 100644 index 0000000000..12b93c6d57 --- /dev/null +++ b/db/versions/11009-tealRuscus/01-alterTravel.sql @@ -0,0 +1,4 @@ +ALTER TABLE vn.travel + ADD isAlive BOOL NOT NULL DEFAULT TRUE + COMMENT 'Whether it is alive'; + diff --git a/db/versions/11009-tealRuscus/02-buyLot.sql b/db/versions/11009-tealRuscus/02-buyLot.sql new file mode 100644 index 0000000000..40ee670767 --- /dev/null +++ b/db/versions/11009-tealRuscus/02-buyLot.sql @@ -0,0 +1,14 @@ +RENAME TABLE IF EXISTS stock.inbound TO stock.buyLot; + +ALTER TABLE stock.buyLot + DROP KEY source, + DROP COLUMN tableName, + CHANGE tableId buyFk int(10) unsigned NOT NULL, + ADD entryFk INT UNSIGNED NOT NULL, + CHANGE entryFk entryFk INT UNSIGNED NOT NULL AFTER buyFk, + ADD travelFk INT UNSIGNED NOT NULL, + CHANGE travelFk travelFk INT UNSIGNED NOT NULL AFTER entryFk, + CHANGE isSync isSync tinyint(4) NOT NULL AFTER travelFk, + DROP PRIMARY KEY, + DROP COLUMN id, + ADD PRIMARY KEY (buyFk); diff --git a/db/versions/11009-tealRuscus/03-removeStockVisible.sql b/db/versions/11009-tealRuscus/03-removeStockVisible.sql new file mode 100644 index 0000000000..bc5c9a84eb --- /dev/null +++ b/db/versions/11009-tealRuscus/03-removeStockVisible.sql @@ -0,0 +1 @@ +DROP TABLE stock.visible; diff --git a/db/versions/11009-tealRuscus/04-buyOut.sql b/db/versions/11009-tealRuscus/04-buyOut.sql new file mode 100644 index 0000000000..ce570e458b --- /dev/null +++ b/db/versions/11009-tealRuscus/04-buyOut.sql @@ -0,0 +1,6 @@ +RENAME TABLE IF EXISTS stock.outbound TO stock.buyOut; + +ALTER TABLE stock.buyOut + MODIFY COLUMN tableName enum('buy','sale','orderRow') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, + DROP INDEX expired, + DROP COLUMN expired; diff --git a/db/versions/11009-tealRuscus/05-buyOutBuy.sql b/db/versions/11009-tealRuscus/05-buyOutBuy.sql new file mode 100644 index 0000000000..4b130f6271 --- /dev/null +++ b/db/versions/11009-tealRuscus/05-buyOutBuy.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS stock.buyOutBuy ( + buyFk INT, + entryFk INT, + travelFk INT, + UNIQUE(buyFk), + INDEX(entryFk), + INDEX(travelFk) +); diff --git a/db/versions/11009-tealRuscus/05-buyOutOrder.sql b/db/versions/11009-tealRuscus/05-buyOutOrder.sql new file mode 100644 index 0000000000..ac252dddb7 --- /dev/null +++ b/db/versions/11009-tealRuscus/05-buyOutOrder.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS stock.buyOutOrder ( + orderFk INT, + rowFk INT, + UNIQUE(rowFk), + INDEX(orderFk) +); diff --git a/db/versions/11009-tealRuscus/05-buyOutSale.sql b/db/versions/11009-tealRuscus/05-buyOutSale.sql new file mode 100644 index 0000000000..32807a2aed --- /dev/null +++ b/db/versions/11009-tealRuscus/05-buyOutSale.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS stock.buyOutSale ( + ticketFk INT, + saleFk INT, + UNIQUE(saleFk), + INDEX(ticketFk) +); From 1c8ad94ab87bc38046ccb021a84909e538aaf84a Mon Sep 17 00:00:00 2001 From: jgallego Date: Wed, 12 Feb 2025 09:51:56 +0100 Subject: [PATCH 129/315] 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 e7c027a8b1e9fff5e15ebad00a20c6e55aefcaa5 Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 12 Feb 2025 10:06:48 +0100 Subject: [PATCH 130/315] refactor: refs #6944 Update ticket_setState to improve state change logic and user tracking --- db/routines/vn/procedures/ticket_setState.sql | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/db/routines/vn/procedures/ticket_setState.sql b/db/routines/vn/procedures/ticket_setState.sql index f4906fb115..a8dcc0da6e 100644 --- a/db/routines/vn/procedures/ticket_setState.sql +++ b/db/routines/vn/procedures/ticket_setState.sql @@ -3,21 +3,25 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`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 vTicketAlertLevel INT; DECLARE vTicketStateCode VARCHAR(255); 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 @@ -33,24 +37,27 @@ BEGIN SET vCanChangeState = (( vStateCode <> 'ON_CHECKING' AND vStateCode <> 'CHECKED') OR - vticketAlertLevel < vPackedAlertLevel - )AND NOT ( + 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 COLLATE utf8_general_ci AND vOldWorkerFk = vNewWorkerFk THEN + LEAVE proc; + END IF; + + INSERT INTO ticketTracking (stateFk, ticketFk, userFk) + SELECT id, vSelf, vNewWorkerFk + FROM state + WHERE `code` = vStateCode COLLATE utf8_unicode_ci; ELSE CALL util.throw('INCORRECT_TICKET_STATE'); END IF; - END$$ DELIMITER ; From 1c9417556b9429fa1393ba93caf696691bbc28d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 12 Feb 2025 12:13:23 +0100 Subject: [PATCH 131/315] feat: enhance ticket closure process with error handling and email notifications --- .../ticket/back/methods/ticket/closeAll.js | 85 ++++++++++++++++--- .../methods/ticket/specs/closeAll.spec.js | 2 +- 2 files changed, 76 insertions(+), 11 deletions(-) diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js index d98f448cf5..307cc011dd 100644 --- a/modules/ticket/back/methods/ticket/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -1,3 +1,6 @@ +const smtp = require('vn-print/core/smtp'); +const config = require('vn-print/core/config'); + module.exports = Self => { Self.remoteMethodCtx('closeAll', { description: 'Makes the closure process from all warehouses', @@ -23,13 +26,14 @@ module.exports = Self => { Self.closeAll = async(ctx, options) => { const userId = ctx.req.accessToken.userId; const myOptions = {userId}; - + let tx; if (typeof options == 'object') Object.assign(myOptions, options); - let tx; - // IMPORTANT: Due to its high cost in production, wrapping this process in a transaction may cause timeouts. - + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } const toDate = Date.vnNew(); toDate.setHours(0, 0, 0, 0); toDate.setDate(toDate.getDate() - 1); @@ -41,6 +45,9 @@ module.exports = Self => { SELECT DISTINCT t.id ticketFk, t.clientFk, + c.name clientName, + c.email recipient, + eu.email salesPersonEmail, t.addressFk, c.hasToInvoiceByAddress, t.totalWithVat, @@ -51,14 +58,12 @@ module.exports = Self => { JOIN ticketState ts ON ts.ticketFk = t.id JOIN alertLevel al ON al.id = ts.alertLevel JOIN client c ON c.id = t.clientFk - JOIN province p ON p.id = c.provinceFk - JOIN country co ON co.id = p.countryFk LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk JOIN ticketConfig tc ON TRUE WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code <> 'delivered')) AND t.shipped BETWEEN ? - INTERVAL tc.closureDaysAgo DAY AND util.dayEnd(?) AND t.refFk IS NULL; - CALL ticket_close(); + CALL ticket_close(); `, [toDate, toDate], myOptions); await Self.rawSql(` @@ -78,6 +83,9 @@ module.exports = Self => { const [clients] = await Self.rawSql(` SELECT clientFk clientId, + clientName, + recipient, + salesPersonEmail, addressFk addressId, companyFk, SUM(totalWithVat) total, @@ -91,19 +99,76 @@ module.exports = Self => { if (tx) await tx.commit(); + const failedClients = []; + // Only for testing + const nestedTransaction = options?.transaction ? myOptions : {}; for (const client of clients) { ctx.args = { ...client, invoiceDate: Date.vnNew(), maxShipped: Date.vnNew() }; - const id = await Self.app.models.InvoiceOut.invoiceClient(ctx); - // if (id) - // await Self.app.models.InvoiceOut.makePdfAndNotify(ctx, id); + try { + const id = await Self.app.models.InvoiceOut.invoiceClient(ctx, nestedTransaction); + if (id) + await Self.app.models.InvoiceOut.makePdfAndNotify(ctx, id, null, nestedTransaction); + } catch (error) { + await Self.rawSql(` + INSERT INTO util.debug (variable, value) + VALUES ('invoicingTicketError', ?) + `, [client.clientId + ' - ' + error]); + + if (error.responseCode == 450) { + await invalidEmail(client); + continue; + } + + failedClients.push({ + id: client.clientId, + address: client.addressId, + error + }); + } + } + + if (failedClients.length > 0) { + let body = 'This following tickets have failed:

'; + + for (const client of failedClients) { + body += `Client: ${client.id} + Address: ${client.address} +
${client.error}

`; + } + + smtp.send({ + to: config.app.reportEmail, + subject: '[API] Nightly ticket closure report', + html: body, + }).catch(err => console.error(err)); } return { message: 'Success' }; }; + + async function invalidEmail(client) { + await Self.rawSql( + `UPDATE client SET email = NULL WHERE id = ?`, + [client.clientId], + myOptions + ); + + const body = `No se ha podido facturar al cliente ${client.clientId} - ${client.clientName} + porque la dirección de email "${client.recipient}" no es correcta + o no está disponible.

+ Para evitar que se repita este error, se ha eliminado la dirección de email de la ficha del cliente. + Actualiza la dirección de email con una correcta.`; + + smtp.send({ + to: client.salesPersonEmail, + subject: 'No se ha podido enviar el albarán', + html: body, + }).catch(err => console.error(err)); + } }; diff --git a/modules/ticket/back/methods/ticket/specs/closeAll.spec.js b/modules/ticket/back/methods/ticket/specs/closeAll.spec.js index 923f688bbb..f01541eec0 100644 --- a/modules/ticket/back/methods/ticket/specs/closeAll.spec.js +++ b/modules/ticket/back/methods/ticket/specs/closeAll.spec.js @@ -1,7 +1,7 @@ const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); -fdescribe('Ticket Closure - closeAll function', () => { +describe('Ticket Closure - closeAll function', () => { let ctx = { req: { getLocale: () => 'es', From b40981aa03c36aa943b0bd6c5845d6a1962268dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 12 Feb 2025 13:18:18 +0100 Subject: [PATCH 132/315] feat: enhance ticket closure process with error handling and email notifications --- modules/ticket/back/methods/ticket/closeAll.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js index 307cc011dd..11c7b2cfc3 100644 --- a/modules/ticket/back/methods/ticket/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -49,6 +49,7 @@ module.exports = Self => { c.email recipient, eu.email salesPersonEmail, t.addressFk, + c.hasDailyInvoice c.hasToInvoiceByAddress, t.totalWithVat, t.companyFk @@ -91,6 +92,7 @@ module.exports = Self => { SUM(totalWithVat) total, 'quick' serialType FROM tmp.ticket_close + WHERE hasDailyInvoice GROUP BY IF (hasToInvoiceByAddress, addressFk, clientFk), companyFk HAVING total > 0; DROP TEMPORARY TABLE tmp.ticket_close; From 9785ab5a7dac9a1dc1158771a4810cb6e7d1730a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 12 Feb 2025 13:23:57 +0100 Subject: [PATCH 133/315] feat: enhance ticket closure process with error handling and email notifications --- modules/ticket/back/methods/ticket/closeAll.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js index 11c7b2cfc3..539b8a64e2 100644 --- a/modules/ticket/back/methods/ticket/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -49,7 +49,7 @@ module.exports = Self => { c.email recipient, eu.email salesPersonEmail, t.addressFk, - c.hasDailyInvoice + c.hasDailyInvoice, c.hasToInvoiceByAddress, t.totalWithVat, t.companyFk From b95db2eff134044ae5ee83bd91feefed86c7b75e Mon Sep 17 00:00:00 2001 From: Pako Date: Wed, 12 Feb 2025 13:45:07 +0100 Subject: [PATCH 134/315] 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 ba3909a9847c3755ba486a883012f60fe4eb776a Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 12 Feb 2025 14:13:39 +0100 Subject: [PATCH 135/315] refactor: refs #6944 Requested changes --- db/routines/vn/procedures/ticket_setState.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/procedures/ticket_setState.sql b/db/routines/vn/procedures/ticket_setState.sql index a8dcc0da6e..782783f992 100644 --- a/db/routines/vn/procedures/ticket_setState.sql +++ b/db/routines/vn/procedures/ticket_setState.sql @@ -11,7 +11,7 @@ proc:BEGIN * @param vStateCode estado a modificar del ticket */ DECLARE vTicketAlertLevel INT; - DECLARE vTicketStateCode VARCHAR(255); + DECLARE vTicketStateCode VARCHAR(255) COLLATE utf8_general_ci; DECLARE vCanChangeState BOOL; DECLARE vPackedAlertLevel INT; DECLARE vZoneFk INT; @@ -48,7 +48,7 @@ proc:BEGIN CALL ticket_doCmr(vSelf); END IF; - IF vStateCode = vTicketStateCode COLLATE utf8_general_ci AND vOldWorkerFk = vNewWorkerFk THEN + IF vStateCode = vTicketStateCode AND vOldWorkerFk = vNewWorkerFk THEN LEAVE proc; END IF; From 3754ede42d0ccafd1c08bdef2117c0faf864a03c Mon Sep 17 00:00:00 2001 From: jorgep Date: Wed, 12 Feb 2025 14:15:53 +0100 Subject: [PATCH 136/315] feat: refs #8571 enhance email formatting in sendToSupport function with structured HTML table --- back/methods/osticket/sendToSupport.js | 51 ++++++++++++++++++++------ 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/back/methods/osticket/sendToSupport.js b/back/methods/osticket/sendToSupport.js index dabd35f80e..55ac65635b 100644 --- a/back/methods/osticket/sendToSupport.js +++ b/back/methods/osticket/sendToSupport.js @@ -33,25 +33,52 @@ module.exports = Self => { const emailUser = await Self.app.models.EmailUser.findById(userId, {fields: ['email']}); - let html = `

Motivo: ${reason}

`; - html += `

Usuario: ${userId} ${emailUser.email}

`; - html += `

Additional Data:

`; - html += '