From bca22e8ad3ce93392f5701cb347bdf9a772fed90 Mon Sep 17 00:00:00 2001 From: carlossa Date: Sun, 20 Oct 2024 15:17:17 +0200 Subject: [PATCH 01/43] fix: refs #6389 saleMonitor filter --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 927f49999..0fa2e60e5 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -194,6 +194,7 @@ module.exports = Self => { u.name userName, c.salesPersonFk, c.credit, + pm.name payMethod, z.hour zoneLanding, z.name zoneName, z.id zoneFk, @@ -211,6 +212,7 @@ module.exports = Self => { LEFT JOIN ticketState ts ON ts.ticketFk = t.id LEFT JOIN state st ON st.id = ts.stateFk LEFT JOIN client c ON c.id = t.clientFk + LEFT JOIN payMethod pm ON pm.id = c.payMethodFk LEFT JOIN worker wk ON wk.id = c.salesPersonFk LEFT JOIN account.user u ON u.id = wk.id LEFT JOIN ( From dfdd8f28d41783e399123c60c6a1e9cbf8d268bd Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 23 Oct 2024 12:23:31 +0200 Subject: [PATCH 02/43] fix: refs #6389 filter --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 0fa2e60e5..9bfb69b65 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -199,6 +199,8 @@ module.exports = Self => { z.name zoneName, z.id zoneFk, st.classColor, + d.id departmentFk, + d.name department, TIME_FORMAT(t.shipped, '%H:%i') preparationHour, TIME_FORMAT(z.hour, '%H:%i') theoreticalhour, TIME_FORMAT(zed.etc, '%H:%i') practicalHour @@ -214,6 +216,8 @@ module.exports = Self => { LEFT JOIN client c ON c.id = t.clientFk LEFT JOIN payMethod pm ON pm.id = c.payMethodFk LEFT JOIN worker wk ON wk.id = c.salesPersonFk + LEFT JOIN workerDepartment wd ON wd.workerFk = wk.id + LEFT JOIN department d ON d.id = wd.departmentFk LEFT JOIN account.user u ON u.id = wk.id LEFT JOIN ( SELECT zoneFk, From 99bec3e7fe8d5179d5f8ba8ca8d61c2b0f9435cb Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 23 Oct 2024 14:58:20 +0200 Subject: [PATCH 03/43] fix: refs #6389 salesFilter --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 9bfb69b65..5a0ea8d9d 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -169,7 +169,7 @@ module.exports = Self => { stmt = new ParameterizedSQL(` CREATE OR REPLACE TEMPORARY TABLE tmp.filter (PRIMARY KEY (id)) - ENGINE = MEMORY + ENGINE = InnoDB SELECT t.id, t.shipped, CAST(DATE(t.shipped) AS CHAR) shippedDate, @@ -201,6 +201,11 @@ module.exports = Self => { st.classColor, d.id departmentFk, d.name department, + (SELECT GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk SEPARATOR ',') + FROM sale s + JOIN item i ON i.id = s.itemFk + WHERE s.ticketFk = t.id + ) AS packing, TIME_FORMAT(t.shipped, '%H:%i') preparationHour, TIME_FORMAT(z.hour, '%H:%i') theoreticalhour, TIME_FORMAT(zed.etc, '%H:%i') practicalHour From 55483f8e6ba8ef2293ecd59ab3ae370a0243c5ba Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 28 Oct 2024 09:01:10 +0100 Subject: [PATCH 04/43] fix: refs #6389 packing --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 5a0ea8d9d..30df9c0cc 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -88,6 +88,11 @@ module.exports = Self => { arg: 'alertLevel', type: 'number', description: `The alert level of the tickets` + }, + { + arg: 'packing', + type: 'string', + description: `The packing of the items` } ], returns: { @@ -155,6 +160,9 @@ module.exports = Self => { case 'clientFk': param = `t.${param}`; return {[param]: value}; + case 'packing': + param = `i.${param}`; + return {[param]: value}; } }); From f1370d69603c64fb099f6277f6a600a4c962cd3e Mon Sep 17 00:00:00 2001 From: Jbreso Date: Tue, 29 Oct 2024 12:13:25 +0100 Subject: [PATCH 05/43] feat: refs#8174 simSupplier --- .../11327-maroonOak/00-firstScript.sql | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 db/versions/11327-maroonOak/00-firstScript.sql diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql new file mode 100644 index 000000000..973050fba --- /dev/null +++ b/db/versions/11327-maroonOak/00-firstScript.sql @@ -0,0 +1,19 @@ +CREATE TABLE IF NOT EXISTS `vn`.`simSupplier` ( + `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `line` int(9) unsigned DEFAULT NULL, + `ext` int(10) unsigned DEFAULT NULL, + `pin` int(4) unsigned DEFAULT NULL, + `sim` VARCHAR(25), + `puk` int(10) unsigned DEFAULT NULL, + `statusWeb` varchar(50) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `sim_UNIQUE` (`sim`) +) ENGINE=InnoDB AUTO_INCREMENT=1 + DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; + +ALTER TABLE `deviceProductionUser` +MODIFY `simSerialNumber` VARCHAR(25); + +ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_simSupplier_FK + FOREIGN KEY (simSerialNumber) REFERENCES vn.simSupplier(sim); + From c63dfba7da99f9ad7e28d2d38a282f10d64ceb99 Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 21 Nov 2024 10:18:09 +0100 Subject: [PATCH 06/43] feat: refs #7301 add inventory-config and acl --- db/dump/fixtures.before.sql | 10 ++++++++-- .../11352-blackErica/00-firstScript.sql | 3 +++ modules/entry/back/model-config.json | 3 +++ .../entry/back/models/inventory-config.json | 18 ++++++++++++++++++ .../back/methods/item/lastEntriesFilter.js | 3 ++- 5 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 db/versions/11352-blackErica/00-firstScript.sql create mode 100644 modules/entry/back/models/inventory-config.json diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index eb376b6c6..32653f3c2 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -1530,6 +1530,7 @@ 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,''), (9, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 9', 1, ''), (10, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY), 10, 0, 442, 'IN2009', 'Movement 10', 1, ''), + (11, 4, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'IN2001', 'Movement 1', 0, ''), (99, 69, '2000-12-01 00:00:00.000', 11, 0, 442, 'IN2009', 'Movement 99', 0, ''); INSERT INTO `vn`.`entryConfig` (`defaultEntry`, `inventorySupplierFk`, `defaultSupplierFk`) @@ -1570,7 +1571,8 @@ INSERT INTO `bs`.`waste`(`buyerFk`, `year`, `week`, `itemFk`, `itemTypeFk`, `sal (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 'packing', NULL, 0.00, 99.6, 99.4, 0, 1, 0, 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'); + (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 @@ -4027,4 +4029,8 @@ INSERT IGNORE INTO vn.saySimpleCountry (countryFk, channel) (8, '1183'); INSERT IGNORE INTO vn.saySimpleConfig (url, defaultChannel) - VALUES ('saysimle-url-mock', 1320); \ No newline at end of file + VALUES ('saysimle-url-mock', 1320); + +INSERT IGNORE INTO vn.inventoryConfig + SET id = 1, + supplierFk = 4; \ No newline at end of file diff --git a/db/versions/11352-blackErica/00-firstScript.sql b/db/versions/11352-blackErica/00-firstScript.sql new file mode 100644 index 000000000..4e17c94c5 --- /dev/null +++ b/db/versions/11352-blackErica/00-firstScript.sql @@ -0,0 +1,3 @@ +-- Place your SQL code here +INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId, editorFk) + VALUES('InventoryConfig', '*', 'READ', 'ALLOW', 'ROLE', 'buyer', 100); \ No newline at end of file diff --git a/modules/entry/back/model-config.json b/modules/entry/back/model-config.json index 5c45b6e07..49c2df2db 100644 --- a/modules/entry/back/model-config.json +++ b/modules/entry/back/model-config.json @@ -28,5 +28,8 @@ }, "StockBought": { "dataSource": "vn" + }, + "InventoryConfig": { + "dataSource": "vn" } } diff --git a/modules/entry/back/models/inventory-config.json b/modules/entry/back/models/inventory-config.json new file mode 100644 index 000000000..caa39db88 --- /dev/null +++ b/modules/entry/back/models/inventory-config.json @@ -0,0 +1,18 @@ +{ + "name": "InventoryConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "inventoryConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "supplierFk": { + "type": "number" + } + } +} diff --git a/modules/item/back/methods/item/lastEntriesFilter.js b/modules/item/back/methods/item/lastEntriesFilter.js index 5aafbb4f6..06c60162f 100644 --- a/modules/item/back/methods/item/lastEntriesFilter.js +++ b/modules/item/back/methods/item/lastEntriesFilter.js @@ -54,7 +54,8 @@ module.exports = Self => { b.packageValue, b.packagingFk , s.id AS supplierFk, - s.name AS supplier + s.name AS supplier, + b.printedStickers FROM itemType it RIGHT JOIN (entry e LEFT JOIN supplier s ON s.id = e.supplierFk From e92ce939b85ef5b3ffab66648ff2ce6f2ff699e9 Mon Sep 17 00:00:00 2001 From: pablone Date: Fri, 22 Nov 2024 06:27:00 +0100 Subject: [PATCH 07/43] refactor: refs #7301 update entry and item filter tests to validate results against specific criteria --- .../back/methods/entry/specs/filter.spec.js | 10 +++++--- .../item/specs/lastEntriesFilter.spec.js | 25 +++++++++++++++++-- .../methods/travel/specs/getEntries.spec.js | 5 ++-- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/modules/entry/back/methods/entry/specs/filter.spec.js b/modules/entry/back/methods/entry/specs/filter.spec.js index 4bf5127b0..b139b00b6 100644 --- a/modules/entry/back/methods/entry/specs/filter.spec.js +++ b/modules/entry/back/methods/entry/specs/filter.spec.js @@ -38,8 +38,9 @@ describe('Entry filter()', () => { }; const result = await models.Entry.filter(ctx, options); + const resultWithCurrency = result.filter(entry => entry.currencyFk === 1); - expect(result.length).toEqual(12); + expect(result.length).toEqual(resultWithCurrency.length); await tx.rollback(); } catch (e) { @@ -141,18 +142,21 @@ describe('Entry filter()', () => { it('should return the entry matching the company', async() => { const tx = await models.Entry.beginTransaction({}); const options = {transaction: tx}; + const companyFk = 442; try { const ctx = { args: { - companyFk: 442 + companyFk }, req: {accessToken: {userId: 9}} }; const result = await models.Entry.filter(ctx, options); - expect(result.length).toEqual(11); + const resultWithCurrency = result.filter(entry => entry.companyFk === companyFk); + + expect(result.length).toEqual(resultWithCurrency.length); await tx.rollback(); } catch (e) { diff --git a/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js b/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js index 2fd30c2ca..d4429e158 100644 --- a/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js +++ b/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js @@ -34,10 +34,31 @@ describe('item lastEntriesFilter()', () => { const options = {transaction: tx}; try { - const filter = {where: {itemFk: 1, landed: {between: [minDate, maxDate]}}}; + const itemFk = 1; + const filter = {where: {itemFk, landed: {between: [minDate, maxDate]}}}; const result = await models.Item.lastEntriesFilter(filter, options); + const minDateUtc = new Date(minDate).getTime(); + const maxDateUtc = new Date(maxDate).getTime(); - expect(result.length).toEqual(6); + const resultMatch = ( + await Promise.all( + result.map(async item => { + const itemRecord = await models.Buy.findOne({ + fields: ['id'], + where: {id: item.id}, + options, + }); + + const isItemFkValid = itemRecord?.id === itemFk; + const landedDate = new Date(item.landed).getTime(); + const isLandedValid = landedDate >= minDateUtc && landedDate <= maxDateUtc; + + return isItemFkValid && isLandedValid; + }) + ) + ).filter(Boolean).length; + + expect(result.length).toEqual(resultMatch); await tx.rollback(); } catch (e) { diff --git a/modules/travel/back/methods/travel/specs/getEntries.spec.js b/modules/travel/back/methods/travel/specs/getEntries.spec.js index fcaa80d02..9286a9d55 100644 --- a/modules/travel/back/methods/travel/specs/getEntries.spec.js +++ b/modules/travel/back/methods/travel/specs/getEntries.spec.js @@ -3,9 +3,10 @@ const models = require('vn-loopback/server/server').models; describe('travel getEntries()', () => { const travelId = 1; it('should check the response contains the id', async() => { - const entries = await models.Travel.getEntries(travelId); + const result = await models.Travel.getEntries(travelId); + const entries = await models.Entry.find({where: {travelFk: travelId}}); - expect(entries.length).toEqual(1); + expect(entries.length).toEqual(result.length); expect(entries[0].id).toEqual(1); }); From fc1e0672a4469ae56446707ecd37cc696ff9ef43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 29 Nov 2024 11:59:36 +0100 Subject: [PATCH 08/43] fix: refs #8087 refs#8087 errores travel_moveRaids --- .../vn/procedures/travel_checkRaid.sql | 17 ----- .../vn/procedures/travel_moveRaids.sql | 69 +++++++++++-------- .../vn/triggers/travel_beforeInsert.sql | 4 -- 3 files changed, 41 insertions(+), 49 deletions(-) delete mode 100644 db/routines/vn/procedures/travel_checkRaid.sql diff --git a/db/routines/vn/procedures/travel_checkRaid.sql b/db/routines/vn/procedures/travel_checkRaid.sql deleted file mode 100644 index 64f3355e2..000000000 --- a/db/routines/vn/procedures/travel_checkRaid.sql +++ /dev/null @@ -1,17 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_checkRaid`( - vIsRaid BOOL, - vDaysInForward INT -) -BEGIN -/** - * Check if the values of isRaid and daysInforward are correct - * - * @param vIsRaid idRaid value - * @param vDaysInForward daysInForward value - */ - IF (NOT vIsRaid AND vDaysInForward IS NOT NULL) OR (vIsRaid AND vDaysInForward IS NULL) THEN - CALL util.throw('The raid information is not correct'); - END IF; -END$$ -DELIMITER ; diff --git a/db/routines/vn/procedures/travel_moveRaids.sql b/db/routines/vn/procedures/travel_moveRaids.sql index cf0fce23c..52f6707bf 100644 --- a/db/routines/vn/procedures/travel_moveRaids.sql +++ b/db/routines/vn/procedures/travel_moveRaids.sql @@ -8,22 +8,16 @@ BEGIN DECLARE vDone BOOL DEFAULT FALSE; DECLARE vBuyerEmail VARCHAR(40); DECLARE vTravelLink TEXT; - DECLARE vMailBody TEXT DEFAULT ''; + DECLARE vMailBody TEXT; + DECLARE vIsMovible BOOL; + DECLARE vSubject VARCHAR(30); - DECLARE vCur CURSOR FOR - SELECT GROUP_CONCAT(DISTINCT - CONCAT('https://salix.verdnatura.es/#!/travel/', - ttm.travelFk, - '/summary ') - ORDER BY ttm.travelFk SEPARATOR '\n\r') travelLink, - CONCAT(u.name, '@verdnatura.es') buyerEmail - FROM tTravelToMove ttm - JOIN entry e ON e.travelFk = ttm.travelFk - JOIN buy b ON b.entryFk = e.id - JOIN item i ON i.id = b.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN account.user u ON u.id = it.workerFk - GROUP BY u.name; + DECLARE vTravels CURSOR FOR + SELECT GROUP_CONCAT(DISTINCT travelLink ORDER BY id SEPARATOR '\n\r'), + buyerEmail, + isMovable + FROM tTravelToMove + GROUP BY isMovable, buyerEmail; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; @@ -34,35 +28,54 @@ BEGIN END; CREATE OR REPLACE TEMPORARY TABLE tTravelToMove - SELECT id travelFk, - util.VN_CURDATE() + INTERVAL daysInForward DAY newLanded + WITH travels AS ( + SELECT id , + CONCAT('https://salix.verdnatura.es/#!/travel/', id,'/summary') travelLink, + util.VN_CURDATE() + INTERVAL daysInForward DAY newLanded, + shipped <= util.VN_CURDATE() + INTERVAL daysInForward DAY isMovable FROM travel WHERE isRaid - AND daysInForward; + AND daysInForward + )SELECT t.*, + CONCAT(u.name, '@verdnatura.es') buyerEmail + FROM travels t + STRAIGHT_JOIN entry e ON e.travelFk = t.id + JOIN buy b ON b.entryFk = e.id + JOIN item i ON i.id = b.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN account.user u ON u.id = it.workerFk + GROUP BY t.id; START TRANSACTION; UPDATE travel tr - JOIN tTravelToMove ttm ON ttm.travelFk = tr.id - SET tr.landed = ttm.newLanded; + JOIN tTravelToMove ttm ON ttm.id = tr.id + SET tr.landed = ttm.newLanded + WHERE ttm.isMovable; - OPEN vCur; + OPEN vTravels; l: LOOP SET vDone = FALSE; - FETCH vCur INTO vTravelLink, vBuyerEmail; + FETCH vTravels INTO vTravelLink, vBuyerEmail, vIsMovible; IF vDone THEN LEAVE l; END IF; - CALL `vn`.`mail_insert`( - vBuyerEmail, - 'noreply@verdnatura.es', - 'Cambio de fecha en Redadas', - CONCAT('Se ha movido los siguientes travels: \n\r ', vTravelLink)); + IF vIsMovible THEN + SET vSubject = 'Cambio de fecha en Redadas'; + SET vMailBody = 'Se ha movido los siguientes travels'; + ELSE + SET vSubject = 'ERROR al cambiar la fecha en Redadas'; + SET vMailBody = 'Ha ocurrido un error con las fechas al mover los siguiente travels'; + END IF; + + SET vMailBody = CONCAT(vMailBody, ': \n\r ', vTravelLink); + + CALL mail_insert(vBuyerEmail, 'noreply@verdnatura.es', vSubject, vMailBody); END LOOP; - CLOSE vCur; + CLOSE vTravels; COMMIT; DROP TEMPORARY TABLE tTravelToMove; END$$ diff --git a/db/routines/vn/triggers/travel_beforeInsert.sql b/db/routines/vn/triggers/travel_beforeInsert.sql index 5356ed537..50331ba6a 100644 --- a/db/routines/vn/triggers/travel_beforeInsert.sql +++ b/db/routines/vn/triggers/travel_beforeInsert.sql @@ -9,10 +9,6 @@ BEGIN CALL travel_checkWarehouseIsFeedStock(NEW.warehouseInFk); - IF NEW.isRaid IS NOT NULL OR NEW.daysInForward IS NOT NULL THEN - CALL travel_checkRaid(NEW.isRaid, NEW.daysInForward); - END IF; - IF NEW.awbFk IS NOT NULL THEN CALL travel_throwAwb(NEW.id); END IF; From b0ee1f3e24260098d712565c1b2a83a8c1cade89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 29 Nov 2024 17:18:25 +0100 Subject: [PATCH 09/43] fix: refs #8087 refs#8087 errores travel_moveRaids --- .../vn/procedures/travel_checkRaid.sql | 17 +++++++++ .../vn/procedures/travel_moveRaids.sql | 38 ++++++++----------- .../vn/triggers/travel_beforeInsert.sql | 4 ++ .../vn/triggers/travel_beforeUpdate.sql | 4 ++ 4 files changed, 40 insertions(+), 23 deletions(-) create mode 100644 db/routines/vn/procedures/travel_checkRaid.sql diff --git a/db/routines/vn/procedures/travel_checkRaid.sql b/db/routines/vn/procedures/travel_checkRaid.sql new file mode 100644 index 000000000..885fc718a --- /dev/null +++ b/db/routines/vn/procedures/travel_checkRaid.sql @@ -0,0 +1,17 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`travel_checkRaid`( + vIsRaid BOOL, + vDaysInForward INT +) +BEGIN +/** + * Check if the values of isRaid and daysInforward are correct + * + * @param vIsRaid idRaid value + * @param vDaysInForward daysInForward value + */ + IF NOT vIsRaid AND vDaysInForward THEN + CALL util.throw('If daysInForward has a value, the raid cannot be unchecked'); + END IF; +END$$ +DELIMITER ; diff --git a/db/routines/vn/procedures/travel_moveRaids.sql b/db/routines/vn/procedures/travel_moveRaids.sql index 52f6707bf..7f2593a3b 100644 --- a/db/routines/vn/procedures/travel_moveRaids.sql +++ b/db/routines/vn/procedures/travel_moveRaids.sql @@ -9,15 +9,14 @@ BEGIN DECLARE vBuyerEmail VARCHAR(40); DECLARE vTravelLink TEXT; DECLARE vMailBody TEXT; - DECLARE vIsMovible BOOL; + DECLARE vDaysBetweenDates INT; DECLARE vSubject VARCHAR(30); DECLARE vTravels CURSOR FOR SELECT GROUP_CONCAT(DISTINCT travelLink ORDER BY id SEPARATOR '\n\r'), - buyerEmail, - isMovable + buyerEmail FROM tTravelToMove - GROUP BY isMovable, buyerEmail; + GROUP BY buyerEmail; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; @@ -29,20 +28,20 @@ BEGIN CREATE OR REPLACE TEMPORARY TABLE tTravelToMove WITH travels AS ( - SELECT id , + SELECT id, CONCAT('https://salix.verdnatura.es/#!/travel/', id,'/summary') travelLink, util.VN_CURDATE() + INTERVAL daysInForward DAY newLanded, - shipped <= util.VN_CURDATE() + INTERVAL daysInForward DAY isMovable - FROM travel + util.VN_CURDATE() - INTERVAL DATEDIFF(landed, shipped) + daysInForward DAY newShipped + FROM vn.travel WHERE isRaid AND daysInForward )SELECT t.*, CONCAT(u.name, '@verdnatura.es') buyerEmail FROM travels t - STRAIGHT_JOIN entry e ON e.travelFk = t.id - JOIN buy b ON b.entryFk = e.id - JOIN item i ON i.id = b.itemFk - JOIN itemType it ON it.id = i.typeFk + STRAIGHT_JOIN vn.entry e ON e.travelFk = t.id + JOIN vn.buy b ON b.entryFk = e.id + JOIN vn.item i ON i.id = b.itemFk + JOIN vn.itemType it ON it.id = i.typeFk JOIN account.user u ON u.id = it.workerFk GROUP BY t.id; @@ -50,28 +49,21 @@ BEGIN UPDATE travel tr JOIN tTravelToMove ttm ON ttm.id = tr.id - SET tr.landed = ttm.newLanded - WHERE ttm.isMovable; + SET tr.landed = ttm.newLanded, + tr.shipped = ttm.newShipped; OPEN vTravels; l: LOOP SET vDone = FALSE; - FETCH vTravels INTO vTravelLink, vBuyerEmail, vIsMovible; + FETCH vTravels INTO vTravelLink, vBuyerEmail; IF vDone THEN LEAVE l; END IF; - IF vIsMovible THEN - SET vSubject = 'Cambio de fecha en Redadas'; - SET vMailBody = 'Se ha movido los siguientes travels'; - ELSE - SET vSubject = 'ERROR al cambiar la fecha en Redadas'; - SET vMailBody = 'Ha ocurrido un error con las fechas al mover los siguiente travels'; - END IF; - - SET vMailBody = CONCAT(vMailBody, ': \n\r ', vTravelLink); + SET vSubject = 'Cambio de fecha en Redadas', + vMailBody = CONCAT('Se ha movido los siguientes travels: \n\r ', vTravelLink); CALL mail_insert(vBuyerEmail, 'noreply@verdnatura.es', vSubject, vMailBody); END LOOP; diff --git a/db/routines/vn/triggers/travel_beforeInsert.sql b/db/routines/vn/triggers/travel_beforeInsert.sql index 50331ba6a..5356ed537 100644 --- a/db/routines/vn/triggers/travel_beforeInsert.sql +++ b/db/routines/vn/triggers/travel_beforeInsert.sql @@ -9,6 +9,10 @@ BEGIN CALL travel_checkWarehouseIsFeedStock(NEW.warehouseInFk); + IF NEW.isRaid IS NOT NULL OR NEW.daysInForward IS NOT NULL THEN + CALL travel_checkRaid(NEW.isRaid, NEW.daysInForward); + END IF; + IF NEW.awbFk IS NOT NULL THEN CALL travel_throwAwb(NEW.id); END IF; diff --git a/db/routines/vn/triggers/travel_beforeUpdate.sql b/db/routines/vn/triggers/travel_beforeUpdate.sql index 256dd35f8..5a27b43b4 100644 --- a/db/routines/vn/triggers/travel_beforeUpdate.sql +++ b/db/routines/vn/triggers/travel_beforeUpdate.sql @@ -20,6 +20,10 @@ BEGIN CALL travel_checkWarehouseIsFeedStock(NEW.warehouseInFk); END IF; + IF NOT (NEW.isRaid <=> OLD.isRaid) OR NOT (NEW.daysInForward <=> OLD.daysInForward) THEN + CALL travel_checkRaid(NEW.isRaid, NEW.daysInForward); + END IF; + IF NOT (NEW.awbFk <=> OLD.awbFk)THEN SELECT COUNT(*) INTO vHasAnyInvoiceBooked FROM travel t From 202ed47963dad41ed96efce4197225113feb2c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 29 Nov 2024 17:20:14 +0100 Subject: [PATCH 10/43] fix: refs #8087 refs#8087 errores travel_moveRaids --- db/routines/vn/procedures/travel_moveRaids.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/travel_moveRaids.sql b/db/routines/vn/procedures/travel_moveRaids.sql index 7f2593a3b..17d7ecc4c 100644 --- a/db/routines/vn/procedures/travel_moveRaids.sql +++ b/db/routines/vn/procedures/travel_moveRaids.sql @@ -35,7 +35,10 @@ BEGIN FROM vn.travel WHERE isRaid AND daysInForward - )SELECT t.*, + )SELECT t.id, + t.travelLink, + t.newLanded, + t.newShipped, CONCAT(u.name, '@verdnatura.es') buyerEmail FROM travels t STRAIGHT_JOIN vn.entry e ON e.travelFk = t.id From 424a0c80794f622cf6e481116a3db2688582dd58 Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 3 Dec 2024 12:25:39 +0100 Subject: [PATCH 11/43] fix: refs #6389 packing --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 5eba78887..acd5635f6 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -161,8 +161,7 @@ module.exports = Self => { param = `t.${param}`; return {[param]: value}; case 'packing': - param = `i.${param}`; - return {[param]: value}; + return {'packing': value}; } }); From 123c0db1267763302c808aa9f44f60593d69c7b6 Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 4 Dec 2024 11:58:17 +0100 Subject: [PATCH 12/43] feat: modified data to be equal as the updated back --- db/dump/.dump/data.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/dump/.dump/data.sql b/db/dump/.dump/data.sql index 4700d0066..a1d9a44a7 100644 --- a/db/dump/.dump/data.sql +++ b/db/dump/.dump/data.sql @@ -2110,7 +2110,7 @@ INSERT INTO `ACL` VALUES (746,'Claim','getSummary','READ','ALLOW','ROLE','claimV INSERT INTO `ACL` VALUES (747,'CplusRectificationType','*','READ','ALLOW','ROLE','administrative',NULL); INSERT INTO `ACL` VALUES (748,'SiiTypeInvoiceOut','*','READ','ALLOW','ROLE','salesPerson',NULL); INSERT INTO `ACL` VALUES (749,'InvoiceCorrectionType','*','READ','ALLOW','ROLE','salesPerson',NULL); -INSERT INTO `ACL` VALUES (750,'InvoiceOut','transferInvoice','WRITE','ALLOW','ROLE','administrative',NULL); +INSERT INTO `ACL` VALUES (750,'InvoiceOut','transfer','WRITE','ALLOW','ROLE','administrative',NULL); INSERT INTO `ACL` VALUES (751,'Application','executeProc','*','ALLOW','ROLE','employee',NULL); INSERT INTO `ACL` VALUES (752,'Application','executeFunc','*','ALLOW','ROLE','employee',NULL); INSERT INTO `ACL` VALUES (753,'NotificationSubscription','getList','READ','ALLOW','ROLE','employee',NULL); From fad6f33b7c981536f23ce4d85cd397ee6c61e8c2 Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 4 Dec 2024 12:33:17 +0100 Subject: [PATCH 13/43] fix: refs #7031 remove check --- db/versions/11376-pinkBamboo/00-firstScript.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 db/versions/11376-pinkBamboo/00-firstScript.sql diff --git a/db/versions/11376-pinkBamboo/00-firstScript.sql b/db/versions/11376-pinkBamboo/00-firstScript.sql new file mode 100644 index 000000000..607a22b4d --- /dev/null +++ b/db/versions/11376-pinkBamboo/00-firstScript.sql @@ -0,0 +1,2 @@ +ALTER TABLE `zone` MODIFY COLUMN `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00 CHECK (`price` > 0); + From 483966501a2b6e46ade7e13d79c334df1fa9d565 Mon Sep 17 00:00:00 2001 From: carlossa Date: Thu, 5 Dec 2024 08:31:09 +0100 Subject: [PATCH 14/43] fix: refs #7031 fix vnPrice --- db/versions/11376-pinkBamboo/00-firstScript.sql | 2 +- loopback/locale/en.json | 7 ++++--- loopback/locale/es.json | 10 +++++----- modules/zone/back/models/zone.js | 14 ++++++++++++++ 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/db/versions/11376-pinkBamboo/00-firstScript.sql b/db/versions/11376-pinkBamboo/00-firstScript.sql index 607a22b4d..0c1e71a2f 100644 --- a/db/versions/11376-pinkBamboo/00-firstScript.sql +++ b/db/versions/11376-pinkBamboo/00-firstScript.sql @@ -1,2 +1,2 @@ -ALTER TABLE `zone` MODIFY COLUMN `price` DECIMAL(10,2) NOT NULL DEFAULT 0.00 CHECK (`price` > 0); +ALTER TABLE vn.`zone` MODIFY COLUMN `price` DECIMAL(10,2); diff --git a/loopback/locale/en.json b/loopback/locale/en.json index ff0281d4a..af07b29fa 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -246,6 +246,7 @@ "ticketLostExpedition": "The ticket [{{ticketId}}]({{{ticketUrl}}}) has the following lost expedition:{{ expeditionId }}", "The raid information is not correct": "The raid information is not correct", "Payment method is required": "Payment method is required", - "Sales already moved": "Sales already moved", - "There are tickets to be invoiced": "There are tickets to be invoiced for this zone, please delete them first" -} + "Sales already moved": "Sales already moved", + "There are tickets to be invoiced": "There are tickets to be invoiced for this zone, please delete them first", + "Price cannot be blank": "Price cannot be blank" +} \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 1eb953d89..37572de03 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -388,8 +388,8 @@ "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", - "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero" -} - + "Sales already moved": "Ya han sido transferidas", + "The raid information is not correct": "La información de la redada no es correcta", + "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero", + "Price cannot be blank": "Price cannot be blank" +} \ No newline at end of file diff --git a/modules/zone/back/models/zone.js b/modules/zone/back/models/zone.js index 6d5a6cdca..7b5cb4301 100644 --- a/modules/zone/back/models/zone.js +++ b/modules/zone/back/models/zone.js @@ -14,4 +14,18 @@ module.exports = Self => { Self.validatesPresenceOf('agencyModeFk', { message: `Agency cannot be blank` }); + + Self.validatesPresenceOf('price', { + message: 'Price cannot be blank' + }); + Self.validateAsync('price', priceIsValid, { + message: 'Price must be greater than 0' + }); + + async function priceIsValid(err, done) { + if (this.price <= 0) + err(); + + done(); + } }; From 8960b546649da0a6ff99df0836d76784bdd25509 Mon Sep 17 00:00:00 2001 From: guillermo Date: Sun, 8 Dec 2024 14:30:05 +0100 Subject: [PATCH 15/43] feat: refs #7882 Added locationiq service --- back/methods/locationiq-config/optimize.js | 77 +++++++++++++++++++ back/model-config.json | 3 + back/models/locationiq-config.js | 4 + back/models/locationiq-config.json | 28 +++++++ .../11379-yellowCordyline/00-firstScript.sql | 8 ++ loopback/locale/es.json | 11 +-- 6 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 back/methods/locationiq-config/optimize.js create mode 100644 back/models/locationiq-config.js create mode 100644 back/models/locationiq-config.json create mode 100644 db/versions/11379-yellowCordyline/00-firstScript.sql diff --git a/back/methods/locationiq-config/optimize.js b/back/methods/locationiq-config/optimize.js new file mode 100644 index 000000000..cd1f6e7ff --- /dev/null +++ b/back/methods/locationiq-config/optimize.js @@ -0,0 +1,77 @@ +const UserError = require('vn-loopback/util/user-error'); +const axios = require('axios'); + +module.exports = Self => { + Self.remoteMethod('optimize', { + description: 'Return optimized coords', + accessType: 'READ', + accepts: [{ + arg: 'addressIds', + type: 'array', + required: true + }], + returns: { + type: 'string', + root: true + }, + http: { + path: `/optimize`, + verb: 'GET' + } + }); + + Self.optimize = async addressIds => { + const models = Self.app.models; + try { + const locationiqConfig = await models.LocationiqConfig.findOne(); + if (!locationiqConfig) throw new UserError(`LocationIQ service is not configured`); + + let coords = []; + for (const addressId of addressIds) { + const address = await models.Address.findById(addressId); + coords.push({ + addressId, + latitude: address.latitude.toFixed(6), + longitude: address.longitude.toFixed(6) + }); + } + const concatCoords = coords + .map(coord => `${coord.longitude},${coord.latitude}`) + .join(';'); + const response = await axios.post(`${locationiqConfig.url}${concatCoords}?key=${locationiqConfig.key}`); + const tolerance = locationiqConfig.tolerance; + + for (waypoint of response.data.waypoints) { + const longitude = waypoint.location[0]; + const latitude = waypoint.location[1]; + + const matchedAddress = coords.find(coord => + Math.abs(coord.latitude - latitude) <= tolerance && + Math.abs(coord.longitude - longitude) <= tolerance + ); + if (matchedAddress) matchedAddress.position = waypoint.waypoint_index; + } + coords.sort((a, b) => { + const posA = a.position !== undefined ? a.position : Infinity; + const posB = b.position !== undefined ? b.position : Infinity; + return posA - posB; + }); + // Temporal para abrir en maps + const coordsString = coords + .map(item => `${item.latitude},${item.longitude}`) + .join('/'); + console.log(`https://www.google.es/maps/dir/${coordsString}`); + // --------- + return coords; + } catch (err) { + switch (err.response?.data?.code) { + case 'NoTrips': + throw new UserError('No trips found because input coordinates are not connected'); + case 'NotImplemented': + throw new UserError('This request is not supported'); + default: + throw err; + } + } + }; +}; diff --git a/back/model-config.json b/back/model-config.json index c1682f29a..f48e5f2eb 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -88,6 +88,9 @@ "Language": { "dataSource": "vn" }, + "LocationiqConfig": { + "dataSource": "vn" + }, "Machine": { "dataSource": "vn" }, diff --git a/back/models/locationiq-config.js b/back/models/locationiq-config.js new file mode 100644 index 000000000..e0fe736bb --- /dev/null +++ b/back/models/locationiq-config.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/locationiq-config/optimize')(Self); +}; + diff --git a/back/models/locationiq-config.json b/back/models/locationiq-config.json new file mode 100644 index 000000000..624341615 --- /dev/null +++ b/back/models/locationiq-config.json @@ -0,0 +1,28 @@ +{ + "name": "LocationiqConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "locationiqConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "required": true + }, + "url": { + "type": "string", + "required": true + }, + "key": { + "type": "string", + "required": true + }, + "tolerance": { + "type": "number", + "required": false + } + } +} diff --git a/db/versions/11379-yellowCordyline/00-firstScript.sql b/db/versions/11379-yellowCordyline/00-firstScript.sql new file mode 100644 index 000000000..001ef6049 --- /dev/null +++ b/db/versions/11379-yellowCordyline/00-firstScript.sql @@ -0,0 +1,8 @@ +CREATE TABLE `vn`.`locationiqConfig` ( + `id` int(10) unsigned NOT NULL, + `url` varchar(100) NOT NULL, + `key` varchar(100) NOT NULL, + `tolerance` decimal(6,6) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + CONSTRAINT `locationiqConfig_check` CHECK (`id` = 1) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 1eb953d89..fb495dfb1 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -388,8 +388,9 @@ "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", - "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero" -} - + "Sales already moved": "Ya han sido transferidas", + "The raid information is not correct": "La información de la redada no es correcta", + "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero", + "No trips found because input coordinates are not connected": "No se encontraron rutas porque las coordenadas de entrada no están conectadas", + "This request is not supported": "Esta solicitud no es compatible" +} \ No newline at end of file From 0bb9282953cacb199b6451e778fb22bda28baeae Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 9 Dec 2024 09:11:55 +0100 Subject: [PATCH 16/43] feat: refs #7882 Added locationiq service --- back/methods/locationiq-config/optimize.js | 18 +++++++++++++----- .../11379-yellowCordyline/00-firstScript.sql | 7 ++++--- loopback/locale/es.json | 3 ++- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/back/methods/locationiq-config/optimize.js b/back/methods/locationiq-config/optimize.js index cd1f6e7ff..97ea33089 100644 --- a/back/methods/locationiq-config/optimize.js +++ b/back/methods/locationiq-config/optimize.js @@ -38,7 +38,9 @@ module.exports = Self => { const concatCoords = coords .map(coord => `${coord.longitude},${coord.latitude}`) .join(';'); - const response = await axios.post(`${locationiqConfig.url}${concatCoords}?key=${locationiqConfig.key}`); + const response = await axios.post(` + ${locationiqConfig.url}optimize/driving/${concatCoords}?key=${locationiqConfig.key} + `); const tolerance = locationiqConfig.tolerance; for (waypoint of response.data.waypoints) { @@ -46,10 +48,14 @@ module.exports = Self => { const latitude = waypoint.location[1]; const matchedAddress = coords.find(coord => + !coord.position && Math.abs(coord.latitude - latitude) <= tolerance && Math.abs(coord.longitude - longitude) <= tolerance ); - if (matchedAddress) matchedAddress.position = waypoint.waypoint_index; + if (matchedAddress) + matchedAddress.position = waypoint.waypoint_index; + else + console.log(`Las coordenadas no se han podido asociar: ${latitude} | ${longitude}`); } coords.sort((a, b) => { const posA = a.position !== undefined ? a.position : Infinity; @@ -58,9 +64,9 @@ module.exports = Self => { }); // Temporal para abrir en maps const coordsString = coords - .map(item => `${item.latitude},${item.longitude}`) - .join('/'); - console.log(`https://www.google.es/maps/dir/${coordsString}`); + .map(item => `point=${item.latitude},${item.longitude}`) + .join('&'); + console.log(`https://graphhopper.com/maps/?${coordsString}&profile=small_truck`); // --------- return coords; } catch (err) { @@ -69,6 +75,8 @@ module.exports = Self => { throw new UserError('No trips found because input coordinates are not connected'); case 'NotImplemented': throw new UserError('This request is not supported'); + case 'InvalidOptions': + throw new UserError('Invalid options or too many coordinates'); default: throw err; } diff --git a/db/versions/11379-yellowCordyline/00-firstScript.sql b/db/versions/11379-yellowCordyline/00-firstScript.sql index 001ef6049..363c32dfa 100644 --- a/db/versions/11379-yellowCordyline/00-firstScript.sql +++ b/db/versions/11379-yellowCordyline/00-firstScript.sql @@ -1,8 +1,9 @@ CREATE TABLE `vn`.`locationiqConfig` ( `id` int(10) unsigned NOT NULL, - `url` varchar(100) NOT NULL, - `key` varchar(100) NOT NULL, - `tolerance` decimal(6,6) NOT NULL DEFAULT 0, + `url` varchar(100) NOT NULL COMMENT 'Dirección base de la API', + `key` varchar(100) NOT NULL COMMENT 'Access token', + `tolerance` decimal(6,6) NOT NULL DEFAULT 0 COMMENT 'Tolerancia entre las coordenadas enviadas y las retornadas', + `maxCoordsRequest` int(10) unsigned DEFAULT NULL COMMENT 'Número máximo de coordenadas por petición', PRIMARY KEY (`id`), CONSTRAINT `locationiqConfig_check` CHECK (`id` = 1) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index fb495dfb1..8013a7fe6 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -392,5 +392,6 @@ "The raid information is not correct": "La información de la redada no es correcta", "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero", "No trips found because input coordinates are not connected": "No se encontraron rutas porque las coordenadas de entrada no están conectadas", - "This request is not supported": "Esta solicitud no es compatible" + "This request is not supported": "Esta solicitud no es compatible", + "Invalid options or too many coordinates": "Opciones invalidas o demasiadas coordenadas" } \ No newline at end of file From e279cc4b471c8e2d2efe85d32e25897d615a860d Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 9 Dec 2024 10:01:59 +0100 Subject: [PATCH 17/43] feat: refs #7882 Added osrm service --- .../{locationiq-config => osrm-config}/optimize.js | 9 ++++----- back/model-config.json | 2 +- back/models/locationiq-config.js | 4 ---- back/models/osrm-config.js | 4 ++++ back/models/{locationiq-config.json => osrm-config.json} | 8 ++------ db/versions/11379-yellowCordyline/00-firstScript.sql | 6 ++---- 6 files changed, 13 insertions(+), 20 deletions(-) rename back/methods/{locationiq-config => osrm-config}/optimize.js (89%) delete mode 100644 back/models/locationiq-config.js create mode 100644 back/models/osrm-config.js rename back/models/{locationiq-config.json => osrm-config.json} (69%) diff --git a/back/methods/locationiq-config/optimize.js b/back/methods/osrm-config/optimize.js similarity index 89% rename from back/methods/locationiq-config/optimize.js rename to back/methods/osrm-config/optimize.js index 97ea33089..9440800f6 100644 --- a/back/methods/locationiq-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -23,8 +23,8 @@ module.exports = Self => { Self.optimize = async addressIds => { const models = Self.app.models; try { - const locationiqConfig = await models.LocationiqConfig.findOne(); - if (!locationiqConfig) throw new UserError(`LocationIQ service is not configured`); + const osrmConfig = await models.OsrmConfig.findOne(); + if (!osrmConfig) throw new UserError(`OSRM service is not configured`); let coords = []; for (const addressId of addressIds) { @@ -39,10 +39,9 @@ module.exports = Self => { .map(coord => `${coord.longitude},${coord.latitude}`) .join(';'); const response = await axios.post(` - ${locationiqConfig.url}optimize/driving/${concatCoords}?key=${locationiqConfig.key} + ${osrmConfig.url}/trip/v1/driving/${concatCoords} `); - const tolerance = locationiqConfig.tolerance; - + const tolerance = osrmConfig.tolerance; for (waypoint of response.data.waypoints) { const longitude = waypoint.location[0]; const latitude = waypoint.location[1]; diff --git a/back/model-config.json b/back/model-config.json index f48e5f2eb..2ced867f7 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -88,7 +88,7 @@ "Language": { "dataSource": "vn" }, - "LocationiqConfig": { + "OsrmConfig": { "dataSource": "vn" }, "Machine": { diff --git a/back/models/locationiq-config.js b/back/models/locationiq-config.js deleted file mode 100644 index e0fe736bb..000000000 --- a/back/models/locationiq-config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = Self => { - require('../methods/locationiq-config/optimize')(Self); -}; - diff --git a/back/models/osrm-config.js b/back/models/osrm-config.js new file mode 100644 index 000000000..f738f305c --- /dev/null +++ b/back/models/osrm-config.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/osrm-config/optimize')(Self); +}; + diff --git a/back/models/locationiq-config.json b/back/models/osrm-config.json similarity index 69% rename from back/models/locationiq-config.json rename to back/models/osrm-config.json index 624341615..ae712ba05 100644 --- a/back/models/locationiq-config.json +++ b/back/models/osrm-config.json @@ -1,9 +1,9 @@ { - "name": "LocationiqConfig", + "name": "OsrmConfig", "base": "VnModel", "options": { "mysql": { - "table": "locationiqConfig" + "table": "osrmConfig" } }, "properties": { @@ -16,10 +16,6 @@ "type": "string", "required": true }, - "key": { - "type": "string", - "required": true - }, "tolerance": { "type": "number", "required": false diff --git a/db/versions/11379-yellowCordyline/00-firstScript.sql b/db/versions/11379-yellowCordyline/00-firstScript.sql index 363c32dfa..6c0263f7f 100644 --- a/db/versions/11379-yellowCordyline/00-firstScript.sql +++ b/db/versions/11379-yellowCordyline/00-firstScript.sql @@ -1,9 +1,7 @@ -CREATE TABLE `vn`.`locationiqConfig` ( +CREATE TABLE `vn`.`osrmConfig` ( `id` int(10) unsigned NOT NULL, `url` varchar(100) NOT NULL COMMENT 'Dirección base de la API', - `key` varchar(100) NOT NULL COMMENT 'Access token', `tolerance` decimal(6,6) NOT NULL DEFAULT 0 COMMENT 'Tolerancia entre las coordenadas enviadas y las retornadas', - `maxCoordsRequest` int(10) unsigned DEFAULT NULL COMMENT 'Número máximo de coordenadas por petición', PRIMARY KEY (`id`), - CONSTRAINT `locationiqConfig_check` CHECK (`id` = 1) + CONSTRAINT `osrmConfig_check` CHECK (`id` = 1) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; \ No newline at end of file From 85baf151d9a8cab26aa57116a040232cd10a0d32 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 9 Dec 2024 10:21:23 +0100 Subject: [PATCH 18/43] feat: refs #7882 Fixed problems osrm service --- back/methods/osrm-config/optimize.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js index 9440800f6..a7c81f33a 100644 --- a/back/methods/osrm-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -47,27 +47,26 @@ module.exports = Self => { const latitude = waypoint.location[1]; const matchedAddress = coords.find(coord => - !coord.position && + coord.position === undefined && Math.abs(coord.latitude - latitude) <= tolerance && Math.abs(coord.longitude - longitude) <= tolerance ); if (matchedAddress) matchedAddress.position = waypoint.waypoint_index; - else - console.log(`Las coordenadas no se han podido asociar: ${latitude} | ${longitude}`); } coords.sort((a, b) => { const posA = a.position !== undefined ? a.position : Infinity; const posB = b.position !== undefined ? b.position : Infinity; return posA - posB; }); - // Temporal para abrir en maps + const coordsString = coords .map(item => `point=${item.latitude},${item.longitude}`) .join('&'); - console.log(`https://graphhopper.com/maps/?${coordsString}&profile=small_truck`); - // --------- - return coords; + return { + coords, + view: `https://graphhopper.com/maps/?${coordsString}&profile=small_truck` + }; } catch (err) { switch (err.response?.data?.code) { case 'NoTrips': From cba5d88c5e36c92f7a35d6c48091cc0754f8e83f Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 9 Dec 2024 14:45:31 +0100 Subject: [PATCH 19/43] feat: refs #7882 Osrm service --- back/methods/osrm-config/optimize.js | 20 ++++++++++++--- .../route/back/methods/route/optimizeStops.js | 25 +++++++++++++++++++ modules/route/back/models/route.js | 1 + 3 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 modules/route/back/methods/route/optimizeStops.js diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js index a7c81f33a..0c570b95a 100644 --- a/back/methods/osrm-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -27,19 +27,31 @@ module.exports = Self => { if (!osrmConfig) throw new UserError(`OSRM service is not configured`); let coords = []; - for (const addressId of addressIds) { - const address = await models.Address.findById(addressId); + + const address = await models.Address.findById(32308); // Aquí irá el address asociada a la zona + if (address.latitude && address.longitude) { coords.push({ - addressId, + addressId: address.id, latitude: address.latitude.toFixed(6), longitude: address.longitude.toFixed(6) }); } + + for (const addressId of addressIds) { + const address = await models.Address.findById(addressId); + if (address.latitude && address.longitude) { + coords.push({ + addressId, + latitude: address.latitude.toFixed(6), + longitude: address.longitude.toFixed(6) + }); + } + } const concatCoords = coords .map(coord => `${coord.longitude},${coord.latitude}`) .join(';'); const response = await axios.post(` - ${osrmConfig.url}/trip/v1/driving/${concatCoords} + ${osrmConfig.url}/trip/v1/driving/${concatCoords}?source=first&roundtrip=true `); const tolerance = osrmConfig.tolerance; for (waypoint of response.data.waypoints) { diff --git a/modules/route/back/methods/route/optimizeStops.js b/modules/route/back/methods/route/optimizeStops.js new file mode 100644 index 000000000..9666f201e --- /dev/null +++ b/modules/route/back/methods/route/optimizeStops.js @@ -0,0 +1,25 @@ +module.exports = Self => { + Self.remoteMethod('optimizeStops', { + description: 'Updates the ticket priority of tickets without priority', + accepts: [ + { + arg: 'routeFk', + type: 'number', + required: true + } + ], + returns: { + type: 'object', + root: true + }, + http: { + path: '/optimizeStops', + verb: 'post' + } + }); + + Self.optimizeStops = async(routeFk, options) => { + return; + }; +}; + diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js index cd8685cec..e28b19a61 100644 --- a/modules/route/back/models/route.js +++ b/modules/route/back/models/route.js @@ -16,4 +16,5 @@ module.exports = Self => { require('../methods/route/downloadZip')(Self); require('../methods/route/getExpeditionSummary')(Self); require('../methods/route/getByWorker')(Self); + require('../methods/route/optimizeStops')(Self); }; From f6ac55d9d7c197b7325948392cf85b7bf301520a Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 10 Dec 2024 11:01:52 +0100 Subject: [PATCH 20/43] fix: fix back --- .../ticket/back/methods/ticket-request/filter.js | 14 +++++++++++++- modules/worker/back/models/worker-irpf.json | 10 ++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/modules/ticket/back/methods/ticket-request/filter.js b/modules/ticket/back/methods/ticket-request/filter.js index 53f90b98f..c2edcae81 100644 --- a/modules/ticket/back/methods/ticket-request/filter.js +++ b/modules/ticket/back/methods/ticket-request/filter.js @@ -64,6 +64,11 @@ module.exports = Self => { arg: 'myTeam', type: 'boolean', description: `Team partners` + }, + { + arg: 'daysOnward', + type: 'number', + description: 'The days onward' } ], returns: { @@ -104,6 +109,9 @@ module.exports = Self => { teamMembersId.push(userId); } + const today = Date.vnNew(); + const future = Date.vnNew(); + let where = buildFilter(ctx.args, (param, value) => { switch (param) { case 'search': @@ -140,9 +148,13 @@ module.exports = Self => { return {'tr.requesterFk': {inq: teamMembersId}}; else return {'tr.requesterFk': {nin: teamMembersId}}; + case 'daysOnward': + today.setHours(0, 0, 0, 0); + future.setDate(today.getDate() + value); + future.setHours(23, 59, 59, 999); + return {'t.shipped': {between: [today, future]}}; } }); - if (!where) where = {}; where['tw.ticketFk'] = null; diff --git a/modules/worker/back/models/worker-irpf.json b/modules/worker/back/models/worker-irpf.json index 65f72a1fd..eafda0596 100644 --- a/modules/worker/back/models/worker-irpf.json +++ b/modules/worker/back/models/worker-irpf.json @@ -23,7 +23,7 @@ "type" : "number" }, "isDependend": { - "type" : "number" + "type" : "boolean" }, "familySituation": { "type" : "number" @@ -35,15 +35,17 @@ "type" : "number" }, "hasHousingPaymentBefore": { - "type" : "number" + "type" : "boolean" }, "hasHousingPaymentAfter": { - "type" : "number" + "type" : "boolean" }, "updated": { "type" : "date" + }, + "hasExtendedWorking": { + "type" : "boolean" } - }, "relations": { "disabilityGrade": { From 10558853a2b2304c8732cfe1854e2bcb7ccbd211 Mon Sep 17 00:00:00 2001 From: Jbreso Date: Tue, 10 Dec 2024 13:41:45 +0100 Subject: [PATCH 21/43] feat: refs #8174 create table simsupplier --- .../11327-maroonOak/00-firstScript.sql | 159 ++++++++++++++++++ 1 file changed, 159 insertions(+) diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql index 973050fba..2ad44f700 100644 --- a/db/versions/11327-maroonOak/00-firstScript.sql +++ b/db/versions/11327-maroonOak/00-firstScript.sql @@ -17,3 +17,162 @@ MODIFY `simSerialNumber` VARCHAR(25); ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_simSupplier_FK FOREIGN KEY (simSerialNumber) REFERENCES vn.simSupplier(sim); +INSERT IGNORE INTO `vn`.`simSupplier` (`line`, `ext`, `pin`, `sim`, `puk`, `statusWeb`) +VALUES +(621188151, 2209, 1486, 3456985220092508,14213470, 'OK'), +(621188152, 2210, 8765, 3456985220092509,99473093, 'OK'), +(621188153, 2211, 3064, 3456985220092510,52967210, 'OK'), +(621188759, 2081, 3700, 3456985220123637,56600999, 'OK'), +(621188760, 2082, 3259, 345698522023638,87492404, 'OK'), +(621188761, 2083, 2790, 3456985220123639,94009456, 'OK'), +(621188762, 2084, 2480, 3456985220123644,1484999, 'OK'), +(621188763, 2085, 6876, 3456985220123641,36577064, 'OK'), +(621188766, 2086, 7775, 3456985220123642,80761698, 'OK'), +(621188769, 2088, 4027, 3456985220123643,37921712, 'OK'), +(621188771, 2089, 8797, 3456985220123640,63092540, 'OK'), +(621188772, 2090, 8404, 3456985220123645,21014997, 'OK'), +(621188773, 2091, 5481, 3456985220123646,16317277, 'OK'), +(621188774, 2092, 9632, 3456985220123647,22235994, 'OK'), +(621188775, 2093, 4654, 3456985220123648,28506486, 'OK'), +(621188838, 2094, 1392, 3456985220123649,29498627, 'OK'), +(621188839, 2095, 7774, 3456985220123650,46263490, 'OK'), +(621188840, 2096, 7304, 3456985220123658,8212044, 'OK'), +(621188841, 2097, 5569, 3456985220123652,81597658, 'OK'), +(621188842, 2098, 4944, 3456985220123653,24961501, 'OK'), +(621188843, 2099, 5142, 3456985220123654,17035634, 'OK'), +(621188844, 2111, 7245, 3456985220123655,90231951, 'OK'), +(621188846, 2110, 6590, 3456985220123656,72201537, 'OK'), +(667680207, 2564, 4042, 34569832200759166,48401979, 'OK'), +(667680315, 2565, 7143, 34569832200759372,32143252, 'OK'), +(667680318, 2566, 6342, 34569832200759364,39597112, 'OK'), +(667680413, 2567, 5580, 34569832200759356,32786992, 'OK'), +(667680463, 2568, 0171, 34569832200759349,34240853, 'OK'), +(667688217, 2569, 2500, 34569832200759331,5687589, 'OK'), +(633603945, 2212, 7129, 34569832200759323,51554019, 'OK'), +(622130186, 2213, 4826, 34569832200759307,19623551, 'OK'), +(633973424, 2214, 8535, 34569832200759299,94619307, 'OK'), +(633703828, 2215, 8628, 34569832200759281,22468012, 'OK'), +(622025110, 2216, 2399, 34569832200759273,34602918, 'OK'), +(622924867, 2217, 5665, 34569832200759265,26920216, 'OK'), +(722409630, 2218, 5211, 34569832200759240,93750137, 'OK'), +(623590529, 2219, 0493, 34569832200759208,47077088, 'OK'), +(633243462, 2220, 6902, 34569832200759174,6421962, 'OK'), +(633047286, 2221, 5592, 34569832200759182,32069439, 'OK'), +(744716801, 2112, 9184, 34569832200759190,57049814, 'OK'), +(655995021, 2131, 8896, 34569852202049093,19497356, 'OK'), +(685522718, 2132, 1955, 34569852202049101,28519879, 'OK'), +(674587213, 2994, 2006, 34569332200223743,62360135, 'OK'), +(674587227, 2993, 9271, 34569332200223750,81628192, 'OK'), +(674587229, 2993, 0900, 34569332200223768,91119071, 'OK'), +(674587231, 2992, 5007, 34569332200223776,45826232, 'OK'), +(674587234, 2991, 1378, 34569332200223784,91245744, 'OK'), +(674587240, 2990, 0905, 34569332200223792,13083224, 'OK'), +(674587245, 2989, 9059, 34569332200223800,15291807, 'OK'), +(674587250, 2988, 8188, 34569332200223818,83017918, 'OK'), +(674587254, 2987, 2962, 34569332200223826,92809271, 'OK'), +(674587256, 2986, 0358, 34569332200223834,81067040, 'OK'), +(674592713, 2570, 2537, 34569332200230672,82325850, 'OK'), +(697832478, 2579, 0936, 34568732200494825,49658372, 'OK'), +(697832176, 2571, 5944, 34568732200494742,19039461, 'OK'), +(697832477, 2572, 5138, 34568732200494759,25712504, 'OK'), +(697832178, 2573, 4597, 34568732200494767,66241760, 'OK'), +(697832182, 2574, 9241, 34568732200494775,07342562, 'OK'), +(697832196, 2575, 2995, 34568732200494783,53929026, 'OK'), +(697832214, 2576, 7434, 34568732200494791,49698432, 'OK'), +(697832230, 2577, 7004, 34568732200494809,21578612, 'OK'), +(697832235, 2578, 9674, 34568732200494817,93090700, 'OK'), +(673420375, 2599, 5430, 34562052300117259,35911412, 'OK'), +(673420367, 2598, 8402, 34562052300117242,924654, 'OK'), +(673420361, 2597, 5125, 34562052300117234,12027970, 'OK'), +(673420355, 2596, 5069, 34562052300117226,34978149, 'OK'), +(673420348, 2595, 8911, 34562052300117218,4228121, 'OK'), +(673420346, 2594, 2461, 34562052300117200,67670772, 'OK'), +(673420345, 2593, 2226, 34562052300117192,90586404, 'OK'), +(673420306, 2592, 3355, 34562052300117184,97850017, 'OK'), +(673420257, 2591, 9395, 34562052300117176,50713786, 'OK'), +(673420231, 2590, 1378, 34562052300117168,50151763, 'OK'), +(673420223, 2589, 9580, 34562052300117150,99534550, 'OK'), +(673420216, 2588, 4955, 34562052300117143,317554, 'OK'), +(673420203, 2587, 6742, 34562052300117135,69321531, 'OK'), +(673420201, 2586, 1659, 34562052300117127,54720480, 'OK'), +(673420199, 2585, 7823, 34562052300117119,22923796, 'OK'), +(673420198, 2584, 1787, 34562052300117101,54414630, 'OK'), +(673420168, 2583, 6334, 34562052300117093,50694894, 'OK'), +(673420147, 2582, 8951, 34562052300117085,1402535, 'OK'), +(673420125, 2581, 3068, 34562052300117077,86216200, 'OK'), +(673420124, 2580, 9517, 34562052300117069,42504099, 'OK'), +(600294609, 2715, 7474, 34569832304894588,55923317, 'OK'), +(600084713, 2703, 8342, 34569832304894570,8392636, 'OK'), +(600084732, 2704, 1625, 34569832304894513,75477452, 'OK'), +(600084850, 2705, 9896, 34569832304894653,28589813, 'OK'), +(600084951, 2706, 5520, 34569832304894661,75353012, 'OK'), +(600084978, 2707, 2698, 34569832304894679,9005523, 'OK'), +(600085403, 2708, 0837, 34569832304894646,77051152, 'OK'), +(600085513, 2709, 3106, 34569832304894687,41571002, 'OK'), +(600293916, 2712, 8990, 34569832304894620,95188676, 'OK'), +(600294160, 2714, 6376, 34569832304894703,79879896, 'OK'), +(671919529, 2975, 9184, 34569832304806236,7535392, 'OK'), +(671919942, 2981, 0328, 34569832304806269,31052894, 'OK'), +(671919530, 2976, 0344, 34569832304806251,89860304, 'OK'), +(671919533, 2977, 0668, 34569832304806244,42921771, 'OK'), +(671919535, 2978, 0105, 34569832304806277,31009417, 'OK'), +(671919537, 2979, 0881, 34569832304806285,33479769, 'OK'), +(671919540, 2980, 9874, 34569832304806293,14103929, 'OK'), +(671919525, 2972, 2089, 34569832304806301,45903729, 'OK'), +(671919527, 2973, 8206, 34569832304806368,1586035, 'OK'), +(671919528, 2974, 2532, 34569832304806327,62310124, 'OK'), +(673668717, 2836, 7973, 34562032301044223,15635496, 'OK'), +(673668734, 2837, 4457, 34562032301044231,18313118, 'OK'), +(673668738, 2824, 2911, 34562032301044249,30875583, 'OK'), +(673668745, 2838, 7253, 34562032301044256,62754222, 'OK'), +(673668796, 2839, 0068, 34562032301044264,15556829, 'OK'), +(673668803, 2840, 2386, 34562032301044272,17572287, 'OK'), +(673669591, 2850, 3833, 34562032301044280,34828896, 'OK'), +(673668808, 2841, 3584, 34562032301044298,16234497, 'OK'), +(673670102, 2851, 3554, 34562032301044306,23652625, 'OK'), +(673670131, 2852, 4412, 34562032301044314,88611709, 'OK'), +(673670135, 2827, 6058, 34562032301044322,53918579, 'OK'), +(673670201, 2828, 8066, 34562032301044330,92369343, 'OK'), +(673670225, 2829, 4592, 34562032301044348,24126635, 'OK'), +(673670236, 2830, 2974, 34562032301044355,88608465, 'OK'), +(673671485, 2849, 0349, 34562032301044363,44944874, 'OK'), +(673461977, 2871, 1728, 34562032400157090,46975780, 'OK'), +(673461975, 2870, 4734, 34562032400157082,69628432, 'OK'), +(673461972, 2867, 6276, 34562032400157058,53338365, 'OK'), +(673461979, 2872, 6043, 34562032400157108,36525197, 'OK'), +(673461958, 2859, 3164, 34562032400156977,58947831, 'OK'), +(673461957, 2857, 8685, 34562032400156969,15826386, 'OK'), +(673461944, 2853, 1073, 34562032400156910,20452195, 'OK'), +(673461974, 2869, 7121, 34562032400157074,32044645, 'OK'), +(673461973, 2868, 8022, 34562032400157066,29282044, 'OK'), +(673461971, 2866, 3089, 34562032400157041,66149978, 'OK'), +(673461969, 2865, 7555, 34562032400157033,78391293, 'OK'), +(673461960, 2860, 5203, 34562032400156985,37138232, 'OK'), +(673461952, 2855, 6915, 34562032400156936,62724661, 'OK'), +(673461949, 2854, 8706, 34562032400156928,5594345, 'OK'), +(673461966, 2863, 2496, 34562032400157017,93450666, 'OK'), +(673461968, 2864, 3703, 34562032400157025,23208841, 'OK'), +(673461963, 2862, 9364, 34562032400157009,29712130, 'OK'), +(673462719, 2873, 9387, 34562032400156951,50434348, 'OK'), +(673461962, 2861, 8441, 34562032400156993,39686909, 'OK'), +(673461956, 2826, 5392, 34562032400156944,5496107, 'OK'), +(673465284, 2694, 1523, 34562032400171349,14554994, 'OK'), +(673465282, 2692, 4645, 34562032400171323,24871187, 'OK'), +(673465283, 2693, 5253, 34562032400171331,28303238, 'OK'), +(673465841, 2696, 0849, 34562032400171257,21673222, 'OK'), +(673465258, 2679, 4140, 34562032400171174,39793881, 'OK'), +(673465263, 2680, 6922, 34562032400171182,12253261, 'OK'), +(673465265, 2681, 9112, 34562032400171190,93894366, 'OK'), +(673465267, 2682, 3259, 34562032400171208,2342189, 'OK'), +(673465268, 2683, 8540, 34562032400171216,63886925, 'OK'), +(673465285, 2695, 4167, 34562032400171356,79227618, 'OK'), +(673465270, 2684, 4292, 34562032400171224,19216349, 'OK'), +(673465272, 2685, 4007, 34562032400171232,14396903, 'OK'), +(673465273, 2686, 6894, 34562032400171240,13569394, 'OK'), +(673465274, 2687, 5268, 34562032400171265,59453667, 'OK'), +(673465275, 2688, 0232, 34562032400171273,62324713, 'OK'), +(673465276, 2689, 2720, 34562032400171281,65977200, 'OK'), +(673465843, 2698, 4773, 34562032400171364,78387158, 'OK'), +(673465842, 2697, 3729, 34562032400171315,94201789, 'OK'), +(673465280, 2691, 0503, 34562032400171307,12298533, 'OK'), +(673465279, 2690, 8239, 34562032400171299,76183877, 'OK'); \ No newline at end of file From 87976351012fa275b41a4c46e2a31299ebe77f9f Mon Sep 17 00:00:00 2001 From: Jbreso Date: Tue, 10 Dec 2024 13:46:03 +0100 Subject: [PATCH 22/43] feat: refs #8174 fix --- db/versions/11327-maroonOak/00-firstScript.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql index 2ad44f700..eda1f5e97 100644 --- a/db/versions/11327-maroonOak/00-firstScript.sql +++ b/db/versions/11327-maroonOak/00-firstScript.sql @@ -11,7 +11,7 @@ CREATE TABLE IF NOT EXISTS `vn`.`simSupplier` ( ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; -ALTER TABLE `deviceProductionUser` +ALTER TABLE `vn`.`deviceProductionUser` MODIFY `simSerialNumber` VARCHAR(25); ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_simSupplier_FK From c8ec94bed9116fa3242c566e36eb1335b51834d0 Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 11 Dec 2024 09:03:14 +0100 Subject: [PATCH 23/43] feat: refs #7882 Osrm service --- back/methods/osrm-config/optimize.js | 28 +++-- .../11379-yellowCordyline/00-firstScript.sql | 25 +++- loopback/locale/es.json | 3 +- .../back/methods/route/optimizePriority.js | 119 ++++++++++++++++++ .../route/back/methods/route/optimizeStops.js | 25 ---- modules/route/back/models/route.js | 2 +- modules/zone/back/model-config.json | 3 + modules/zone/back/models/zone-config.json | 28 +++++ modules/zone/back/models/zone.json | 37 +++--- 9 files changed, 211 insertions(+), 59 deletions(-) create mode 100644 modules/route/back/methods/route/optimizePriority.js delete mode 100644 modules/route/back/methods/route/optimizeStops.js create mode 100644 modules/zone/back/models/zone-config.json diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js index 0c570b95a..c03b70315 100644 --- a/back/methods/osrm-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -9,9 +9,13 @@ module.exports = Self => { arg: 'addressIds', type: 'array', required: true + }, { + arg: 'firstAddressId', + type: 'number', + required: false }], returns: { - type: 'string', + type: 'object', root: true }, http: { @@ -20,21 +24,22 @@ module.exports = Self => { } }); - Self.optimize = async addressIds => { + Self.optimize = async(addressIds, firstAddressId) => { const models = Self.app.models; try { const osrmConfig = await models.OsrmConfig.findOne(); if (!osrmConfig) throw new UserError(`OSRM service is not configured`); let coords = []; - - const address = await models.Address.findById(32308); // Aquí irá el address asociada a la zona - if (address.latitude && address.longitude) { - coords.push({ - addressId: address.id, - latitude: address.latitude.toFixed(6), - longitude: address.longitude.toFixed(6) - }); + if (firstAddressId) { + const firstAddress = await models.Address.findById(firstAddressId); + if (firstAddress.latitude && firstAddress.longitude) { + coords.push({ + addressId: firstAddress.id, + latitude: firstAddress.latitude.toFixed(6), + longitude: firstAddress.longitude.toFixed(6) + }); + } } for (const addressId of addressIds) { @@ -47,6 +52,9 @@ module.exports = Self => { }); } } + + if (!coords.length) throw new UserError('No address has coordinates'); + const concatCoords = coords .map(coord => `${coord.longitude},${coord.latitude}`) .join(';'); diff --git a/db/versions/11379-yellowCordyline/00-firstScript.sql b/db/versions/11379-yellowCordyline/00-firstScript.sql index 6c0263f7f..8d90ee90c 100644 --- a/db/versions/11379-yellowCordyline/00-firstScript.sql +++ b/db/versions/11379-yellowCordyline/00-firstScript.sql @@ -1,7 +1,20 @@ CREATE TABLE `vn`.`osrmConfig` ( - `id` int(10) unsigned NOT NULL, - `url` varchar(100) NOT NULL COMMENT 'Dirección base de la API', - `tolerance` decimal(6,6) NOT NULL DEFAULT 0 COMMENT 'Tolerancia entre las coordenadas enviadas y las retornadas', - PRIMARY KEY (`id`), - CONSTRAINT `osrmConfig_check` CHECK (`id` = 1) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; \ No newline at end of file + `id` int(10) unsigned NOT NULL, + `url` varchar(100) NOT NULL COMMENT 'Dirección base de la API', + `tolerance` decimal(6,6) NOT NULL DEFAULT 0 COMMENT 'Tolerancia entre las coordenadas enviadas y las retornadas', + PRIMARY KEY (`id`), + CONSTRAINT `osrmConfig_check` CHECK (`id` = 1) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; + +-- Para que no de error al añadir la FK de zone +UPDATE vn.zone + SET price = 0.1 + WHERE price = 0; + +ALTER TABLE vn.`zone` + ADD addressFk int(11) DEFAULT NULL COMMENT 'Punto de distribución de donde salen para repartir', + ADD CONSTRAINT zone_address_FK FOREIGN KEY (addressFk) REFERENCES vn.address(id) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE vn.zoneConfig + ADD defaultAddressFk int(11) DEFAULT NULL NULL COMMENT 'Punto de distribución por defecto', + ADD CONSTRAINT zoneConfig_address_FK FOREIGN KEY (defaultAddressFk) REFERENCES vn.address(id) ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 8013a7fe6..03cccbe1a 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -393,5 +393,6 @@ "There are tickets to be invoiced": "Hay tickets para esta zona, borralos primero", "No trips found because input coordinates are not connected": "No se encontraron rutas porque las coordenadas de entrada no están conectadas", "This request is not supported": "Esta solicitud no es compatible", - "Invalid options or too many coordinates": "Opciones invalidas o demasiadas coordenadas" + "Invalid options or too many coordinates": "Opciones invalidas o demasiadas coordenadas", + "No address has coordinates": "Ninguna dirección tiene coordenadas" } \ No newline at end of file diff --git a/modules/route/back/methods/route/optimizePriority.js b/modules/route/back/methods/route/optimizePriority.js new file mode 100644 index 000000000..f84af50f8 --- /dev/null +++ b/modules/route/back/methods/route/optimizePriority.js @@ -0,0 +1,119 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethod('optimizePriority', { + description: 'Updates the ticket priority of tickets without priority', + accepts: { + arg: 'id', + type: 'number', + required: true, + description: 'Route id', + http: {source: 'path'} + }, + returns: { + type: 'object', + root: true + }, + http: { + path: '/:id/optimizePriority', + verb: 'POST' + } + }); + + Self.optimizePriority = async(id, options) => { + const models = Self.app.models; + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const ticketsIds = await models.Ticket.find({ + where: {routeFk: id} + }, myOptions); + + let ticketAddress = []; + for (const ticketId of ticketsIds) { + ticketAddress.push({ + ticketId: ticketId.id, + addressId: ticketId.addressFk, + zoneId: ticketId.zoneFk, + priority: ticketId.priority + }); + } + + // Igualamos los priority del mismo addressId + const addressPriorityMap = ticketAddress.reduce((acc, {addressId, priority}) => { + if (priority !== null) { + acc[addressId] = acc[addressId] === undefined + ? priority + : Math.max(acc[addressId], priority); + } + return acc; + }); + ticketAddress.forEach(item => { + const maxPriority = addressPriorityMap[item.addressId]; + if (maxPriority) item.priority = maxPriority; + }); + + // Añadimos las direcciones a optimizar + let addressIds = []; + ticketAddress.forEach(h => { + if (!addressIds.includes(h.addressId) && !h.priority) + addressIds.push(h.addressId); + }); + if (!addressIds.length) throw new UserError('All tickets have a route order'); + + // Obtenemos el zoneId más frecuente + const zoneFrequency = ticketAddress.reduce((acc, {zoneId}) => { + if (zoneId != null) acc[zoneId] = (acc[zoneId] || 0) + 1; + return acc; + }, {}); + const [mostFrequentZoneId] = Object.entries(zoneFrequency) + .reduce((maxEntry, entry) => entry[1] > maxEntry[1] ? entry : maxEntry, [null, 0]); + const zone = await models.Zone.findById(mostFrequentZoneId, myOptions); + let firstAddress = zone.addressFk; + if (!firstAddress) firstAddress = (await models.ZoneConfig.findOne()).defaultAddressFk; + + // Revisamos las coincidencias y actualizamos la prioridad en el array + const addressPositions = await models.OsrmConfig.optimize(addressIds, firstAddress, myOptions); + const maxPosition = Math.max(...ticketAddress.map(g => g.priority)); + await Promise.all(ticketAddress.map(async i => { + const foundPosition = addressPositions.coords.find(item => item.addressId === i.addressId); + if (foundPosition) i.priority = foundPosition.position + (maxPosition + 1); + })); + + // Suavizado de prioridad para que no hayan escalones + const allPriorities = ticketAddress + .map(item => item.priority) + .filter(p => p !== null); + const uniquePriorities = [...new Set(allPriorities)].sort((a, b) => a - b); + const priorityMap = {}; + uniquePriorities.forEach((p, index) => { + priorityMap[p] = index + 1; + }); + ticketAddress.forEach(item => { + if (item.priority !== null) item.priority = priorityMap[item.priority]; + }); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + // Realizamos el update en la base de datos + try { + await Promise.all(ticketAddress.map(async y => { + if (y.priority) { + const ticket = await models.Ticket.findById(y.ticketId); + await ticket.updateAttribute('priority', y.priority, myOptions); + } + })); + if (tx) await tx.commit(); + return; + } catch (err) { + if (tx) await tx.rollback(); + throw err; + } + }; +}; diff --git a/modules/route/back/methods/route/optimizeStops.js b/modules/route/back/methods/route/optimizeStops.js deleted file mode 100644 index 9666f201e..000000000 --- a/modules/route/back/methods/route/optimizeStops.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = Self => { - Self.remoteMethod('optimizeStops', { - description: 'Updates the ticket priority of tickets without priority', - accepts: [ - { - arg: 'routeFk', - type: 'number', - required: true - } - ], - returns: { - type: 'object', - root: true - }, - http: { - path: '/optimizeStops', - verb: 'post' - } - }); - - Self.optimizeStops = async(routeFk, options) => { - return; - }; -}; - diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js index e28b19a61..f73ff3e51 100644 --- a/modules/route/back/models/route.js +++ b/modules/route/back/models/route.js @@ -16,5 +16,5 @@ module.exports = Self => { require('../methods/route/downloadZip')(Self); require('../methods/route/getExpeditionSummary')(Self); require('../methods/route/getByWorker')(Self); - require('../methods/route/optimizeStops')(Self); + require('../methods/route/optimizePriority')(Self); }; diff --git a/modules/zone/back/model-config.json b/modules/zone/back/model-config.json index 3bbbe0d1b..2cd3f9d01 100644 --- a/modules/zone/back/model-config.json +++ b/modules/zone/back/model-config.json @@ -17,6 +17,9 @@ "ZoneClosure": { "dataSource": "vn" }, + "ZoneConfig": { + "dataSource": "vn" + }, "ZoneEvent": { "dataSource": "vn" }, diff --git a/modules/zone/back/models/zone-config.json b/modules/zone/back/models/zone-config.json new file mode 100644 index 000000000..a5da7fe55 --- /dev/null +++ b/modules/zone/back/models/zone-config.json @@ -0,0 +1,28 @@ +{ + "name": "ZoneConfig", + "options": { + "mysql": { + "table": "zoneConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "scope": { + "type": "number" + }, + "forwardDays": { + "type": "number" + } + }, + "relations": { + "address": { + "type": "belongsTo", + "model": "Address", + "foreignKey": "defaultAddressFk" + } + } +} diff --git a/modules/zone/back/models/zone.json b/modules/zone/back/models/zone.json index 5b25e40d1..141b28750 100644 --- a/modules/zone/back/models/zone.json +++ b/modules/zone/back/models/zone.json @@ -1,9 +1,9 @@ { "name": "Zone", "base": "VnModel", - "mixins": { - "Loggable": true - }, + "mixins": { + "Loggable": true + }, "options": { "mysql": { "table": "zone" @@ -48,30 +48,35 @@ } }, "relations": { - "agencyMode": { - "type": "belongsTo", - "model": "AgencyMode", - "foreignKey": "agencyModeFk" + "agencyMode": { + "type": "belongsTo", + "model": "AgencyMode", + "foreignKey": "agencyModeFk" }, "events": { - "type": "hasMany", - "model": "ZoneEvent", - "foreignKey": "zoneFk" - }, + "type": "hasMany", + "model": "ZoneEvent", + "foreignKey": "zoneFk" + }, "exclusions": { - "type": "hasMany", - "model": "ZoneExclusion", + "type": "hasMany", + "model": "ZoneExclusion", "foreignKey": "zoneFk" }, "warehouses": { "type": "hasMany", "model": "ZoneWarehouse", "foreignKey": "zoneFk" - }, + }, "closures": { "type": "hasMany", "model": "ZoneClosure", "foreignKey": "zoneFk" - } - } + }, + "address": { + "type": "belongsTo", + "model": "Address", + "foreignKey": "addressFk" + } + } } From 34da78e1ba11e89dc613952519b55b10f4d7cd7f Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 11 Dec 2024 09:58:51 +0100 Subject: [PATCH 24/43] fix: refs #6389 back --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 44eafc8c8..6c98f6cd7 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -166,7 +166,7 @@ module.exports = Self => { param = `t.${param}`; return {[param]: value}; case 'packing': - return {'packing': value}; + return {'i.itemPackingTypeFk': value}; } }); From 28ab6b2266620feace9b03ffb66c83f7a5cd167e Mon Sep 17 00:00:00 2001 From: Jbreso Date: Wed, 11 Dec 2024 11:20:15 +0100 Subject: [PATCH 25/43] feat: refs #8174 fix --- .../11327-maroonOak/00-firstScript.sql | 327 +++++++++--------- 1 file changed, 163 insertions(+), 164 deletions(-) diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql index eda1f5e97..250a2fc8b 100644 --- a/db/versions/11327-maroonOak/00-firstScript.sql +++ b/db/versions/11327-maroonOak/00-firstScript.sql @@ -1,11 +1,10 @@ CREATE TABLE IF NOT EXISTS `vn`.`simSupplier` ( - `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `line` int(9) unsigned DEFAULT NULL, - `ext` int(10) unsigned DEFAULT NULL, - `pin` int(4) unsigned DEFAULT NULL, + `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, + `line` INT(9) unsigned NOT NULL, + `ext` CHAR(4) NOT NULL CHECK (ext REGEXP '^[0-9]{4}$'), + `pin` CHAR(4) NOT NULL CHECK (pin REGEXP '^[0-9]{4}$'), `sim` VARCHAR(25), - `puk` int(10) unsigned DEFAULT NULL, - `statusWeb` varchar(50) DEFAULT NULL, + `puk` INT(10) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `sim_UNIQUE` (`sim`) ) ENGINE=InnoDB AUTO_INCREMENT=1 @@ -17,162 +16,162 @@ MODIFY `simSerialNumber` VARCHAR(25); ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_simSupplier_FK FOREIGN KEY (simSerialNumber) REFERENCES vn.simSupplier(sim); -INSERT IGNORE INTO `vn`.`simSupplier` (`line`, `ext`, `pin`, `sim`, `puk`, `statusWeb`) +INSERT IGNORE INTO `vn`.`simSupplier` (`line`, `ext`, `pin`, `sim`, `puk`) VALUES -(621188151, 2209, 1486, 3456985220092508,14213470, 'OK'), -(621188152, 2210, 8765, 3456985220092509,99473093, 'OK'), -(621188153, 2211, 3064, 3456985220092510,52967210, 'OK'), -(621188759, 2081, 3700, 3456985220123637,56600999, 'OK'), -(621188760, 2082, 3259, 345698522023638,87492404, 'OK'), -(621188761, 2083, 2790, 3456985220123639,94009456, 'OK'), -(621188762, 2084, 2480, 3456985220123644,1484999, 'OK'), -(621188763, 2085, 6876, 3456985220123641,36577064, 'OK'), -(621188766, 2086, 7775, 3456985220123642,80761698, 'OK'), -(621188769, 2088, 4027, 3456985220123643,37921712, 'OK'), -(621188771, 2089, 8797, 3456985220123640,63092540, 'OK'), -(621188772, 2090, 8404, 3456985220123645,21014997, 'OK'), -(621188773, 2091, 5481, 3456985220123646,16317277, 'OK'), -(621188774, 2092, 9632, 3456985220123647,22235994, 'OK'), -(621188775, 2093, 4654, 3456985220123648,28506486, 'OK'), -(621188838, 2094, 1392, 3456985220123649,29498627, 'OK'), -(621188839, 2095, 7774, 3456985220123650,46263490, 'OK'), -(621188840, 2096, 7304, 3456985220123658,8212044, 'OK'), -(621188841, 2097, 5569, 3456985220123652,81597658, 'OK'), -(621188842, 2098, 4944, 3456985220123653,24961501, 'OK'), -(621188843, 2099, 5142, 3456985220123654,17035634, 'OK'), -(621188844, 2111, 7245, 3456985220123655,90231951, 'OK'), -(621188846, 2110, 6590, 3456985220123656,72201537, 'OK'), -(667680207, 2564, 4042, 34569832200759166,48401979, 'OK'), -(667680315, 2565, 7143, 34569832200759372,32143252, 'OK'), -(667680318, 2566, 6342, 34569832200759364,39597112, 'OK'), -(667680413, 2567, 5580, 34569832200759356,32786992, 'OK'), -(667680463, 2568, 0171, 34569832200759349,34240853, 'OK'), -(667688217, 2569, 2500, 34569832200759331,5687589, 'OK'), -(633603945, 2212, 7129, 34569832200759323,51554019, 'OK'), -(622130186, 2213, 4826, 34569832200759307,19623551, 'OK'), -(633973424, 2214, 8535, 34569832200759299,94619307, 'OK'), -(633703828, 2215, 8628, 34569832200759281,22468012, 'OK'), -(622025110, 2216, 2399, 34569832200759273,34602918, 'OK'), -(622924867, 2217, 5665, 34569832200759265,26920216, 'OK'), -(722409630, 2218, 5211, 34569832200759240,93750137, 'OK'), -(623590529, 2219, 0493, 34569832200759208,47077088, 'OK'), -(633243462, 2220, 6902, 34569832200759174,6421962, 'OK'), -(633047286, 2221, 5592, 34569832200759182,32069439, 'OK'), -(744716801, 2112, 9184, 34569832200759190,57049814, 'OK'), -(655995021, 2131, 8896, 34569852202049093,19497356, 'OK'), -(685522718, 2132, 1955, 34569852202049101,28519879, 'OK'), -(674587213, 2994, 2006, 34569332200223743,62360135, 'OK'), -(674587227, 2993, 9271, 34569332200223750,81628192, 'OK'), -(674587229, 2993, 0900, 34569332200223768,91119071, 'OK'), -(674587231, 2992, 5007, 34569332200223776,45826232, 'OK'), -(674587234, 2991, 1378, 34569332200223784,91245744, 'OK'), -(674587240, 2990, 0905, 34569332200223792,13083224, 'OK'), -(674587245, 2989, 9059, 34569332200223800,15291807, 'OK'), -(674587250, 2988, 8188, 34569332200223818,83017918, 'OK'), -(674587254, 2987, 2962, 34569332200223826,92809271, 'OK'), -(674587256, 2986, 0358, 34569332200223834,81067040, 'OK'), -(674592713, 2570, 2537, 34569332200230672,82325850, 'OK'), -(697832478, 2579, 0936, 34568732200494825,49658372, 'OK'), -(697832176, 2571, 5944, 34568732200494742,19039461, 'OK'), -(697832477, 2572, 5138, 34568732200494759,25712504, 'OK'), -(697832178, 2573, 4597, 34568732200494767,66241760, 'OK'), -(697832182, 2574, 9241, 34568732200494775,07342562, 'OK'), -(697832196, 2575, 2995, 34568732200494783,53929026, 'OK'), -(697832214, 2576, 7434, 34568732200494791,49698432, 'OK'), -(697832230, 2577, 7004, 34568732200494809,21578612, 'OK'), -(697832235, 2578, 9674, 34568732200494817,93090700, 'OK'), -(673420375, 2599, 5430, 34562052300117259,35911412, 'OK'), -(673420367, 2598, 8402, 34562052300117242,924654, 'OK'), -(673420361, 2597, 5125, 34562052300117234,12027970, 'OK'), -(673420355, 2596, 5069, 34562052300117226,34978149, 'OK'), -(673420348, 2595, 8911, 34562052300117218,4228121, 'OK'), -(673420346, 2594, 2461, 34562052300117200,67670772, 'OK'), -(673420345, 2593, 2226, 34562052300117192,90586404, 'OK'), -(673420306, 2592, 3355, 34562052300117184,97850017, 'OK'), -(673420257, 2591, 9395, 34562052300117176,50713786, 'OK'), -(673420231, 2590, 1378, 34562052300117168,50151763, 'OK'), -(673420223, 2589, 9580, 34562052300117150,99534550, 'OK'), -(673420216, 2588, 4955, 34562052300117143,317554, 'OK'), -(673420203, 2587, 6742, 34562052300117135,69321531, 'OK'), -(673420201, 2586, 1659, 34562052300117127,54720480, 'OK'), -(673420199, 2585, 7823, 34562052300117119,22923796, 'OK'), -(673420198, 2584, 1787, 34562052300117101,54414630, 'OK'), -(673420168, 2583, 6334, 34562052300117093,50694894, 'OK'), -(673420147, 2582, 8951, 34562052300117085,1402535, 'OK'), -(673420125, 2581, 3068, 34562052300117077,86216200, 'OK'), -(673420124, 2580, 9517, 34562052300117069,42504099, 'OK'), -(600294609, 2715, 7474, 34569832304894588,55923317, 'OK'), -(600084713, 2703, 8342, 34569832304894570,8392636, 'OK'), -(600084732, 2704, 1625, 34569832304894513,75477452, 'OK'), -(600084850, 2705, 9896, 34569832304894653,28589813, 'OK'), -(600084951, 2706, 5520, 34569832304894661,75353012, 'OK'), -(600084978, 2707, 2698, 34569832304894679,9005523, 'OK'), -(600085403, 2708, 0837, 34569832304894646,77051152, 'OK'), -(600085513, 2709, 3106, 34569832304894687,41571002, 'OK'), -(600293916, 2712, 8990, 34569832304894620,95188676, 'OK'), -(600294160, 2714, 6376, 34569832304894703,79879896, 'OK'), -(671919529, 2975, 9184, 34569832304806236,7535392, 'OK'), -(671919942, 2981, 0328, 34569832304806269,31052894, 'OK'), -(671919530, 2976, 0344, 34569832304806251,89860304, 'OK'), -(671919533, 2977, 0668, 34569832304806244,42921771, 'OK'), -(671919535, 2978, 0105, 34569832304806277,31009417, 'OK'), -(671919537, 2979, 0881, 34569832304806285,33479769, 'OK'), -(671919540, 2980, 9874, 34569832304806293,14103929, 'OK'), -(671919525, 2972, 2089, 34569832304806301,45903729, 'OK'), -(671919527, 2973, 8206, 34569832304806368,1586035, 'OK'), -(671919528, 2974, 2532, 34569832304806327,62310124, 'OK'), -(673668717, 2836, 7973, 34562032301044223,15635496, 'OK'), -(673668734, 2837, 4457, 34562032301044231,18313118, 'OK'), -(673668738, 2824, 2911, 34562032301044249,30875583, 'OK'), -(673668745, 2838, 7253, 34562032301044256,62754222, 'OK'), -(673668796, 2839, 0068, 34562032301044264,15556829, 'OK'), -(673668803, 2840, 2386, 34562032301044272,17572287, 'OK'), -(673669591, 2850, 3833, 34562032301044280,34828896, 'OK'), -(673668808, 2841, 3584, 34562032301044298,16234497, 'OK'), -(673670102, 2851, 3554, 34562032301044306,23652625, 'OK'), -(673670131, 2852, 4412, 34562032301044314,88611709, 'OK'), -(673670135, 2827, 6058, 34562032301044322,53918579, 'OK'), -(673670201, 2828, 8066, 34562032301044330,92369343, 'OK'), -(673670225, 2829, 4592, 34562032301044348,24126635, 'OK'), -(673670236, 2830, 2974, 34562032301044355,88608465, 'OK'), -(673671485, 2849, 0349, 34562032301044363,44944874, 'OK'), -(673461977, 2871, 1728, 34562032400157090,46975780, 'OK'), -(673461975, 2870, 4734, 34562032400157082,69628432, 'OK'), -(673461972, 2867, 6276, 34562032400157058,53338365, 'OK'), -(673461979, 2872, 6043, 34562032400157108,36525197, 'OK'), -(673461958, 2859, 3164, 34562032400156977,58947831, 'OK'), -(673461957, 2857, 8685, 34562032400156969,15826386, 'OK'), -(673461944, 2853, 1073, 34562032400156910,20452195, 'OK'), -(673461974, 2869, 7121, 34562032400157074,32044645, 'OK'), -(673461973, 2868, 8022, 34562032400157066,29282044, 'OK'), -(673461971, 2866, 3089, 34562032400157041,66149978, 'OK'), -(673461969, 2865, 7555, 34562032400157033,78391293, 'OK'), -(673461960, 2860, 5203, 34562032400156985,37138232, 'OK'), -(673461952, 2855, 6915, 34562032400156936,62724661, 'OK'), -(673461949, 2854, 8706, 34562032400156928,5594345, 'OK'), -(673461966, 2863, 2496, 34562032400157017,93450666, 'OK'), -(673461968, 2864, 3703, 34562032400157025,23208841, 'OK'), -(673461963, 2862, 9364, 34562032400157009,29712130, 'OK'), -(673462719, 2873, 9387, 34562032400156951,50434348, 'OK'), -(673461962, 2861, 8441, 34562032400156993,39686909, 'OK'), -(673461956, 2826, 5392, 34562032400156944,5496107, 'OK'), -(673465284, 2694, 1523, 34562032400171349,14554994, 'OK'), -(673465282, 2692, 4645, 34562032400171323,24871187, 'OK'), -(673465283, 2693, 5253, 34562032400171331,28303238, 'OK'), -(673465841, 2696, 0849, 34562032400171257,21673222, 'OK'), -(673465258, 2679, 4140, 34562032400171174,39793881, 'OK'), -(673465263, 2680, 6922, 34562032400171182,12253261, 'OK'), -(673465265, 2681, 9112, 34562032400171190,93894366, 'OK'), -(673465267, 2682, 3259, 34562032400171208,2342189, 'OK'), -(673465268, 2683, 8540, 34562032400171216,63886925, 'OK'), -(673465285, 2695, 4167, 34562032400171356,79227618, 'OK'), -(673465270, 2684, 4292, 34562032400171224,19216349, 'OK'), -(673465272, 2685, 4007, 34562032400171232,14396903, 'OK'), -(673465273, 2686, 6894, 34562032400171240,13569394, 'OK'), -(673465274, 2687, 5268, 34562032400171265,59453667, 'OK'), -(673465275, 2688, 0232, 34562032400171273,62324713, 'OK'), -(673465276, 2689, 2720, 34562032400171281,65977200, 'OK'), -(673465843, 2698, 4773, 34562032400171364,78387158, 'OK'), -(673465842, 2697, 3729, 34562032400171315,94201789, 'OK'), -(673465280, 2691, 0503, 34562032400171307,12298533, 'OK'), -(673465279, 2690, 8239, 34562032400171299,76183877, 'OK'); \ No newline at end of file +(621188151, '2209', '1486', 3456985220092508,14213470), +(621188152, '2210', '8765', 3456985220092509,99473093), +(621188153, '2211', '3064', 3456985220092510,52967210), +(621188759, '2081', '3700', 3456985220123637,56600999), +(621188760, '2082', '3259', 345698522023638,87492404), +(621188761, '2083', '2790', 3456985220123639,94009456), +(621188762, '2084', '2480', 3456985220123644,1484999), +(621188763, '2085', '6876', 3456985220123641,36577064), +(621188766, '2086', '7775', 3456985220123642,80761698), +(621188769, '2088', '4027', 3456985220123643,37921712), +(621188771, '2089', '8797', 3456985220123640,63092540), +(621188772, '2090', '8404', 3456985220123645,21014997), +(621188773, '2091', '5481', 3456985220123646,16317277), +(621188774, '2092', '9632', 3456985220123647,22235994), +(621188775, '2093', '4654', 3456985220123648,28506486), +(621188838, '2094', '1392', 3456985220123649,29498627), +(621188839, '2095', '7774', 3456985220123650,46263490), +(621188840, '2096', '7304', 3456985220123658,8212044), +(621188841, '2097', '5569', 3456985220123652,81597658), +(621188842, '2098', '4944', 3456985220123653,24961501), +(621188843, '2099', '5142', 3456985220123654,17035634), +(621188844, '2111', '7245', 3456985220123655,90231951), +(621188846, '2110', '6590', 3456985220123656,72201537), +(667680207, '2564', '4042', 34569832200759166,48401979), +(667680315, '2565', '7143', 34569832200759372,32143252), +(667680318, '2566', '6342', 34569832200759364,39597112), +(667680413, '2567', '5580', 34569832200759356,32786992), +(667680463, '2568', '0171', 34569832200759349,34240853), +(667688217, '2569', '2500', 34569832200759331,5687589), +(633603945, '2212', '7129', 34569832200759323,51554019), +(622130186, '2213', '4826', 34569832200759307,19623551), +(633973424, '2214', '8535', 34569832200759299,94619307), +(633703828, '2215', '8628', 34569832200759281,22468012), +(622025110, '2216', '2399', 34569832200759273,34602918), +(622924867, '2217', '5665', 34569832200759265,26920216), +(722409630, '2218', '5211', 34569832200759240,93750137), +(623590529, '2219', '0493', 34569832200759208,47077088), +(633243462, '2220', '6902', 34569832200759174,6421962), +(633047286, '2221', '5592', 34569832200759182,32069439), +(744716801, '2112', '9184', 34569832200759190,57049814), +(655995021, '2131', '8896', 34569852202049093,19497356), +(685522718, '2132', '1955', 34569852202049101,28519879), +(674587213, '2994', '2006', 34569332200223743,62360135), +(674587227, '2993', '9271', 34569332200223750,81628192), +(674587229, '2993', '0900', 34569332200223768,91119071), +(674587231, '2992', '5007', 34569332200223776,45826232), +(674587234, '2991', '1378', 34569332200223784,91245744), +(674587240, '2990', '0905', 34569332200223792,13083224), +(674587245, '2989', '9059', 34569332200223800,15291807), +(674587250, '2988', '8188', 34569332200223818,83017918), +(674587254, '2987', '2962', 34569332200223826,92809271), +(674587256, '2986', '0358', 34569332200223834,81067040), +(674592713, '2570', '2537', 34569332200230672,82325850), +(697832478, '2579', '0936', 34568732200494825,49658372), +(697832176, '2571', '5944', 34568732200494742,19039461), +(697832477, '2572', '5138', 34568732200494759,25712504), +(697832178, '2573', '4597', 34568732200494767,66241760), +(697832182, '2574', '9241', 34568732200494775,07342562), +(697832196, '2575', '2995', 34568732200494783,53929026), +(697832214, '2576', '7434', 34568732200494791,49698432), +(697832230, '2577', '7004', 34568732200494809,21578612), +(697832235, '2578', '9674', 34568732200494817,93090700), +(673420375, '2599', '5430', 34562052300117259,35911412), +(673420367, '2598', '8402', 34562052300117242,924654), +(673420361, '2597', '5125', 34562052300117234,12027970), +(673420355, '2596', '5069', 34562052300117226,34978149), +(673420348, '2595', '8911', 34562052300117218,4228121), +(673420346, '2594', '2461', 34562052300117200,67670772), +(673420345, '2593', '2226', 34562052300117192,90586404), +(673420306, '2592', '3355', 34562052300117184,97850017), +(673420257, '2591', '9395', 34562052300117176,50713786), +(673420231, '2590', '1378', 34562052300117168,50151763), +(673420223, '2589', '9580', 34562052300117150,99534550), +(673420216, '2588', '4955', 34562052300117143,317554), +(673420203, '2587', '6742', 34562052300117135,69321531), +(673420201, '2586', '1659', 34562052300117127,54720480), +(673420199, '2585', '7823', 34562052300117119,22923796), +(673420198, '2584', '1787', 34562052300117101,54414630), +(673420168, '2583', '6334', 34562052300117093,50694894), +(673420147, '2582', '8951', 34562052300117085,1402535), +(673420125, '2581', '3068', 34562052300117077,86216200), +(673420124, '2580', '9517', 34562052300117069,42504099), +(600294609, '2715', '7474', 34569832304894588,55923317), +(600084713, '2703', '8342', 34569832304894570,8392636), +(600084732, '2704', '1625', 34569832304894513,75477452), +(600084850, '2705', '9896', 34569832304894653,28589813), +(600084951, '2706', '5520', 34569832304894661,75353012), +(600084978, '2707', '2698', 34569832304894679,9005523), +(600085403, '2708', '0837', 34569832304894646,77051152), +(600085513, '2709', '3106', 34569832304894687,41571002), +(600293916, '2712', '8990', 34569832304894620,95188676), +(600294160, '2714', '6376', 34569832304894703,79879896), +(671919529, '2975', '9184', 34569832304806236,7535392), +(671919942, '2981', '0328', 34569832304806269,31052894), +(671919530, '2976', '0344', 34569832304806251,89860304), +(671919533, '2977', '0668', 34569832304806244,42921771), +(671919535, '2978', '0105', 34569832304806277,31009417), +(671919537, '2979', '0881', 34569832304806285,33479769), +(671919540, '2980', '9874', 34569832304806293,14103929), +(671919525, '2972', '2089', 34569832304806301,45903729), +(671919527, '2973', '8206', 34569832304806368,1586035), +(671919528, '2974', '2532', 34569832304806327,62310124), +(673668717, '2836', '7973', 34562032301044223,15635496), +(673668734, '2837', '4457', 34562032301044231,18313118), +(673668738, '2824', '2911', 34562032301044249,30875583), +(673668745, '2838', '7253', 34562032301044256,62754222), +(673668796, '2839', '0068', 34562032301044264,15556829), +(673668803, '2840', '2386', 34562032301044272,17572287), +(673669591, '2850', '3833', 34562032301044280,34828896), +(673668808, '2841', '3584', 34562032301044298,16234497), +(673670102, '2851', '3554', 34562032301044306,23652625), +(673670131, '2852', '4412', 34562032301044314,88611709), +(673670135, '2827', '6058', 34562032301044322,53918579), +(673670201, '2828', '8066', 34562032301044330,92369343), +(673670225, '2829', '4592', 34562032301044348,24126635), +(673670236, '2830', '2974', 34562032301044355,88608465), +(673671485, '2849', '0349', 34562032301044363,44944874), +(673461977, '2871', '1728', 34562032400157090,46975780), +(673461975, '2870', '4734', 34562032400157082,69628432), +(673461972, '2867', '6276', 34562032400157058,53338365), +(673461979, '2872', '6043', 34562032400157108,36525197), +(673461958, '2859', '3164', 34562032400156977,58947831), +(673461957, '2857', '8685', 34562032400156969,15826386), +(673461944, '2853', '1073', 34562032400156910,20452195), +(673461974, '2869', '7121', 34562032400157074,32044645), +(673461973, '2868', '8022', 34562032400157066,29282044), +(673461971, '2866', '3089', 34562032400157041,66149978), +(673461969, '2865', '7555', 34562032400157033,78391293), +(673461960, '2860', '5203', 34562032400156985,37138232), +(673461952, '2855', '6915', 34562032400156936,62724661), +(673461949, '2854', '8706', 34562032400156928,5594345), +(673461966, '2863', '2496', 34562032400157017,93450666), +(673461968, '2864', '3703', 34562032400157025,23208841), +(673461963, '2862', '9364', 34562032400157009,29712130), +(673462719, '2873', '9387', 34562032400156951,50434348), +(673461962, '2861', '8441', 34562032400156993,39686909), +(673461956, '2826', '5392', 34562032400156944,5496107), +(673465284, '2694', '1523', 34562032400171349,14554994), +(673465282, '2692', '4645', 34562032400171323,24871187), +(673465283, '2693', '5253', 34562032400171331,28303238), +(673465841, '2696', '0849', 34562032400171257,21673222), +(673465258, '2679', '4140', 34562032400171174,39793881), +(673465263, '2680', '6922', 34562032400171182,12253261), +(673465265, '2681', '9112', 34562032400171190,93894366), +(673465267, '2682', '3259', 34562032400171208,2342189), +(673465268, '2683', '8540', 34562032400171216,63886925), +(673465285, '2695', '4167', 34562032400171356,79227618), +(673465270, '2684', '4292', 34562032400171224,19216349), +(673465272, '2685', '4007', 34562032400171232,14396903), +(673465273, '2686', '6894', 34562032400171240,13569394), +(673465274, '2687', '5268', 34562032400171265,59453667), +(673465275, '2688', '0232', 34562032400171273,62324713), +(673465276, '2689', '2720', 34562032400171281,65977200), +(673465843, '2698', '4773', 34562032400171364,78387158), +(673465842, '2697', '3729', 34562032400171315,94201789), +(673465280, '2691', '0503', 34562032400171307,12298533), +(673465279, '2690', '8239', 34562032400171299,76183877); \ No newline at end of file From 252a029c988453229b53008e1902d2b276414ce3 Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 11 Dec 2024 11:41:42 +0100 Subject: [PATCH 26/43] feat: refs #7882 Osrm service --- modules/client/back/methods/client/updateAddress.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/client/back/methods/client/updateAddress.js b/modules/client/back/methods/client/updateAddress.js index 7342b28f1..797aefe11 100644 --- a/modules/client/back/methods/client/updateAddress.js +++ b/modules/client/back/methods/client/updateAddress.js @@ -72,6 +72,14 @@ module.exports = function(Self) { { arg: 'isLogifloraAllowed', type: 'boolean' + }, + { + arg: 'longitude', + type: 'number', + }, + { + arg: 'latitude', + type: 'number', } ], returns: { From 093fdb6cb328aadaf1e3b6d20d4392f64f0db483 Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 11 Dec 2024 11:50:16 +0100 Subject: [PATCH 27/43] fix: refs #6389 back --- modules/monitor/back/methods/sales-monitor/salesFilter.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 6c98f6cd7..95713f9fb 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -165,8 +165,6 @@ module.exports = Self => { case 'clientFk': param = `t.${param}`; return {[param]: value}; - case 'packing': - return {'i.itemPackingTypeFk': value}; } }); @@ -380,6 +378,7 @@ module.exports = Self => { } case 'agencyModeFk': case 'warehouseFk': + case 'packing': case 'countryFk': param = `f.${param}`; return {[param]: value}; From fbd6178c06826c62e08387beb319050cdd8cac51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 11 Dec 2024 13:16:39 +0100 Subject: [PATCH 28/43] fix: refs #8149 taxableBase invoiceIn --- db/routines/sage/procedures/invoiceIn_add.sql | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/db/routines/sage/procedures/invoiceIn_add.sql b/db/routines/sage/procedures/invoiceIn_add.sql index 1d411cfd0..76618ce50 100644 --- a/db/routines/sage/procedures/invoiceIn_add.sql +++ b/db/routines/sage/procedures/invoiceIn_add.sql @@ -25,7 +25,7 @@ BEGIN DECLARE vIsInformativeExportation BOOL DEFAULT FALSE; DECLARE vCursor CURSOR FOR - SELECT it.taxableBase, + SELECT SUM(it.taxableBase), CAST(SUM((( it.taxableBase / 100) * t.PorcentajeIva)) AS DECIMAL (10,2)), t.PorcentajeIva, it.transactionTypeSageFk, @@ -204,17 +204,17 @@ BEGIN FROM vn.invoiceInCorrection WHERE correctingFk = vInvoiceInFk; - IF vInvoiceInOriginalFk THEN + IF vInvoiceInOriginalFk THEN UPDATE movContaIVA mci JOIN vn.invoiceInRefund iir ON iir.invoiceInRefundFk = vInvoiceInFk JOIN (SELECT issued, - SUM(sub.taxableBase) taxableBase, + SUM(sub.taxableBase) taxableBase, SUM(ROUND((sub.taxableBase * sub.PorcentajeIva) / 100 , 2)) vat FROM(SELECT issued, - SUM(iit.taxableBase) taxableBase, + SUM(iit.taxableBase) taxableBase, ti.PorcentajeIva - FROM vn.invoiceIn i + FROM vn.invoiceIn i JOIN vn.invoiceInTax iit ON iit.invoiceInFk = i.id JOIN sage.TiposIva ti ON ti.CodigoIva = iit.taxTypeSageFk WHERE i.id = vInvoiceInOriginalFk @@ -222,7 +222,7 @@ BEGIN )invoiceInOriginal JOIN ClavesOperacion co ON co.Descripcion = 'Factura rectificativa' SET mci.TipoRectificativa = iir.refundCategoryFk, - mci.ClaseAbonoRectificativas = iir.refundType, + mci.ClaseAbonoRectificativas = iir.refundType, mci.FechaFacturaOriginal = invoiceInOriginal.issued, mci.FechaOperacion = invoiceInOriginal.issued, mci.BaseImponibleOriginal = invoiceInOriginal.taxableBase, @@ -232,4 +232,4 @@ BEGIN END IF; END$$ -DELIMITER ; \ No newline at end of file +DELIMITER ; From 3e92aca6ff0ad18c521e7b7fa31d9754fe15e51c Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 11 Dec 2024 14:32:08 +0100 Subject: [PATCH 29/43] feat: refs #249272 message updateQuantity --- modules/ticket/back/methods/sale/updateQuantity.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/sale/updateQuantity.js b/modules/ticket/back/methods/sale/updateQuantity.js index 36d75ffed..4de1bcbd6 100644 --- a/modules/ticket/back/methods/sale/updateQuantity.js +++ b/modules/ticket/back/methods/sale/updateQuantity.js @@ -82,7 +82,7 @@ module.exports = Self => { const message = $t('Changed sale quantity', { ticketId: sale.ticket().id, - changes: change, + changes: JSON.stringify(change), ticketUrl: `${url}ticket/${sale.ticket().id}/sale`, }); From 186ef5251832650c939f7437fd6d740857801370 Mon Sep 17 00:00:00 2001 From: guillermo Date: Wed, 11 Dec 2024 14:55:26 +0100 Subject: [PATCH 30/43] feat: refs #7882 Osrm service --- back/methods/osrm-config/optimize.js | 15 +++++++++++++-- loopback/locale/es.json | 6 +++--- .../route/back/methods/route/optimizePriority.js | 13 ++++++++----- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js index c03b70315..ae700d1cc 100644 --- a/back/methods/osrm-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -24,7 +24,7 @@ module.exports = Self => { } }); - Self.optimize = async(addressIds, firstAddressId) => { + Self.optimize = async(addressIds, firstAddressId, lastAddressId) => { const models = Self.app.models; try { const osrmConfig = await models.OsrmConfig.findOne(); @@ -53,13 +53,24 @@ module.exports = Self => { } } + if (lastAddressId) { + const firstAddress = await models.Address.findById(lastAddressId); + if (firstAddress.latitude && firstAddress.longitude) { + coords.push({ + addressId: firstAddress.id, + latitude: firstAddress.latitude.toFixed(6), + longitude: firstAddress.longitude.toFixed(6) + }); + } + } + if (!coords.length) throw new UserError('No address has coordinates'); const concatCoords = coords .map(coord => `${coord.longitude},${coord.latitude}`) .join(';'); const response = await axios.post(` - ${osrmConfig.url}/trip/v1/driving/${concatCoords}?source=first&roundtrip=true + ${osrmConfig.url}/trip/v1/driving/${concatCoords}?source=first&destination=last&roundtrip=true `); const tolerance = osrmConfig.tolerance; for (waypoint of response.data.waypoints) { diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 7e2253059..5f595e1ae 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -396,6 +396,6 @@ "Invalid options or too many coordinates": "Opciones invalidas o demasiadas coordenadas", "No address has coordinates": "Ninguna dirección tiene coordenadas", "An item type with the same code already exists": "Un tipo con el mismo código ya existe", - "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles" -} - + "Holidays to past days not available": "Las vacaciones a días pasados no están disponibles", + "All tickets have a route order": "Todos los tickets tienen orden de ruta" +} \ No newline at end of file diff --git a/modules/route/back/methods/route/optimizePriority.js b/modules/route/back/methods/route/optimizePriority.js index f84af50f8..c31913c66 100644 --- a/modules/route/back/methods/route/optimizePriority.js +++ b/modules/route/back/methods/route/optimizePriority.js @@ -71,13 +71,16 @@ module.exports = Self => { }, {}); const [mostFrequentZoneId] = Object.entries(zoneFrequency) .reduce((maxEntry, entry) => entry[1] > maxEntry[1] ? entry : maxEntry, [null, 0]); - const zone = await models.Zone.findById(mostFrequentZoneId, myOptions); - let firstAddress = zone.addressFk; - if (!firstAddress) firstAddress = (await models.ZoneConfig.findOne()).defaultAddressFk; + + // Obtenemos los address inicio y fin + const maxPosition = Math.max(...ticketAddress.map(g => g.priority)); + let firstAddress = (await models.Zone.findById(mostFrequentZoneId, myOptions))?.addressFk + || (await models.ZoneConfig.findOne())?.defaultAddressFk; + const lastAddress = firstAddress; + if (maxPosition) firstAddress = ticketAddress.find(g => g.priority === maxPosition)?.addressId; // Revisamos las coincidencias y actualizamos la prioridad en el array - const addressPositions = await models.OsrmConfig.optimize(addressIds, firstAddress, myOptions); - const maxPosition = Math.max(...ticketAddress.map(g => g.priority)); + const addressPositions = await models.OsrmConfig.optimize(addressIds, firstAddress, lastAddress, myOptions); await Promise.all(ticketAddress.map(async i => { const foundPosition = addressPositions.coords.find(item => item.addressId === i.addressId); if (foundPosition) i.priority = foundPosition.position + (maxPosition + 1); From aba2bf60828eec96019c90d728c259b687677fb3 Mon Sep 17 00:00:00 2001 From: carlossa Date: Thu, 12 Dec 2024 08:12:16 +0100 Subject: [PATCH 31/43] fix: refs #8251 add eng template --- .../incoterms-authorization/locale/en.yml | 6 +++ .../balance-compensation/locale/en.yml | 16 ++++++++ .../incoterms-authorization/locale/en.yml | 39 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 print/templates/email/incoterms-authorization/locale/en.yml create mode 100644 print/templates/reports/balance-compensation/locale/en.yml create mode 100644 print/templates/reports/incoterms-authorization/locale/en.yml diff --git a/print/templates/email/incoterms-authorization/locale/en.yml b/print/templates/email/incoterms-authorization/locale/en.yml new file mode 100644 index 000000000..7e1402575 --- /dev/null +++ b/print/templates/email/incoterms-authorization/locale/en.yml @@ -0,0 +1,6 @@ +subject: Incoterms Authorization +title: Incoterms Authorization +description: + dear: Dear customer + instructions: Please find attached the Incoterms authorization form, which you must complete and sign. + conclusion: Thank you for your attention! diff --git a/print/templates/reports/balance-compensation/locale/en.yml b/print/templates/reports/balance-compensation/locale/en.yml new file mode 100644 index 000000000..824127482 --- /dev/null +++ b/print/templates/reports/balance-compensation/locale/en.yml @@ -0,0 +1,16 @@ +reportName: balance-compensation +Place: Algemesí, on +Compensation: Compensation of debtor and creditor balances +In one hand: On one hand +CIF: with CIF +NIF: with NIF +Home: and address located at +In other hand: On the other hand +Sr: Mr./Ms. +Agree: Agree +Date: On the date of +Compensate: the balance of has been compensated +From client: from the client/supplier +Against the balance of: against the balance of +Reception: Please confirm receipt of this compensation at the email +Greetings: Best regards, diff --git a/print/templates/reports/incoterms-authorization/locale/en.yml b/print/templates/reports/incoterms-authorization/locale/en.yml new file mode 100644 index 000000000..eb6a8a513 --- /dev/null +++ b/print/templates/reports/incoterms-authorization/locale/en.yml @@ -0,0 +1,39 @@ +reportName: autorization-incoterms +description: '{socialName} a duly constituted and responsible company limited +and registered under corporate law {country} and here represented by {socialName}, with address in {address}, +CIF {fiscalID}. Hereinafter referred to as {name}.' +issued: 'In {0}, on {1} of {2} of {3}' +client: 'Customer {0}' +declaration: '{socialName} hereby declares that:' +declarations: + - 'All purchases made by {socialName} with {companyName} They are delivered according to the conditions defined in the Incoterm.' + - '{socialName} recognizes that it is important for {companyName} have +proof of intra-community delivery of the goods to {destinationCountry} to +be able to invoice with 0% VAT.' + - 'Therefore, by signing this agreement, {socialName} declares that all goods +purchased from {companyName} will be delivered to {destinationCountry}.' + - 'Besides, {socialName} shall, at the first request of {companyName}, +provide proof that all products purchased from {companyName} have +been delivered in {destinationCountry}.' + - 'In addition to the above, {companyName} will provide to {socialName} +a monthly summary that includes all bills (and corresponding deliveries). +{socialName} will sign and return the monthly summary to {companyName}, +S.L. within 5 days of receiving the summary.' +signer: + representative: Representative + representativeRole: Position of the representative + signed: Date of signature +manager: Manager +months: + - 'January' + - 'February' + - 'March' + - 'April' + - 'May' + - 'June' + - 'July' + - 'August' + - 'September' + - 'October' + - 'November' + - 'December' From 65e195d77d7bd51c451677e45d162fd5ef08d7b0 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 12 Dec 2024 08:23:02 +0100 Subject: [PATCH 32/43] feat: refs #7882 Requested changes --- back/methods/osrm-config/optimize.js | 12 ++++++------ modules/client/back/methods/client/updateAddress.js | 4 ++-- modules/route/back/methods/route/optimizePriority.js | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js index ae700d1cc..3a68c7ef4 100644 --- a/back/methods/osrm-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -32,12 +32,12 @@ module.exports = Self => { let coords = []; if (firstAddressId) { - const firstAddress = await models.Address.findById(firstAddressId); - if (firstAddress.latitude && firstAddress.longitude) { + const address = await models.Address.findById(firstAddressId); + if (address.latitude && address.longitude) { coords.push({ - addressId: firstAddress.id, - latitude: firstAddress.latitude.toFixed(6), - longitude: firstAddress.longitude.toFixed(6) + addressId: address.id, + latitude: address.latitude.toFixed(6), + longitude: address.longitude.toFixed(6) }); } } @@ -73,7 +73,7 @@ module.exports = Self => { ${osrmConfig.url}/trip/v1/driving/${concatCoords}?source=first&destination=last&roundtrip=true `); const tolerance = osrmConfig.tolerance; - for (waypoint of response.data.waypoints) { + for (const waypoint of response.data.waypoints) { const longitude = waypoint.location[0]; const latitude = waypoint.location[1]; diff --git a/modules/client/back/methods/client/updateAddress.js b/modules/client/back/methods/client/updateAddress.js index 797aefe11..efef83d6b 100644 --- a/modules/client/back/methods/client/updateAddress.js +++ b/modules/client/back/methods/client/updateAddress.js @@ -75,11 +75,11 @@ module.exports = function(Self) { }, { arg: 'longitude', - type: 'number', + type: 'any', }, { arg: 'latitude', - type: 'number', + type: 'any', } ], returns: { diff --git a/modules/route/back/methods/route/optimizePriority.js b/modules/route/back/methods/route/optimizePriority.js index c31913c66..f0ac76d8a 100644 --- a/modules/route/back/methods/route/optimizePriority.js +++ b/modules/route/back/methods/route/optimizePriority.js @@ -28,17 +28,17 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const ticketsIds = await models.Ticket.find({ + const tickets = await models.Ticket.find({ where: {routeFk: id} }, myOptions); let ticketAddress = []; - for (const ticketId of ticketsIds) { + for (const ticket of tickets) { ticketAddress.push({ - ticketId: ticketId.id, - addressId: ticketId.addressFk, - zoneId: ticketId.zoneFk, - priority: ticketId.priority + ticketId: ticket.id, + addressId: ticket.addressFk, + zoneId: ticket.zoneFk, + priority: ticket.priority }); } From c8f26bbbab67cc82117baa7846a4bf5c2ef1417d Mon Sep 17 00:00:00 2001 From: Jtubau Date: Thu, 12 Dec 2024 08:42:10 +0100 Subject: [PATCH 33/43] refactor: refs #8266 changed expedition item name --- modules/ticket/back/methods/expedition/filter.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/expedition/filter.js b/modules/ticket/back/methods/expedition/filter.js index 43be14349..bd2012668 100644 --- a/modules/ticket/back/methods/expedition/filter.js +++ b/modules/ticket/back/methods/expedition/filter.js @@ -49,7 +49,8 @@ module.exports = Self => { es.workerFk expeditionScanWorkerFk, su.name scannerUserName, es.scanned, - est.description state + est.description state, + de.longName FROM vn.expedition e LEFT JOIN vn.expeditionStateType est ON est.id = e.stateTypeFk INNER JOIN vn.item i1 ON i1.id = e.freightItemFk @@ -59,6 +60,7 @@ module.exports = Self => { LEFT JOIN account.user u ON u.id = e.workerFk LEFT JOIN vn.expeditionScan es ON es.expeditionFk = e.id LEFT JOIN account.user su ON su.id = es.workerFk + LEFT JOIN dipole.expedition_PrintOut de ON de.expeditionFk = e.id ) e `); stmt.merge(conn.makeWhere(filter.where)); From b5d4d31abbefcc2fa0ef44ab57d87cc374c31cf5 Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 12 Dec 2024 09:25:51 +0100 Subject: [PATCH 34/43] fix: refs #7301 update ACL insertion to use INSERT IGNORE and refine property value --- db/versions/11352-blackErica/00-firstScript.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/versions/11352-blackErica/00-firstScript.sql b/db/versions/11352-blackErica/00-firstScript.sql index 4e17c94c5..659f50161 100644 --- a/db/versions/11352-blackErica/00-firstScript.sql +++ b/db/versions/11352-blackErica/00-firstScript.sql @@ -1,3 +1,3 @@ -- Place your SQL code here -INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId, editorFk) - VALUES('InventoryConfig', '*', 'READ', 'ALLOW', 'ROLE', 'buyer', 100); \ No newline at end of file +INSERT IGNORE INTO salix.ACL (model, property, accessType, permission, principalType, principalId) + VALUES('InventoryConfig', 'find', 'READ', 'ALLOW', 'ROLE', 'buyer'); \ No newline at end of file From 05ba85219b5f91a2351eb4256c11f3211bad0838 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 12 Dec 2024 14:35:58 +0100 Subject: [PATCH 35/43] feat: refs #7882 Osrm service --- back/methods/osrm-config/optimize.js | 8 +------- db/dump/fixtures.before.sql | 3 +++ modules/route/back/methods/route/optimizePriority.js | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js index 3a68c7ef4..5d2ade935 100644 --- a/back/methods/osrm-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -91,13 +91,7 @@ module.exports = Self => { return posA - posB; }); - const coordsString = coords - .map(item => `point=${item.latitude},${item.longitude}`) - .join('&'); - return { - coords, - view: `https://graphhopper.com/maps/?${coordsString}&profile=small_truck` - }; + return coords; } catch (err) { switch (err.response?.data?.code) { case 'NoTrips': diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 663705ff5..84e007695 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -4035,3 +4035,6 @@ INSERT IGNORE INTO vn.saySimpleConfig (url, defaultChannel) INSERT INTO vn.workerIrpf (workerFk,spouseNif, geographicMobilityDate) VALUES (1106,'26493101E','2019-09-20'); + +INSERT INTO vn.osrmConfig (id,url,tolerance) + VALUES (1,'https://router.project-osrm.org', 0.002); diff --git a/modules/route/back/methods/route/optimizePriority.js b/modules/route/back/methods/route/optimizePriority.js index f0ac76d8a..56db4ffb5 100644 --- a/modules/route/back/methods/route/optimizePriority.js +++ b/modules/route/back/methods/route/optimizePriority.js @@ -82,7 +82,7 @@ module.exports = Self => { // Revisamos las coincidencias y actualizamos la prioridad en el array const addressPositions = await models.OsrmConfig.optimize(addressIds, firstAddress, lastAddress, myOptions); await Promise.all(ticketAddress.map(async i => { - const foundPosition = addressPositions.coords.find(item => item.addressId === i.addressId); + const foundPosition = addressPositions.find(item => item.addressId === i.addressId); if (foundPosition) i.priority = foundPosition.position + (maxPosition + 1); })); From 00b5333ab7edbb02d04df8ca053217462e79147b Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 13 Dec 2024 08:07:13 +0100 Subject: [PATCH 36/43] feat: refs #7882 Added tests --- .../osrm-config/specs/optimize.spec.js | 33 +++++++++++++++++ db/dump/fixtures.before.sql | 10 +++--- .../route/specs/optimizePriority.spec.js | 36 +++++++++++++++++++ 3 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 back/methods/osrm-config/specs/optimize.spec.js create mode 100644 modules/route/back/methods/route/specs/optimizePriority.spec.js diff --git a/back/methods/osrm-config/specs/optimize.spec.js b/back/methods/osrm-config/specs/optimize.spec.js new file mode 100644 index 000000000..9f2adccc6 --- /dev/null +++ b/back/methods/osrm-config/specs/optimize.spec.js @@ -0,0 +1,33 @@ +const models = require('vn-loopback/server/server').models; + +describe('osrmConfig optimize()', function() { + it('should send coords, receive OSRM response, and return a correctly ordered result', async function() { + const result = await models.OsrmConfig.optimize([4, 3], 1, 2); + + // Verifications + expect(Array.isArray(result)).toBe(true); + expect(result.length).toBe(4); + + // Check the order + expect(result[0].addressId).toBe(1); + expect(result[1].addressId).toBe(4); + expect(result[2].addressId).toBe(3); + expect(result[3].addressId).toBe(2); + + // Check the coordinates format + expect(result[0].latitude).toBe('10.111111'); + expect(result[0].longitude).toBe('-74.111111'); + }); + + it('should throw an error if no addresses are provided', async function() { + let error; + try { + await models.OsrmConfig.optimize([], null); + } catch (e) { + error = e; + } + + expect(error).toBeDefined(); + expect(error.message).toBe('No address has coordinates'); + }); +}); diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index d3823a5b7..c108bc0f6 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -428,10 +428,10 @@ INSERT INTO `vn`.`clientConfig`(`id`, `riskTolerance`, `maxCreditRows`, `maxPric 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, NULL, NULL, 0, 1), - (2, 'Petter Parker', '20 Ingram Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 1), - (3, 'Clark Kent', '344 Clinton Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 1), - (4, 'Tony Stark', '10880 Malibu Point', 'Gotham', 46460, 1, 1111111111, 222222222, 1 , 1104, 2, NULL, NULL, 0, 1), + (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), @@ -462,7 +462,7 @@ INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `pr (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, 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), diff --git a/modules/route/back/methods/route/specs/optimizePriority.spec.js b/modules/route/back/methods/route/specs/optimizePriority.spec.js new file mode 100644 index 000000000..c1c2dc45e --- /dev/null +++ b/modules/route/back/methods/route/specs/optimizePriority.spec.js @@ -0,0 +1,36 @@ +const models = require('vn-loopback/server/server').models; +const routeId = 1; + +describe('route optimizePriority())', function() { + it('should execute without throwing errors', async function() { + const tx = await models.Route.beginTransaction({}); + let error; + try { + const options = {transaction: tx}; + await models.Ticket.updateAll( + {routeFk: routeId}, + {priority: null}, + options + ); + await models.Route.optimizePriority(routeId, options); + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error).toBeUndefined(); + }); + + it('should execute with error', async function() { + let error; + try { + await models.Route.optimizePriority(routeId); + } catch (e) { + error = e; + } + + expect(error).toBeDefined(); + expect(error.message).toBe('All tickets have a route order'); + }); +}); From 452ec3d7319491df73c9416ea671341a80f2a695 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 13 Dec 2024 08:29:14 +0100 Subject: [PATCH 37/43] fix: refs #247552 ticket 247552 claimRatio_add --- db/routines/vn/procedures/claimRatio_add.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/routines/vn/procedures/claimRatio_add.sql b/db/routines/vn/procedures/claimRatio_add.sql index 8c3213644..5e2e66a8e 100644 --- a/db/routines/vn/procedures/claimRatio_add.sql +++ b/db/routines/vn/procedures/claimRatio_add.sql @@ -46,7 +46,7 @@ BEGIN JOIN claimDestination cd ON cd.id = ce.claimDestinationFk JOIN claim c ON c.id = ce.claimFk JOIN claimState cs ON cs.id = c.claimStateFk - WHERE cd.description NOT IN ('Bueno', 'Corregido') + WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim') AND NOT ce.isGreuge AND cs.code = 'resolved'; @@ -71,7 +71,7 @@ BEGIN JOIN claimDestination cd ON cd.id = ce.claimDestinationFk JOIN claim c ON c.id = ce.claimFk JOIN claimState cs ON cs.id = c.claimStateFk - WHERE cd.description NOT IN ('Bueno', 'Corregido') + WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim') AND NOT ce.isGreuge AND cs.code = 'resolved' AND c.isChargedToMana; @@ -82,7 +82,7 @@ BEGIN JOIN claim c ON c.id = ce.claimFk JOIN claimState cs ON cs.id = c.claimStateFk SET ce.isGreuge = TRUE - WHERE cd.description NOT IN ('Bueno', 'Corregido') + WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim') AND NOT ce.isGreuge AND cs.code = 'resolved'; @@ -161,7 +161,7 @@ BEGIN JOIN claimDestination cd ON cd.id = ce.claimDestinationFk JOIN claim c ON c.id = ce.claimFk JOIN claimState cs ON cs.id = c.claimStateFk - WHERE cd.description NOT IN ('Bueno', 'Corregido') + WHERE cd.code NOT IN ('good', 'corrected', 'supplierClaim') AND cs.code = 'resolved' AND c.ticketCreated >= util.VN_CURDATE() - INTERVAL 1 YEAR GROUP BY c.clientFk From ec2b6dd0c2fbf3605cd594e7a00375ff43cdf5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 13 Dec 2024 14:55:03 +0000 Subject: [PATCH 38/43] Actualizar db/versions/11327-maroonOak/00-firstScript.sql --- db/versions/11327-maroonOak/00-firstScript.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql index 250a2fc8b..35ec989e7 100644 --- a/db/versions/11327-maroonOak/00-firstScript.sql +++ b/db/versions/11327-maroonOak/00-firstScript.sql @@ -13,9 +13,6 @@ CREATE TABLE IF NOT EXISTS `vn`.`simSupplier` ( ALTER TABLE `vn`.`deviceProductionUser` MODIFY `simSerialNumber` VARCHAR(25); -ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_simSupplier_FK - FOREIGN KEY (simSerialNumber) REFERENCES vn.simSupplier(sim); - INSERT IGNORE INTO `vn`.`simSupplier` (`line`, `ext`, `pin`, `sim`, `puk`) VALUES (621188151, '2209', '1486', 3456985220092508,14213470), @@ -174,4 +171,7 @@ VALUES (673465843, '2698', '4773', 34562032400171364,78387158), (673465842, '2697', '3729', 34562032400171315,94201789), (673465280, '2691', '0503', 34562032400171307,12298533), -(673465279, '2690', '8239', 34562032400171299,76183877); \ No newline at end of file +(673465279, '2690', '8239', 34562032400171299,76183877); + +ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_simSupplier_FK + FOREIGN KEY (simSerialNumber) REFERENCES vn.simSupplier(sim) ON DELETE CASCADE ON UPDATE CASCADE; \ No newline at end of file From 233f45a07a1e45493dd8a360d83758e06bcbc2fb Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 16 Dec 2024 07:15:47 +0100 Subject: [PATCH 39/43] feat: refs #7882 Reequested changes --- back/methods/osrm-config/optimize.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/back/methods/osrm-config/optimize.js b/back/methods/osrm-config/optimize.js index 5d2ade935..e0412c74c 100644 --- a/back/methods/osrm-config/optimize.js +++ b/back/methods/osrm-config/optimize.js @@ -13,6 +13,10 @@ module.exports = Self => { arg: 'firstAddressId', type: 'number', required: false + }, { + arg: 'lastAddressId', + type: 'number', + required: false }], returns: { type: 'object', From 57c3cc854622b3f64c721fa78b049d19e8549a75 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 16 Dec 2024 09:01:10 +0100 Subject: [PATCH 40/43] feat: refs #8174 Created table sim --- .../11327-maroonOak/00-firstScript.sql | 354 +++++++++--------- 1 file changed, 180 insertions(+), 174 deletions(-) diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql index 35ec989e7..7c9d8e6e8 100644 --- a/db/versions/11327-maroonOak/00-firstScript.sql +++ b/db/versions/11327-maroonOak/00-firstScript.sql @@ -1,177 +1,183 @@ -CREATE TABLE IF NOT EXISTS `vn`.`simSupplier` ( - `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `line` INT(9) unsigned NOT NULL, - `ext` CHAR(4) NOT NULL CHECK (ext REGEXP '^[0-9]{4}$'), - `pin` CHAR(4) NOT NULL CHECK (pin REGEXP '^[0-9]{4}$'), - `sim` VARCHAR(25), - `puk` INT(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `sim_UNIQUE` (`sim`) -) ENGINE=InnoDB AUTO_INCREMENT=1 - DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +CREATE TABLE IF NOT EXISTS `vn`.`sim` ( + `id` BIGINT UNSIGNED, + `line` VARCHAR(15) NOT NULL CHECK (`line` REGEXP '^[0-9]+$'), + `ext` INT(4) NOT NULL, + `pin` INT(4) NOT NULL, + `puk` INT(15) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; -ALTER TABLE `vn`.`deviceProductionUser` -MODIFY `simSerialNumber` VARCHAR(25); +ALTER TABLE vn.deviceProductionUser CHANGE simSerialNumber simFk BIGINT unsigned DEFAULT NULL NULL; +ALTER TABLE vn.deviceProductionUser MODIFY COLUMN simFk BIGINT unsigned DEFAULT NULL NULL; -INSERT IGNORE INTO `vn`.`simSupplier` (`line`, `ext`, `pin`, `sim`, `puk`) -VALUES -(621188151, '2209', '1486', 3456985220092508,14213470), -(621188152, '2210', '8765', 3456985220092509,99473093), -(621188153, '2211', '3064', 3456985220092510,52967210), -(621188759, '2081', '3700', 3456985220123637,56600999), -(621188760, '2082', '3259', 345698522023638,87492404), -(621188761, '2083', '2790', 3456985220123639,94009456), -(621188762, '2084', '2480', 3456985220123644,1484999), -(621188763, '2085', '6876', 3456985220123641,36577064), -(621188766, '2086', '7775', 3456985220123642,80761698), -(621188769, '2088', '4027', 3456985220123643,37921712), -(621188771, '2089', '8797', 3456985220123640,63092540), -(621188772, '2090', '8404', 3456985220123645,21014997), -(621188773, '2091', '5481', 3456985220123646,16317277), -(621188774, '2092', '9632', 3456985220123647,22235994), -(621188775, '2093', '4654', 3456985220123648,28506486), -(621188838, '2094', '1392', 3456985220123649,29498627), -(621188839, '2095', '7774', 3456985220123650,46263490), -(621188840, '2096', '7304', 3456985220123658,8212044), -(621188841, '2097', '5569', 3456985220123652,81597658), -(621188842, '2098', '4944', 3456985220123653,24961501), -(621188843, '2099', '5142', 3456985220123654,17035634), -(621188844, '2111', '7245', 3456985220123655,90231951), -(621188846, '2110', '6590', 3456985220123656,72201537), -(667680207, '2564', '4042', 34569832200759166,48401979), -(667680315, '2565', '7143', 34569832200759372,32143252), -(667680318, '2566', '6342', 34569832200759364,39597112), -(667680413, '2567', '5580', 34569832200759356,32786992), -(667680463, '2568', '0171', 34569832200759349,34240853), -(667688217, '2569', '2500', 34569832200759331,5687589), -(633603945, '2212', '7129', 34569832200759323,51554019), -(622130186, '2213', '4826', 34569832200759307,19623551), -(633973424, '2214', '8535', 34569832200759299,94619307), -(633703828, '2215', '8628', 34569832200759281,22468012), -(622025110, '2216', '2399', 34569832200759273,34602918), -(622924867, '2217', '5665', 34569832200759265,26920216), -(722409630, '2218', '5211', 34569832200759240,93750137), -(623590529, '2219', '0493', 34569832200759208,47077088), -(633243462, '2220', '6902', 34569832200759174,6421962), -(633047286, '2221', '5592', 34569832200759182,32069439), -(744716801, '2112', '9184', 34569832200759190,57049814), -(655995021, '2131', '8896', 34569852202049093,19497356), -(685522718, '2132', '1955', 34569852202049101,28519879), -(674587213, '2994', '2006', 34569332200223743,62360135), -(674587227, '2993', '9271', 34569332200223750,81628192), -(674587229, '2993', '0900', 34569332200223768,91119071), -(674587231, '2992', '5007', 34569332200223776,45826232), -(674587234, '2991', '1378', 34569332200223784,91245744), -(674587240, '2990', '0905', 34569332200223792,13083224), -(674587245, '2989', '9059', 34569332200223800,15291807), -(674587250, '2988', '8188', 34569332200223818,83017918), -(674587254, '2987', '2962', 34569332200223826,92809271), -(674587256, '2986', '0358', 34569332200223834,81067040), -(674592713, '2570', '2537', 34569332200230672,82325850), -(697832478, '2579', '0936', 34568732200494825,49658372), -(697832176, '2571', '5944', 34568732200494742,19039461), -(697832477, '2572', '5138', 34568732200494759,25712504), -(697832178, '2573', '4597', 34568732200494767,66241760), -(697832182, '2574', '9241', 34568732200494775,07342562), -(697832196, '2575', '2995', 34568732200494783,53929026), -(697832214, '2576', '7434', 34568732200494791,49698432), -(697832230, '2577', '7004', 34568732200494809,21578612), -(697832235, '2578', '9674', 34568732200494817,93090700), -(673420375, '2599', '5430', 34562052300117259,35911412), -(673420367, '2598', '8402', 34562052300117242,924654), -(673420361, '2597', '5125', 34562052300117234,12027970), -(673420355, '2596', '5069', 34562052300117226,34978149), -(673420348, '2595', '8911', 34562052300117218,4228121), -(673420346, '2594', '2461', 34562052300117200,67670772), -(673420345, '2593', '2226', 34562052300117192,90586404), -(673420306, '2592', '3355', 34562052300117184,97850017), -(673420257, '2591', '9395', 34562052300117176,50713786), -(673420231, '2590', '1378', 34562052300117168,50151763), -(673420223, '2589', '9580', 34562052300117150,99534550), -(673420216, '2588', '4955', 34562052300117143,317554), -(673420203, '2587', '6742', 34562052300117135,69321531), -(673420201, '2586', '1659', 34562052300117127,54720480), -(673420199, '2585', '7823', 34562052300117119,22923796), -(673420198, '2584', '1787', 34562052300117101,54414630), -(673420168, '2583', '6334', 34562052300117093,50694894), -(673420147, '2582', '8951', 34562052300117085,1402535), -(673420125, '2581', '3068', 34562052300117077,86216200), -(673420124, '2580', '9517', 34562052300117069,42504099), -(600294609, '2715', '7474', 34569832304894588,55923317), -(600084713, '2703', '8342', 34569832304894570,8392636), -(600084732, '2704', '1625', 34569832304894513,75477452), -(600084850, '2705', '9896', 34569832304894653,28589813), -(600084951, '2706', '5520', 34569832304894661,75353012), -(600084978, '2707', '2698', 34569832304894679,9005523), -(600085403, '2708', '0837', 34569832304894646,77051152), -(600085513, '2709', '3106', 34569832304894687,41571002), -(600293916, '2712', '8990', 34569832304894620,95188676), -(600294160, '2714', '6376', 34569832304894703,79879896), -(671919529, '2975', '9184', 34569832304806236,7535392), -(671919942, '2981', '0328', 34569832304806269,31052894), -(671919530, '2976', '0344', 34569832304806251,89860304), -(671919533, '2977', '0668', 34569832304806244,42921771), -(671919535, '2978', '0105', 34569832304806277,31009417), -(671919537, '2979', '0881', 34569832304806285,33479769), -(671919540, '2980', '9874', 34569832304806293,14103929), -(671919525, '2972', '2089', 34569832304806301,45903729), -(671919527, '2973', '8206', 34569832304806368,1586035), -(671919528, '2974', '2532', 34569832304806327,62310124), -(673668717, '2836', '7973', 34562032301044223,15635496), -(673668734, '2837', '4457', 34562032301044231,18313118), -(673668738, '2824', '2911', 34562032301044249,30875583), -(673668745, '2838', '7253', 34562032301044256,62754222), -(673668796, '2839', '0068', 34562032301044264,15556829), -(673668803, '2840', '2386', 34562032301044272,17572287), -(673669591, '2850', '3833', 34562032301044280,34828896), -(673668808, '2841', '3584', 34562032301044298,16234497), -(673670102, '2851', '3554', 34562032301044306,23652625), -(673670131, '2852', '4412', 34562032301044314,88611709), -(673670135, '2827', '6058', 34562032301044322,53918579), -(673670201, '2828', '8066', 34562032301044330,92369343), -(673670225, '2829', '4592', 34562032301044348,24126635), -(673670236, '2830', '2974', 34562032301044355,88608465), -(673671485, '2849', '0349', 34562032301044363,44944874), -(673461977, '2871', '1728', 34562032400157090,46975780), -(673461975, '2870', '4734', 34562032400157082,69628432), -(673461972, '2867', '6276', 34562032400157058,53338365), -(673461979, '2872', '6043', 34562032400157108,36525197), -(673461958, '2859', '3164', 34562032400156977,58947831), -(673461957, '2857', '8685', 34562032400156969,15826386), -(673461944, '2853', '1073', 34562032400156910,20452195), -(673461974, '2869', '7121', 34562032400157074,32044645), -(673461973, '2868', '8022', 34562032400157066,29282044), -(673461971, '2866', '3089', 34562032400157041,66149978), -(673461969, '2865', '7555', 34562032400157033,78391293), -(673461960, '2860', '5203', 34562032400156985,37138232), -(673461952, '2855', '6915', 34562032400156936,62724661), -(673461949, '2854', '8706', 34562032400156928,5594345), -(673461966, '2863', '2496', 34562032400157017,93450666), -(673461968, '2864', '3703', 34562032400157025,23208841), -(673461963, '2862', '9364', 34562032400157009,29712130), -(673462719, '2873', '9387', 34562032400156951,50434348), -(673461962, '2861', '8441', 34562032400156993,39686909), -(673461956, '2826', '5392', 34562032400156944,5496107), -(673465284, '2694', '1523', 34562032400171349,14554994), -(673465282, '2692', '4645', 34562032400171323,24871187), -(673465283, '2693', '5253', 34562032400171331,28303238), -(673465841, '2696', '0849', 34562032400171257,21673222), -(673465258, '2679', '4140', 34562032400171174,39793881), -(673465263, '2680', '6922', 34562032400171182,12253261), -(673465265, '2681', '9112', 34562032400171190,93894366), -(673465267, '2682', '3259', 34562032400171208,2342189), -(673465268, '2683', '8540', 34562032400171216,63886925), -(673465285, '2695', '4167', 34562032400171356,79227618), -(673465270, '2684', '4292', 34562032400171224,19216349), -(673465272, '2685', '4007', 34562032400171232,14396903), -(673465273, '2686', '6894', 34562032400171240,13569394), -(673465274, '2687', '5268', 34562032400171265,59453667), -(673465275, '2688', '0232', 34562032400171273,62324713), -(673465276, '2689', '2720', 34562032400171281,65977200), -(673465843, '2698', '4773', 34562032400171364,78387158), -(673465842, '2697', '3729', 34562032400171315,94201789), -(673465280, '2691', '0503', 34562032400171307,12298533), -(673465279, '2690', '8239', 34562032400171299,76183877); +INSERT IGNORE INTO `vn`.`sim` (`line`, `ext`, `pin`, `id`, `puk`) VALUES + ('621188151', 2209, 1486, 3456985220092508,14213470), + ('621188152', 2210, 8765, 3456985220092509,99473093), + ('621188153', 2211, 3064, 3456985220092510,52967210), + ('621188759', 2081, 3700, 3456985220123637,56600999), + ('621188760', 2082, 3259, 345698522023638,87492404), + ('621188761', 2083, 2790, 3456985220123639,94009456), + ('621188762', 2084, 2480, 3456985220123644,1484999), + ('621188763', 2085, 6876, 3456985220123641,36577064), + ('621188766', 2086, 7775, 3456985220123642,80761698), + ('621188769', 2088, 4027, 3456985220123643,37921712), + ('621188771', 2089, 8797, 3456985220123640,63092540), + ('621188772', 2090, 8404, 3456985220123645,21014997), + ('621188773', 2091, 5481, 3456985220123646,16317277), + ('621188774', 2092, 9632, 3456985220123647,22235994), + ('621188775', 2093, 4654, 3456985220123648,28506486), + ('621188838', 2094, 1392, 3456985220123649,29498627), + ('621188839', 2095, 7774, 3456985220123650,46263490), + ('621188840', 2096, 7304, 3456985220123658,8212044), + ('621188841', 2097, 5569, 3456985220123652,81597658), + ('621188842', 2098, 4944, 3456985220123653,24961501), + ('621188843', 2099, 5142, 3456985220123654,17035634), + ('621188844', 2111, 7245, 3456985220123655,90231951), + ('621188846', 2110, 6590, 3456985220123656,72201537), + ('667680207', 2564, 4042, 34569832200759166,48401979), + ('667680315', 2565, 7143, 34569832200759372,32143252), + ('667680318', 2566, 6342, 34569832200759364,39597112), + ('667680413', 2567, 5580, 34569832200759356,32786992), + ('667680463', 2568, 0171, 34569832200759349,34240853), + ('667688217', 2569, 2500, 34569832200759331,5687589), + ('633603945', 2212, 7129, 34569832200759323,51554019), + ('622130186', 2213, 4826, 34569832200759307,19623551), + ('633973424', 2214, 8535, 34569832200759299,94619307), + ('633703828', 2215, 8628, 34569832200759281,22468012), + ('622025110', 2216, 2399, 34569832200759273,34602918), + ('622924867', 2217, 5665, 34569832200759265,26920216), + ('722409630', 2218, 5211, 34569832200759240,93750137), + ('623590529', 2219, 0493, 34569832200759208,47077088), + ('633243462', 2220, 6902, 34569832200759174,6421962), + ('633047286', 2221, 5592, 34569832200759182,32069439), + ('744716801', 2112, 9184, 34569832200759190,57049814), + ('655995021', 2131, 8896, 34569852202049093,19497356), + ('685522718', 2132, 1955, 34569852202049101,28519879), + ('674587213', 2994, 2006, 34569332200223743,62360135), + ('674587227', 2993, 9271, 34569332200223750,81628192), + ('674587229', 2993, 0900, 34569332200223768,91119071), + ('674587231', 2992, 5007, 34569332200223776,45826232), + ('674587234', 2991, 1378, 34569332200223784,91245744), + ('674587240', 2990, 0905, 34569332200223792,13083224), + ('674587245', 2989, 9059, 34569332200223800,15291807), + ('674587250', 2988, 8188, 34569332200223818,83017918), + ('674587254', 2987, 2962, 34569332200223826,92809271), + ('674587256', 2986, 0358, 34569332200223834,81067040), + ('674592713', 2570, 2537, 34569332200230672,82325850), + ('697832478', 2579, 0936, 34568732200494825,49658372), + ('697832176', 2571, 5944, 34568732200494742,19039461), + ('697832477', 2572, 5138, 34568732200494759,25712504), + ('697832178', 2573, 4597, 34568732200494767,66241760), + ('697832182', 2574, 9241, 34568732200494775,07342562), + ('697832196', 2575, 2995, 34568732200494783,53929026), + ('697832214', 2576, 7434, 34568732200494791,49698432), + ('697832230', 2577, 7004, 34568732200494809,21578612), + ('697832235', 2578, 9674, 34568732200494817,93090700), + ('673420375', 2599, 5430, 34562052300117259,35911412), + ('673420367', 2598, 8402, 34562052300117242,924654), + ('673420361', 2597, 5125, 34562052300117234,12027970), + ('673420355', 2596, 5069, 34562052300117226,34978149), + ('673420348', 2595, 8911, 34562052300117218,4228121), + ('673420346', 2594, 2461, 34562052300117200,67670772), + ('673420345', 2593, 2226, 34562052300117192,90586404), + ('673420306', 2592, 3355, 34562052300117184,97850017), + ('673420257', 2591, 9395, 34562052300117176,50713786), + ('673420231', 2590, 1378, 34562052300117168,50151763), + ('673420223', 2589, 9580, 34562052300117150,99534550), + ('673420216', 2588, 4955, 34562052300117143,317554), + ('673420203', 2587, 6742, 34562052300117135,69321531), + ('673420201', 2586, 1659, 34562052300117127,54720480), + ('673420199', 2585, 7823, 34562052300117119,22923796), + ('673420198', 2584, 1787, 34562052300117101,54414630), + ('673420168', 2583, 6334, 34562052300117093,50694894), + ('673420147', 2582, 8951, 34562052300117085,1402535), + ('673420125', 2581, 3068, 34562052300117077,86216200), + ('673420124', 2580, 9517, 34562052300117069,42504099), + ('600294609', 2715, 7474, 34569832304894588,55923317), + ('600084713', 2703, 8342, 34569832304894570,8392636), + ('600084732', 2704, 1625, 34569832304894513,75477452), + ('600084850', 2705, 9896, 34569832304894653,28589813), + ('600084951', 2706, 5520, 34569832304894661,75353012), + ('600084978', 2707, 2698, 34569832304894679,9005523), + ('600085403', 2708, 0837, 34569832304894646,77051152), + ('600085513', 2709, 3106, 34569832304894687,41571002), + ('600293916', 2712, 8990, 34569832304894620,95188676), + ('600294160', 2714, 6376, 34569832304894703,79879896), + ('671919529', 2975, 9184, 34569832304806236,7535392), + ('671919942', 2981, 0328, 34569832304806269,31052894), + ('671919530', 2976, 0344, 34569832304806251,89860304), + ('671919533', 2977, 0668, 34569832304806244,42921771), + ('671919535', 2978, 0105, 34569832304806277,31009417), + ('671919537', 2979, 0881, 34569832304806285,33479769), + ('671919540', 2980, 9874, 34569832304806293,14103929), + ('671919525', 2972, 2089, 34569832304806301,45903729), + ('671919527', 2973, 8206, 34569832304806368,1586035), + ('671919528', 2974, 2532, 34569832304806327,62310124), + ('673668717', 2836, 7973, 34562032301044223,15635496), + ('673668734', 2837, 4457, 34562032301044231,18313118), + ('673668738', 2824, 2911, 34562032301044249,30875583), + ('673668745', 2838, 7253, 34562032301044256,62754222), + ('673668796', 2839, 0068, 34562032301044264,15556829), + ('673668803', 2840, 2386, 34562032301044272,17572287), + ('673669591', 2850, 3833, 34562032301044280,34828896), + ('673668808', 2841, 3584, 34562032301044298,16234497), + ('673670102', 2851, 3554, 34562032301044306,23652625), + ('673670131', 2852, 4412, 34562032301044314,88611709), + ('673670135', 2827, 6058, 34562032301044322,53918579), + ('673670201', 2828, 8066, 34562032301044330,92369343), + ('673670225', 2829, 4592, 34562032301044348,24126635), + ('673670236', 2830, 2974, 34562032301044355,88608465), + ('673671485', 2849, 0349, 34562032301044363,44944874), + ('673461977', 2871, 1728, 34562032400157090,46975780), + ('673461975', 2870, 4734, 34562032400157082,69628432), + ('673461972', 2867, 6276, 34562032400157058,53338365), + ('673461979', 2872, 6043, 34562032400157108,36525197), + ('673461958', 2859, 3164, 34562032400156977,58947831), + ('673461957', 2857, 8685, 34562032400156969,15826386), + ('673461944', 2853, 1073, 34562032400156910,20452195), + ('673461974', 2869, 7121, 34562032400157074,32044645), + ('673461973', 2868, 8022, 34562032400157066,29282044), + ('673461971', 2866, 3089, 34562032400157041,66149978), + ('673461969', 2865, 7555, 34562032400157033,78391293), + ('673461960', 2860, 5203, 34562032400156985,37138232), + ('673461952', 2855, 6915, 34562032400156936,62724661), + ('673461949', 2854, 8706, 34562032400156928,5594345), + ('673461966', 2863, 2496, 34562032400157017,93450666), + ('673461968', 2864, 3703, 34562032400157025,23208841), + ('673461963', 2862, 9364, 34562032400157009,29712130), + ('673462719', 2873, 9387, 34562032400156951,50434348), + ('673461962', 2861, 8441, 34562032400156993,39686909), + ('673461956', 2826, 5392, 34562032400156944,5496107), + ('673465284', 2694, 1523, 34562032400171349,14554994), + ('673465282', 2692, 4645, 34562032400171323,24871187), + ('673465283', 2693, 5253, 34562032400171331,28303238), + ('673465841', 2696, 0849, 34562032400171257,21673222), + ('673465258', 2679, 4140, 34562032400171174,39793881), + ('673465263', 2680, 6922, 34562032400171182,12253261), + ('673465265', 2681, 9112, 34562032400171190,93894366), + ('673465267', 2682, 3259, 34562032400171208,2342189), + ('673465268', 2683, 8540, 34562032400171216,63886925), + ('673465285', 2695, 4167, 34562032400171356,79227618), + ('673465270', 2684, 4292, 34562032400171224,19216349), + ('673465272', 2685, 4007, 34562032400171232,14396903), + ('673465273', 2686, 6894, 34562032400171240,13569394), + ('673465274', 2687, 5268, 34562032400171265,59453667), + ('673465275', 2688, 0232, 34562032400171273,62324713), + ('673465276', 2689, 2720, 34562032400171281,65977200), + ('673465843', 2698, 4773, 34562032400171364,78387158), + ('673465842', 2697, 3729, 34562032400171315,94201789), + ('673465280', 2691, 0503, 34562032400171307,12298533), + ('673465279', 2690, 8239, 34562032400171299,76183877); -ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_simSupplier_FK - FOREIGN KEY (simSerialNumber) REFERENCES vn.simSupplier(sim) ON DELETE CASCADE ON UPDATE CASCADE; \ No newline at end of file +UPDATE vn.deviceProductionUser + SET simFk = NULL + WHERE id IN ( + SELECT dpu.id + FROM vn.deviceProductionUser dpu + LEFT JOIN vn.sim s ON s.id = dpu.simFk + WHERE s.id IS NULL + AND dpu.simFk IS NOT NULL + ); + +ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_sim_FK + FOREIGN KEY (simFk) REFERENCES vn.sim(id) ON DELETE RESTRICT ON UPDATE CASCADE; From d42ff075472a29c6c65f1c2462a3d1ecddae5e30 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 16 Dec 2024 09:20:27 +0100 Subject: [PATCH 41/43] feat: refs #8174 Changed datatype incompatibility access --- .../11327-maroonOak/00-firstScript.sql | 332 +++++++++--------- 1 file changed, 167 insertions(+), 165 deletions(-) diff --git a/db/versions/11327-maroonOak/00-firstScript.sql b/db/versions/11327-maroonOak/00-firstScript.sql index 7c9d8e6e8..570f393cf 100644 --- a/db/versions/11327-maroonOak/00-firstScript.sql +++ b/db/versions/11327-maroonOak/00-firstScript.sql @@ -1,183 +1,185 @@ CREATE TABLE IF NOT EXISTS `vn`.`sim` ( - `id` BIGINT UNSIGNED, + `code` VARCHAR(25) COMMENT 'No se ha puesto BIGINT por incompatibilidad con Access', `line` VARCHAR(15) NOT NULL CHECK (`line` REGEXP '^[0-9]+$'), `ext` INT(4) NOT NULL, `pin` INT(4) NOT NULL, `puk` INT(15) NOT NULL, - PRIMARY KEY (`id`) + PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; -ALTER TABLE vn.deviceProductionUser CHANGE simSerialNumber simFk BIGINT unsigned DEFAULT NULL NULL; -ALTER TABLE vn.deviceProductionUser MODIFY COLUMN simFk BIGINT unsigned DEFAULT NULL NULL; +ALTER TABLE vn.deviceProductionUser CHANGE simSerialNumber simFk VARCHAR(25) DEFAULT NULL NULL; +ALTER TABLE vn.deviceProductionUser MODIFY COLUMN simFk VARCHAR(25) DEFAULT NULL NULL; -INSERT IGNORE INTO `vn`.`sim` (`line`, `ext`, `pin`, `id`, `puk`) VALUES - ('621188151', 2209, 1486, 3456985220092508,14213470), - ('621188152', 2210, 8765, 3456985220092509,99473093), - ('621188153', 2211, 3064, 3456985220092510,52967210), - ('621188759', 2081, 3700, 3456985220123637,56600999), - ('621188760', 2082, 3259, 345698522023638,87492404), - ('621188761', 2083, 2790, 3456985220123639,94009456), - ('621188762', 2084, 2480, 3456985220123644,1484999), - ('621188763', 2085, 6876, 3456985220123641,36577064), - ('621188766', 2086, 7775, 3456985220123642,80761698), - ('621188769', 2088, 4027, 3456985220123643,37921712), - ('621188771', 2089, 8797, 3456985220123640,63092540), - ('621188772', 2090, 8404, 3456985220123645,21014997), - ('621188773', 2091, 5481, 3456985220123646,16317277), - ('621188774', 2092, 9632, 3456985220123647,22235994), - ('621188775', 2093, 4654, 3456985220123648,28506486), - ('621188838', 2094, 1392, 3456985220123649,29498627), - ('621188839', 2095, 7774, 3456985220123650,46263490), - ('621188840', 2096, 7304, 3456985220123658,8212044), - ('621188841', 2097, 5569, 3456985220123652,81597658), - ('621188842', 2098, 4944, 3456985220123653,24961501), - ('621188843', 2099, 5142, 3456985220123654,17035634), - ('621188844', 2111, 7245, 3456985220123655,90231951), - ('621188846', 2110, 6590, 3456985220123656,72201537), - ('667680207', 2564, 4042, 34569832200759166,48401979), - ('667680315', 2565, 7143, 34569832200759372,32143252), - ('667680318', 2566, 6342, 34569832200759364,39597112), - ('667680413', 2567, 5580, 34569832200759356,32786992), - ('667680463', 2568, 0171, 34569832200759349,34240853), - ('667688217', 2569, 2500, 34569832200759331,5687589), - ('633603945', 2212, 7129, 34569832200759323,51554019), - ('622130186', 2213, 4826, 34569832200759307,19623551), - ('633973424', 2214, 8535, 34569832200759299,94619307), - ('633703828', 2215, 8628, 34569832200759281,22468012), - ('622025110', 2216, 2399, 34569832200759273,34602918), - ('622924867', 2217, 5665, 34569832200759265,26920216), - ('722409630', 2218, 5211, 34569832200759240,93750137), - ('623590529', 2219, 0493, 34569832200759208,47077088), - ('633243462', 2220, 6902, 34569832200759174,6421962), - ('633047286', 2221, 5592, 34569832200759182,32069439), - ('744716801', 2112, 9184, 34569832200759190,57049814), - ('655995021', 2131, 8896, 34569852202049093,19497356), - ('685522718', 2132, 1955, 34569852202049101,28519879), - ('674587213', 2994, 2006, 34569332200223743,62360135), - ('674587227', 2993, 9271, 34569332200223750,81628192), - ('674587229', 2993, 0900, 34569332200223768,91119071), - ('674587231', 2992, 5007, 34569332200223776,45826232), - ('674587234', 2991, 1378, 34569332200223784,91245744), - ('674587240', 2990, 0905, 34569332200223792,13083224), - ('674587245', 2989, 9059, 34569332200223800,15291807), - ('674587250', 2988, 8188, 34569332200223818,83017918), - ('674587254', 2987, 2962, 34569332200223826,92809271), - ('674587256', 2986, 0358, 34569332200223834,81067040), - ('674592713', 2570, 2537, 34569332200230672,82325850), - ('697832478', 2579, 0936, 34568732200494825,49658372), - ('697832176', 2571, 5944, 34568732200494742,19039461), - ('697832477', 2572, 5138, 34568732200494759,25712504), - ('697832178', 2573, 4597, 34568732200494767,66241760), - ('697832182', 2574, 9241, 34568732200494775,07342562), - ('697832196', 2575, 2995, 34568732200494783,53929026), - ('697832214', 2576, 7434, 34568732200494791,49698432), - ('697832230', 2577, 7004, 34568732200494809,21578612), - ('697832235', 2578, 9674, 34568732200494817,93090700), - ('673420375', 2599, 5430, 34562052300117259,35911412), - ('673420367', 2598, 8402, 34562052300117242,924654), - ('673420361', 2597, 5125, 34562052300117234,12027970), - ('673420355', 2596, 5069, 34562052300117226,34978149), - ('673420348', 2595, 8911, 34562052300117218,4228121), - ('673420346', 2594, 2461, 34562052300117200,67670772), - ('673420345', 2593, 2226, 34562052300117192,90586404), - ('673420306', 2592, 3355, 34562052300117184,97850017), - ('673420257', 2591, 9395, 34562052300117176,50713786), - ('673420231', 2590, 1378, 34562052300117168,50151763), - ('673420223', 2589, 9580, 34562052300117150,99534550), - ('673420216', 2588, 4955, 34562052300117143,317554), - ('673420203', 2587, 6742, 34562052300117135,69321531), - ('673420201', 2586, 1659, 34562052300117127,54720480), - ('673420199', 2585, 7823, 34562052300117119,22923796), - ('673420198', 2584, 1787, 34562052300117101,54414630), - ('673420168', 2583, 6334, 34562052300117093,50694894), - ('673420147', 2582, 8951, 34562052300117085,1402535), - ('673420125', 2581, 3068, 34562052300117077,86216200), - ('673420124', 2580, 9517, 34562052300117069,42504099), - ('600294609', 2715, 7474, 34569832304894588,55923317), - ('600084713', 2703, 8342, 34569832304894570,8392636), - ('600084732', 2704, 1625, 34569832304894513,75477452), - ('600084850', 2705, 9896, 34569832304894653,28589813), - ('600084951', 2706, 5520, 34569832304894661,75353012), - ('600084978', 2707, 2698, 34569832304894679,9005523), - ('600085403', 2708, 0837, 34569832304894646,77051152), - ('600085513', 2709, 3106, 34569832304894687,41571002), - ('600293916', 2712, 8990, 34569832304894620,95188676), - ('600294160', 2714, 6376, 34569832304894703,79879896), - ('671919529', 2975, 9184, 34569832304806236,7535392), - ('671919942', 2981, 0328, 34569832304806269,31052894), - ('671919530', 2976, 0344, 34569832304806251,89860304), - ('671919533', 2977, 0668, 34569832304806244,42921771), - ('671919535', 2978, 0105, 34569832304806277,31009417), - ('671919537', 2979, 0881, 34569832304806285,33479769), - ('671919540', 2980, 9874, 34569832304806293,14103929), - ('671919525', 2972, 2089, 34569832304806301,45903729), - ('671919527', 2973, 8206, 34569832304806368,1586035), - ('671919528', 2974, 2532, 34569832304806327,62310124), - ('673668717', 2836, 7973, 34562032301044223,15635496), - ('673668734', 2837, 4457, 34562032301044231,18313118), - ('673668738', 2824, 2911, 34562032301044249,30875583), - ('673668745', 2838, 7253, 34562032301044256,62754222), - ('673668796', 2839, 0068, 34562032301044264,15556829), - ('673668803', 2840, 2386, 34562032301044272,17572287), - ('673669591', 2850, 3833, 34562032301044280,34828896), - ('673668808', 2841, 3584, 34562032301044298,16234497), - ('673670102', 2851, 3554, 34562032301044306,23652625), - ('673670131', 2852, 4412, 34562032301044314,88611709), - ('673670135', 2827, 6058, 34562032301044322,53918579), - ('673670201', 2828, 8066, 34562032301044330,92369343), - ('673670225', 2829, 4592, 34562032301044348,24126635), - ('673670236', 2830, 2974, 34562032301044355,88608465), - ('673671485', 2849, 0349, 34562032301044363,44944874), - ('673461977', 2871, 1728, 34562032400157090,46975780), - ('673461975', 2870, 4734, 34562032400157082,69628432), - ('673461972', 2867, 6276, 34562032400157058,53338365), - ('673461979', 2872, 6043, 34562032400157108,36525197), - ('673461958', 2859, 3164, 34562032400156977,58947831), - ('673461957', 2857, 8685, 34562032400156969,15826386), - ('673461944', 2853, 1073, 34562032400156910,20452195), - ('673461974', 2869, 7121, 34562032400157074,32044645), - ('673461973', 2868, 8022, 34562032400157066,29282044), - ('673461971', 2866, 3089, 34562032400157041,66149978), - ('673461969', 2865, 7555, 34562032400157033,78391293), - ('673461960', 2860, 5203, 34562032400156985,37138232), - ('673461952', 2855, 6915, 34562032400156936,62724661), - ('673461949', 2854, 8706, 34562032400156928,5594345), - ('673461966', 2863, 2496, 34562032400157017,93450666), - ('673461968', 2864, 3703, 34562032400157025,23208841), - ('673461963', 2862, 9364, 34562032400157009,29712130), - ('673462719', 2873, 9387, 34562032400156951,50434348), - ('673461962', 2861, 8441, 34562032400156993,39686909), - ('673461956', 2826, 5392, 34562032400156944,5496107), - ('673465284', 2694, 1523, 34562032400171349,14554994), - ('673465282', 2692, 4645, 34562032400171323,24871187), - ('673465283', 2693, 5253, 34562032400171331,28303238), - ('673465841', 2696, 0849, 34562032400171257,21673222), - ('673465258', 2679, 4140, 34562032400171174,39793881), - ('673465263', 2680, 6922, 34562032400171182,12253261), - ('673465265', 2681, 9112, 34562032400171190,93894366), - ('673465267', 2682, 3259, 34562032400171208,2342189), - ('673465268', 2683, 8540, 34562032400171216,63886925), - ('673465285', 2695, 4167, 34562032400171356,79227618), - ('673465270', 2684, 4292, 34562032400171224,19216349), - ('673465272', 2685, 4007, 34562032400171232,14396903), - ('673465273', 2686, 6894, 34562032400171240,13569394), - ('673465274', 2687, 5268, 34562032400171265,59453667), - ('673465275', 2688, 0232, 34562032400171273,62324713), - ('673465276', 2689, 2720, 34562032400171281,65977200), - ('673465843', 2698, 4773, 34562032400171364,78387158), - ('673465842', 2697, 3729, 34562032400171315,94201789), - ('673465280', 2691, 0503, 34562032400171307,12298533), - ('673465279', 2690, 8239, 34562032400171299,76183877); +INSERT IGNORE INTO `vn`.`sim` (`line`, `ext`, `pin`, `code`, `puk`) VALUES + ('621188151', 2209, 1486, '3456985220092508',14213470), + ('621188152', 2210, 8765, '3456985220092509',99473093), + ('621188153', 2211, 3064, '3456985220092510',52967210), + ('621188759', 2081, 3700, '3456985220123637',56600999), + ('621188760', 2082, 3259, '345698522023638',87492404), + ('621188761', 2083, 2790, '3456985220123639',94009456), + ('621188762', 2084, 2480, '3456985220123644',1484999), + ('621188763', 2085, 6876, '3456985220123641',36577064), + ('621188766', 2086, 7775, '3456985220123642',80761698), + ('621188769', 2088, 4027, '3456985220123643',37921712), + ('621188771', 2089, 8797, '3456985220123640',63092540), + ('621188772', 2090, 8404, '3456985220123645',21014997), + ('621188773', 2091, 5481, '3456985220123646',16317277), + ('621188774', 2092, 9632, '3456985220123647',22235994), + ('621188775', 2093, 4654, '3456985220123648',28506486), + ('621188838', 2094, 1392, '3456985220123649',29498627), + ('621188839', 2095, 7774, '3456985220123650',46263490), + ('621188840', 2096, 7304, '3456985220123658',8212044), + ('621188841', 2097, 5569, '3456985220123652',81597658), + ('621188842', 2098, 4944, '3456985220123653',24961501), + ('621188843', 2099, 5142, '3456985220123654',17035634), + ('621188844', 2111, 7245, '3456985220123655',90231951), + ('621188846', 2110, 6590, '3456985220123656',72201537), + ('667680207', 2564, 4042, '34569832200759166',48401979), + ('667680315', 2565, 7143, '34569832200759372',32143252), + ('667680318', 2566, 6342, '34569832200759364',39597112), + ('667680413', 2567, 5580, '34569832200759356',32786992), + ('667680463', 2568, 0171, '34569832200759349',34240853), + ('667688217', 2569, 2500, '34569832200759331',5687589), + ('633603945', 2212, 7129, '34569832200759323',51554019), + ('622130186', 2213, 4826, '34569832200759307',19623551), + ('633973424', 2214, 8535, '34569832200759299',94619307), + ('633703828', 2215, 8628, '34569832200759281',22468012), + ('622025110', 2216, 2399, '34569832200759273',34602918), + ('622924867', 2217, 5665, '34569832200759265',26920216), + ('722409630', 2218, 5211, '34569832200759240',93750137), + ('623590529', 2219, 0493, '34569832200759208',47077088), + ('633243462', 2220, 6902, '34569832200759174',6421962), + ('633047286', 2221, 5592, '34569832200759182',32069439), + ('744716801', 2112, 9184, '34569832200759190',57049814), + ('655995021', 2131, 8896, '34569852202049093',19497356), + ('685522718', 2132, 1955, '34569852202049101',28519879), + ('674587213', 2994, 2006, '34569332200223743',62360135), + ('674587227', 2993, 9271, '34569332200223750',81628192), + ('674587229', 2993, 0900, '34569332200223768',91119071), + ('674587231', 2992, 5007, '34569332200223776',45826232), + ('674587234', 2991, 1378, '34569332200223784',91245744), + ('674587240', 2990, 0905, '34569332200223792',13083224), + ('674587245', 2989, 9059, '34569332200223800',15291807), + ('674587250', 2988, 8188, '34569332200223818',83017918), + ('674587254', 2987, 2962, '34569332200223826',92809271), + ('674587256', 2986, 0358, '34569332200223834',81067040), + ('674592713', 2570, 2537, '34569332200230672',82325850), + ('697832478', 2579, 0936, '34568732200494825',49658372), + ('697832176', 2571, 5944, '34568732200494742',19039461), + ('697832477', 2572, 5138, '34568732200494759',25712504), + ('697832178', 2573, 4597, '34568732200494767',66241760), + ('697832182', 2574, 9241, '34568732200494775',07342562), + ('697832196', 2575, 2995, '34568732200494783',53929026), + ('697832214', 2576, 7434, '34568732200494791',49698432), + ('697832230', 2577, 7004, '34568732200494809',21578612), + ('697832235', 2578, 9674, '34568732200494817',93090700), + ('673420375', 2599, 5430, '34562052300117259',35911412), + ('673420367', 2598, 8402, '34562052300117242',924654), + ('673420361', 2597, 5125, '34562052300117234',12027970), + ('673420355', 2596, 5069, '34562052300117226',34978149), + ('673420348', 2595, 8911, '34562052300117218',4228121), + ('673420346', 2594, 2461, '34562052300117200',67670772), + ('673420345', 2593, 2226, '34562052300117192',90586404), + ('673420306', 2592, 3355, '34562052300117184',97850017), + ('673420257', 2591, 9395, '34562052300117176',50713786), + ('673420231', 2590, 1378, '34562052300117168',50151763), + ('673420223', 2589, 9580, '34562052300117150',99534550), + ('673420216', 2588, 4955, '34562052300117143',317554), + ('673420203', 2587, 6742, '34562052300117135',69321531), + ('673420201', 2586, 1659, '34562052300117127',54720480), + ('673420199', 2585, 7823, '34562052300117119',22923796), + ('673420198', 2584, 1787, '34562052300117101',54414630), + ('673420168', 2583, 6334, '34562052300117093',50694894), + ('673420147', 2582, 8951, '34562052300117085',1402535), + ('673420125', 2581, 3068, '34562052300117077',86216200), + ('673420124', 2580, 9517, '34562052300117069',42504099), + ('600294609', 2715, 7474, '34569832304894588',55923317), + ('600084713', 2703, 8342, '34569832304894570',8392636), + ('600084732', 2704, 1625, '34569832304894513',75477452), + ('600084850', 2705, 9896, '34569832304894653',28589813), + ('600084951', 2706, 5520, '34569832304894661',75353012), + ('600084978', 2707, 2698, '34569832304894679',9005523), + ('600085403', 2708, 0837, '34569832304894646',77051152), + ('600085513', 2709, 3106, '34569832304894687',41571002), + ('600293916', 2712, 8990, '34569832304894620',95188676), + ('600294160', 2714, 6376, '34569832304894703',79879896), + ('671919529', 2975, 9184, '34569832304806236',7535392), + ('671919942', 2981, 0328, '34569832304806269',31052894), + ('671919530', 2976, 0344, '34569832304806251',89860304), + ('671919533', 2977, 0668, '34569832304806244',42921771), + ('671919535', 2978, 0105, '34569832304806277',31009417), + ('671919537', 2979, 0881, '34569832304806285',33479769), + ('671919540', 2980, 9874, '34569832304806293',14103929), + ('671919525', 2972, 2089, '34569832304806301',45903729), + ('671919527', 2973, 8206, '34569832304806368',1586035), + ('671919528', 2974, 2532, '34569832304806327',62310124), + ('673668717', 2836, 7973, '34562032301044223',15635496), + ('673668734', 2837, 4457, '34562032301044231',18313118), + ('673668738', 2824, 2911, '34562032301044249',30875583), + ('673668745', 2838, 7253, '34562032301044256',62754222), + ('673668796', 2839, 0068, '34562032301044264',15556829), + ('673668803', 2840, 2386, '34562032301044272',17572287), + ('673669591', 2850, 3833, '34562032301044280',34828896), + ('673668808', 2841, 3584, '34562032301044298',16234497), + ('673670102', 2851, 3554, '34562032301044306',23652625), + ('673670131', 2852, 4412, '34562032301044314',88611709), + ('673670135', 2827, 6058, '34562032301044322',53918579), + ('673670201', 2828, 8066, '34562032301044330',92369343), + ('673670225', 2829, 4592, '34562032301044348',24126635), + ('673670236', 2830, 2974, '34562032301044355',88608465), + ('673671485', 2849, 0349, '34562032301044363',44944874), + ('673461977', 2871, 1728, '34562032400157090',46975780), + ('673461975', 2870, 4734, '34562032400157082',69628432), + ('673461972', 2867, 6276, '34562032400157058',53338365), + ('673461979', 2872, 6043, '34562032400157108',36525197), + ('673461958', 2859, 3164, '34562032400156977',58947831), + ('673461957', 2857, 8685, '34562032400156969',15826386), + ('673461944', 2853, 1073, '34562032400156910',20452195), + ('673461974', 2869, 7121, '34562032400157074',32044645), + ('673461973', 2868, 8022, '34562032400157066',29282044), + ('673461971', 2866, 3089, '34562032400157041',66149978), + ('673461969', 2865, 7555, '34562032400157033',78391293), + ('673461960', 2860, 5203, '34562032400156985',37138232), + ('673461952', 2855, 6915, '34562032400156936',62724661), + ('673461949', 2854, 8706, '34562032400156928',5594345), + ('673461966', 2863, 2496, '34562032400157017',93450666), + ('673461968', 2864, 3703, '34562032400157025',23208841), + ('673461963', 2862, 9364, '34562032400157009',29712130), + ('673462719', 2873, 9387, '34562032400156951',50434348), + ('673461962', 2861, 8441, '34562032400156993',39686909), + ('673461956', 2826, 5392, '34562032400156944',5496107), + ('673465284', 2694, 1523, '34562032400171349',14554994), + ('673465282', 2692, 4645, '34562032400171323',24871187), + ('673465283', 2693, 5253, '34562032400171331',28303238), + ('673465841', 2696, 0849, '34562032400171257',21673222), + ('673465258', 2679, 4140, '34562032400171174',39793881), + ('673465263', 2680, 6922, '34562032400171182',12253261), + ('673465265', 2681, 9112, '34562032400171190',93894366), + ('673465267', 2682, 3259, '34562032400171208',2342189), + ('673465268', 2683, 8540, '34562032400171216',63886925), + ('673465285', 2695, 4167, '34562032400171356',79227618), + ('673465270', 2684, 4292, '34562032400171224',19216349), + ('673465272', 2685, 4007, '34562032400171232',14396903), + ('673465273', 2686, 6894, '34562032400171240',13569394), + ('673465274', 2687, 5268, '34562032400171265',59453667), + ('673465275', 2688, 0232, '34562032400171273',62324713), + ('673465276', 2689, 2720, '34562032400171281',65977200), + ('673465843', 2698, 4773, '34562032400171364',78387158), + ('673465842', 2697, 3729, '34562032400171315',94201789), + ('673465280', 2691, 0503, '34562032400171307',12298533), + ('673465279', 2690, 8239, '34562032400171299',76183877); UPDATE vn.deviceProductionUser SET simFk = NULL WHERE id IN ( SELECT dpu.id FROM vn.deviceProductionUser dpu - LEFT JOIN vn.sim s ON s.id = dpu.simFk - WHERE s.id IS NULL + LEFT JOIN vn.sim s ON s.code = dpu.simFk + WHERE s.code IS NULL AND dpu.simFk IS NOT NULL ); ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_sim_FK - FOREIGN KEY (simFk) REFERENCES vn.sim(id) ON DELETE RESTRICT ON UPDATE CASCADE; + FOREIGN KEY (simFk) REFERENCES vn.sim(code) ON DELETE RESTRICT ON UPDATE CASCADE; + +GRANT SELECT, INSERT, DELETE, UPDATE ON TABLE vn.sim TO hr; From d9a6e8a1c98744b9e69d00da5caa612962c079b1 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 16 Dec 2024 09:34:45 +0100 Subject: [PATCH 42/43] refactor: refs #7882 Added ACL's --- db/dump/fixtures.before.sql | 2 +- db/versions/11379-yellowCordyline/01-secScript.sql | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 db/versions/11379-yellowCordyline/01-secScript.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index c108bc0f6..57a9f9ca8 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -4038,7 +4038,7 @@ INSERT IGNORE INTO vn.saySimpleConfig (url, defaultChannel) INSERT INTO vn.workerIrpf (workerFk,spouseNif, geographicMobilityDate) VALUES (1106,'26493101E','2019-09-20'); -INSERT INTO vn.osrmConfig (id,url,tolerance) +INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance) VALUES (1,'https://router.project-osrm.org', 0.002); INSERT IGNORE INTO vn.inventoryConfig diff --git a/db/versions/11379-yellowCordyline/01-secScript.sql b/db/versions/11379-yellowCordyline/01-secScript.sql new file mode 100644 index 000000000..bfeb04477 --- /dev/null +++ b/db/versions/11379-yellowCordyline/01-secScript.sql @@ -0,0 +1,5 @@ +INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('OsrmConfig','optimize','READ','ALLOW','ROLE','employee'), + ('Route',' optimizePriority','*','ALLOW','ROLE','employee'); +INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance) + VALUES (1,'https://router.project-osrm.org', 0.002); From 71fb3996cdc5fe4675c17a6ea3c092fcf8819861 Mon Sep 17 00:00:00 2001 From: guillermo Date: Mon, 16 Dec 2024 09:40:55 +0100 Subject: [PATCH 43/43] refactor: refs #7882 Added ACL's --- db/versions/11379-yellowCordyline/01-secScript.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/versions/11379-yellowCordyline/01-secScript.sql b/db/versions/11379-yellowCordyline/01-secScript.sql index bfeb04477..30479229e 100644 --- a/db/versions/11379-yellowCordyline/01-secScript.sql +++ b/db/versions/11379-yellowCordyline/01-secScript.sql @@ -1,5 +1,5 @@ INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType,principalId) VALUES ('OsrmConfig','optimize','READ','ALLOW','ROLE','employee'), - ('Route',' optimizePriority','*','ALLOW','ROLE','employee'); + ('Route', 'optimizePriority','*','ALLOW','ROLE','employee'); INSERT IGNORE INTO vn.osrmConfig (id,url,tolerance) VALUES (1,'https://router.project-osrm.org', 0.002);