From 0cc5781f3fc2b562ee1fd617a40f35402be2fd6d Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 13 Jun 2023 15:05:37 +0200 Subject: [PATCH 01/38] =?UTF-8?q?refs=20#4734=20feat:=20a=C3=B1adido=20m?= =?UTF-8?q?=C3=A9todo=20putExpedicionInternacional=20de=20viaexpress?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../putExpedicionInternacional.js | 135 ++++++++++++++++++ back/model-config.json | 3 + back/models/viaexpress-config.js | 3 + back/models/viaexpress-config.json | 34 +++++ db/changes/232601/00-acl_viaexpressConfig.sql | 3 + db/changes/232601/00-viaexpress.sql | 13 ++ db/dump/fixtures.sql | 12 +- 7 files changed, 197 insertions(+), 6 deletions(-) create mode 100644 back/methods/viaexpress-config/putExpedicionInternacional.js create mode 100644 back/models/viaexpress-config.js create mode 100644 back/models/viaexpress-config.json create mode 100644 db/changes/232601/00-acl_viaexpressConfig.sql create mode 100644 db/changes/232601/00-viaexpress.sql diff --git a/back/methods/viaexpress-config/putExpedicionInternacional.js b/back/methods/viaexpress-config/putExpedicionInternacional.js new file mode 100644 index 0000000000..dc1df32181 --- /dev/null +++ b/back/methods/viaexpress-config/putExpedicionInternacional.js @@ -0,0 +1,135 @@ +const axios = require('axios'); + +module.exports = Self => { + Self.remoteMethod('putExpedicionInternacional', { + description: 'Returns the lastest campaigns', + accessType: 'WRITE', + accepts: [{ + arg: 'expeditionFk', + type: 'number', + required: true + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/putExpedicionInternacional`, + verb: 'POST' + } + }); + + Self.putExpedicionInternacional = async(expeditionFk, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const [data] = await Self.rawSql(` + SELECT urlAccess, + clientViaexpress, + userViaexpress, + passwordViaexpress, + defaultWeight, + DATE_FORMAT(t.shipped, '%Y-%m-%d') shipped, + deliveryType, + cv.socialName senderName, + av.street senderStreet, + av.postalCode senderPostalCode, + av.city senderCity, + pv.name senderProvince, + IFNULL(av.mobile, IFNULL(av.phone, IFNULL(cv.mobile, cv.phone))) senderPhone, + SUBSTRING_INDEX(cv.email, ',', 1) senderEmail, + a.nickname receiverName, + a.street receiverStreet, + a.postalCode receiverPostalCode, + a.city receiverCity, + p.name receiverProvince, + IFNULL(a.mobile, IFNULL(a.phone, IFNULL(c.mobile, c.phone))) receiverPhone, + SUBSTRING_INDEX(c.email, ',', 1) receiverEmail, + c2.code receiverCountry + FROM vn.viaexpressConfig + JOIN vn.expedition e ON e.id = ? + JOIN vn.ticket t ON t.id = e.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.client c ON c.id = t.clientFk + JOIN vn.company co ON co.id = t.companyFk + JOIN vn.client cv ON cv.id = co.clientFk + JOIN vn.address av ON av.id = cv.defaultAddressFk + JOIN vn.province pv ON pv.id = av.provinceFk + JOIN vn.country c2 ON c2.id = p.countryFk`, [expeditionFk], myOptions); + + const xmlData = ` + + + + + ${data.defaultWeight} + 1 + 0 + ${data.shipped} + 0 + ${data.deliveryType} + 0 + 0 + 0 + 0 + 0 + + + 0 + + + + ${data.senderName} + ${data.senderStreet} + ${data.senderPostalCode} + ${data.senderCity} + ${data.senderProvince} + + ${data.senderPhone} + ${data.senderEmail} + + + ${data.receiverName} + ${data.receiverStreet} + ${data.receiverPostalCode} + ${data.receiverCity} + + ${data.receiverProvince} + + ${data.receiverPhone} + ${data.receiverEmail} + ${data.receiverCountry} + + + ${data.clientViaexpress} + ${data.userViaexpress} + ${data.passwordViaexpress} + + + + + `; + + const url = 'http://82.223.6.71:82/ServicioVxClientes.asmx'; + try { + const response = await axios.post(url, xmlData, { + headers: { + 'Content-Type': 'application/soap+xml; charset=utf-8' + } + }); + + const startTag = ''; + const endTag = ''; + const startIndex = response.data.indexOf(startTag) + startTag.length; + const endIndex = response.data.indexOf(endTag); + const referenciaVx = response.data.substring(startIndex, endIndex); + + return referenciaVx; + } catch (error) { + throw Error(error.response.data); + } + }; +}; diff --git a/back/model-config.json b/back/model-config.json index ff2bf5850b..ec126455b4 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -139,6 +139,9 @@ }, "PrintConfig": { "dataSource": "vn" + }, + "ViaexpressConfig": { + "dataSource": "vn" } } diff --git a/back/models/viaexpress-config.js b/back/models/viaexpress-config.js new file mode 100644 index 0000000000..712bde60d0 --- /dev/null +++ b/back/models/viaexpress-config.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/viaexpress-config/putExpedicionInternacional')(Self); +}; diff --git a/back/models/viaexpress-config.json b/back/models/viaexpress-config.json new file mode 100644 index 0000000000..ed150a448d --- /dev/null +++ b/back/models/viaexpress-config.json @@ -0,0 +1,34 @@ +{ + "name": "ViaexpressConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "viaexpressConfig" + } + }, + "properties": { + "id": { + "type": "number", + "required": true + }, + "urlAccess": { + "type": "string", + "required": true + }, + "clientViaexpress": { + "type": "date" + }, + "userViaexpress": { + "type": "number" + }, + "passwordViaexpress": { + "type": "number" + }, + "defaultWeight": { + "type": "number" + }, + "deliveryType": { + "type": "number" + } + } +} diff --git a/db/changes/232601/00-acl_viaexpressConfig.sql b/db/changes/232601/00-acl_viaexpressConfig.sql new file mode 100644 index 0000000000..8371852620 --- /dev/null +++ b/db/changes/232601/00-acl_viaexpressConfig.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('ViaexpressConfig', 'putExpedicionInternacional', 'WRITE', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/232601/00-viaexpress.sql b/db/changes/232601/00-viaexpress.sql new file mode 100644 index 0000000000..1313135f94 --- /dev/null +++ b/db/changes/232601/00-viaexpress.sql @@ -0,0 +1,13 @@ +CREATE TABLE `vn`.`viaexpressConfig` ( + id int auto_increment NOT NULL, + urlAccess varchar(100) NOT NULL, + clientViaexpress varchar(100) NOT NULL, + userViaexpress varchar(100) NOT NULL, + passwordViaexpress varchar(100) NOT NULL, + defaultWeight decimal(10,2) NOT NULL, + deliveryType varchar(5) NOT NULL, + CONSTRAINT viaexpressConfig_PK PRIMARY KEY (id) +) +ENGINE=InnoDB +DEFAULT CHARSET=utf8mb3 +COLLATE=utf8mb3_unicode_ci; diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index a6557ff895..eddb1f6a95 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -566,13 +566,13 @@ INSERT INTO `vn`.`supplierAccount`(`id`, `supplierFk`, `iban`, `bankEntityFk`) VALUES (241, 442, 'ES111122333344111122221111', 128); -INSERT INTO `vn`.`company`(`id`, `code`, `supplierAccountFk`, `workerManagerFk`, `companyCode`, `sage200Company`, `expired`, `companyGroupFk`, `phytosanitary`) +INSERT INTO `vn`.`company`(`id`, `code`, `supplierAccountFk`, `workerManagerFk`, `companyCode`, `sage200Company`, `expired`, `companyGroupFk`, `phytosanitary` , `clientFk`) VALUES - (69 , 'CCs', NULL, 30, NULL, 0, NULL, 1, NULL), - (442 , 'VNL', 241, 30, 2 , 1, NULL, 2, 'VNL Company - Plant passport'), - (567 , 'VNH', NULL, 30, NULL, 4, NULL, 1, 'VNH Company - Plant passport'), - (791 , 'FTH', NULL, 30, NULL, 3, '2015-11-30', 1, NULL), - (1381, 'ORN', NULL, 30, NULL, 7, NULL, 1, 'ORN Company - Plant passport'); + (69 , 'CCs', NULL, 30, NULL, 0, NULL, 1, NULL , NULL), + (442 , 'VNL', 241, 30, 2 , 1, NULL, 2, 'VNL Company - Plant passport' , 1101), + (567 , 'VNH', NULL, 30, NULL, 4, NULL, 1, 'VNH Company - Plant passport' , NULL), + (791 , 'FTH', NULL, 30, NULL, 3, '2015-11-30', 1, NULL , NULL), + (1381, 'ORN', NULL, 30, NULL, 7, NULL, 1, 'ORN Company - Plant passport' , NULL); INSERT INTO `vn`.`taxArea` (`code`, `claveOperacionFactura`, `CodigoTransaccion`) VALUES From 0a9bdc6f891b050c95f1806857681c4119dd5ff8 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 13:25:45 +0200 Subject: [PATCH 02/38] test: jenkins test secuenciales --- Jenkinsfile | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index cf9b8cd677..1fe2cfc9bb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -54,19 +54,17 @@ pipeline { NODE_ENV = "" TZ = 'Europe/Madrid' } - parallel { - stage('Frontend') { - steps { - nodejs('node-v20') { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' - } + stage('Frontend') { + steps { + nodejs('node-v20') { + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' } } - stage('Backend') { - steps { - nodejs('node-v20') { - sh 'npm run test:back:ci' - } + } + stage('Backend') { + steps { + nodejs('node-v20') { + sh 'npm run test:back:ci' } } } From 1f4e98075cfa5d36ed309246870b8e6572e97f6b Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 13:27:35 +0200 Subject: [PATCH 03/38] fix: test secuendiales --- Jenkinsfile | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1fe2cfc9bb..72d70dc979 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -54,17 +54,19 @@ pipeline { NODE_ENV = "" TZ = 'Europe/Madrid' } - stage('Frontend') { - steps { - nodejs('node-v20') { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' + steps { + stage('Frontend') { + steps { + nodejs('node-v20') { + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' + } } } - } - stage('Backend') { - steps { - nodejs('node-v20') { - sh 'npm run test:back:ci' + stage('Backend') { + steps { + nodejs('node-v20') { + sh 'npm run test:back:ci' + } } } } From a31b735d3cef087646a8d7ea1d498741cfb942cd Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 13:29:00 +0200 Subject: [PATCH 04/38] fix --- Jenkinsfile | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 72d70dc979..5345b6dfed 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -55,17 +55,18 @@ pipeline { TZ = 'Europe/Madrid' } steps { - stage('Frontend') { - steps { - nodejs('node-v20') { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' + script { + if (!env.BRANCH_NAME.equals('test') && !env.BRANCH_NAME.equals('master')) { + stage('Frontend') { + nodejs('node-v20') { + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' + } } - } - } - stage('Backend') { - steps { - nodejs('node-v20') { - sh 'npm run test:back:ci' + + stage('Backend') { + nodejs('node-v20') { + sh 'npm run test:back:ci' + } } } } From 2da54ac3d72175c28cb7b11972dcba43fa0e6cc7 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 13:39:05 +0200 Subject: [PATCH 05/38] test secuenciales --- Jenkinsfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5345b6dfed..897bf4f3e5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -57,17 +57,17 @@ pipeline { steps { script { if (!env.BRANCH_NAME.equals('test') && !env.BRANCH_NAME.equals('master')) { - stage('Frontend') { - nodejs('node-v20') { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' - } - } - stage('Backend') { nodejs('node-v20') { sh 'npm run test:back:ci' } } + + stage('Frontend') { + nodejs('node-v20') { + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' + } + } } } } From 998597dfcc53f90f4fe5bc4334f87045c2d5f05b Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 13:49:21 +0200 Subject: [PATCH 06/38] refs #4734 recator: cambiado nombre ruta --- ...onInternacional.js => internationalExpedition.js} | 12 ++++++------ back/models/viaexpress-config.js | 2 +- back/models/viaexpress-config.json | 2 +- db/changes/232601/00-acl_viaexpressConfig.sql | 2 +- db/changes/232601/00-viaexpress.sql | 7 ++----- 5 files changed, 11 insertions(+), 14 deletions(-) rename back/methods/viaexpress-config/{putExpedicionInternacional.js => internationalExpedition.js} (94%) diff --git a/back/methods/viaexpress-config/putExpedicionInternacional.js b/back/methods/viaexpress-config/internationalExpedition.js similarity index 94% rename from back/methods/viaexpress-config/putExpedicionInternacional.js rename to back/methods/viaexpress-config/internationalExpedition.js index dc1df32181..99a4197c7a 100644 --- a/back/methods/viaexpress-config/putExpedicionInternacional.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -1,7 +1,7 @@ const axios = require('axios'); module.exports = Self => { - Self.remoteMethod('putExpedicionInternacional', { + Self.remoteMethod('internationalExpedition', { description: 'Returns the lastest campaigns', accessType: 'WRITE', accepts: [{ @@ -14,19 +14,20 @@ module.exports = Self => { root: true }, http: { - path: `/putExpedicionInternacional`, + path: `/internationalExpedition`, verb: 'POST' } }); - Self.putExpedicionInternacional = async(expeditionFk, options) => { + Self.internationalExpedition = async(expeditionFk, options) => { const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); const [data] = await Self.rawSql(` - SELECT urlAccess, + SELECT + url, clientViaexpress, userViaexpress, passwordViaexpress, @@ -113,9 +114,8 @@ module.exports = Self => { `; - const url = 'http://82.223.6.71:82/ServicioVxClientes.asmx'; try { - const response = await axios.post(url, xmlData, { + const response = await axios.post(`${data.url}ServicioVxClientes.asmx`, xmlData, { headers: { 'Content-Type': 'application/soap+xml; charset=utf-8' } diff --git a/back/models/viaexpress-config.js b/back/models/viaexpress-config.js index 712bde60d0..72424f806c 100644 --- a/back/models/viaexpress-config.js +++ b/back/models/viaexpress-config.js @@ -1,3 +1,3 @@ module.exports = Self => { - require('../methods/viaexpress-config/putExpedicionInternacional')(Self); + require('../methods/viaexpress-config/internationalExpedition')(Self); }; diff --git a/back/models/viaexpress-config.json b/back/models/viaexpress-config.json index ed150a448d..5927cee3f6 100644 --- a/back/models/viaexpress-config.json +++ b/back/models/viaexpress-config.json @@ -11,7 +11,7 @@ "type": "number", "required": true }, - "urlAccess": { + "url": { "type": "string", "required": true }, diff --git a/db/changes/232601/00-acl_viaexpressConfig.sql b/db/changes/232601/00-acl_viaexpressConfig.sql index 8371852620..91a7e3c5b5 100644 --- a/db/changes/232601/00-acl_viaexpressConfig.sql +++ b/db/changes/232601/00-acl_viaexpressConfig.sql @@ -1,3 +1,3 @@ INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES - ('ViaexpressConfig', 'putExpedicionInternacional', 'WRITE', 'ALLOW', 'ROLE', 'employee'); + ('ViaexpressConfig', 'internationalExpedition', 'WRITE', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/232601/00-viaexpress.sql b/db/changes/232601/00-viaexpress.sql index 1313135f94..9e3baa9fd5 100644 --- a/db/changes/232601/00-viaexpress.sql +++ b/db/changes/232601/00-viaexpress.sql @@ -1,13 +1,10 @@ CREATE TABLE `vn`.`viaexpressConfig` ( id int auto_increment NOT NULL, - urlAccess varchar(100) NOT NULL, + url varchar(100) NOT NULL, clientViaexpress varchar(100) NOT NULL, userViaexpress varchar(100) NOT NULL, passwordViaexpress varchar(100) NOT NULL, defaultWeight decimal(10,2) NOT NULL, deliveryType varchar(5) NOT NULL, CONSTRAINT viaexpressConfig_PK PRIMARY KEY (id) -) -ENGINE=InnoDB -DEFAULT CHARSET=utf8mb3 -COLLATE=utf8mb3_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; From 1027e0753e399e4e7ed39d35468c1c5197945623 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 14:06:36 +0200 Subject: [PATCH 07/38] test in paralel --- Jenkinsfile | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 897bf4f3e5..cf9b8cd677 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -54,19 +54,18 @@ pipeline { NODE_ENV = "" TZ = 'Europe/Madrid' } - steps { - script { - if (!env.BRANCH_NAME.equals('test') && !env.BRANCH_NAME.equals('master')) { - stage('Backend') { - nodejs('node-v20') { - sh 'npm run test:back:ci' - } + parallel { + stage('Frontend') { + steps { + nodejs('node-v20') { + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' } - - stage('Frontend') { - nodejs('node-v20') { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=2' - } + } + } + stage('Backend') { + steps { + nodejs('node-v20') { + sh 'npm run test:back:ci' } } } From 90ce0d1c275e1f508bceb8a13224aef97262ada4 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 14:24:47 +0200 Subject: [PATCH 08/38] refs #4734 refactor: consulta con loopback --- .../internationalExpedition.js | 95 +++++++++++++++++-- back/models/company.json | 7 ++ 2 files changed, 96 insertions(+), 6 deletions(-) diff --git a/back/methods/viaexpress-config/internationalExpedition.js b/back/methods/viaexpress-config/internationalExpedition.js index 99a4197c7a..fd8d69e6db 100644 --- a/back/methods/viaexpress-config/internationalExpedition.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -20,6 +20,7 @@ module.exports = Self => { }); Self.internationalExpedition = async(expeditionFk, options) => { + const models = Self.app.models; const myOptions = {}; if (typeof options == 'object') @@ -27,13 +28,13 @@ module.exports = Self => { const [data] = await Self.rawSql(` SELECT - url, - clientViaexpress, - userViaexpress, - passwordViaexpress, - defaultWeight, + -- url, + -- clientViaexpress, + -- userViaexpress, + -- passwordViaexpress, + -- defaultWeight, + -- deliveryType, DATE_FORMAT(t.shipped, '%Y-%m-%d') shipped, - deliveryType, cv.socialName senderName, av.street senderStreet, av.postalCode senderPostalCode, @@ -61,6 +62,88 @@ module.exports = Self => { JOIN vn.province pv ON pv.id = av.provinceFk JOIN vn.country c2 ON c2.id = p.countryFk`, [expeditionFk], myOptions); + const expedition = await models.Expedition.findOne({ + fields: ['id', 'ticketFk'], + where: {id: expeditionFk}, + include: [ + { + relation: 'ticket', + scope: { + fields: ['shipped', 'addressFk', 'clientFk', 'companyFk'], + include: [ + { + relation: 'client', + scope: { + fields: ['mobile', 'phone', 'email'] + } + }, + { + relation: 'address', + scope: { + fields: [ + 'nickname', + 'street', + 'postalCode', + 'city', + 'mobile', + 'phone', + 'provinceFk' + ], + include: { + relation: 'province', + scope: { + fields: ['name', 'countryFk'], + include: { + relation: 'country', + scope: { + fields: ['code'], + } + } + + } + } + } + }, + { + relation: 'company', + scope: { + fields: ['clientFk'], + include: { + relation: 'client', + scope: { + fields: ['socialName', 'mobile', 'phone', 'email', 'defaultAddressFk'], + include: { + relation: 'defaultAddress', + scope: { + fields: [ + 'street', + 'postalCode', + 'city', + 'mobile', + 'phone', + 'provinceFk' + ], + include: { + relation: 'province', + scope: { + fields: ['name'] + } + } + } + } + } + } + } + } + ] + } + + } + ] + }, myOptions); + console.log(data); + console.log(expedition); + const xmlData = ` diff --git a/back/models/company.json b/back/models/company.json index f16c5762fc..53266e38ac 100644 --- a/back/models/company.json +++ b/back/models/company.json @@ -24,5 +24,12 @@ "where" :{ "expired": null } + }, + "relations": { + "client": { + "type": "belongsTo", + "model": "Client", + "foreignKey": "clientFk" + } } } From ab68cb7165a0ae7a34074c6699f716a1476600e1 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 14:27:29 +0200 Subject: [PATCH 09/38] refs #4734 fix: manejo errores --- back/methods/viaexpress-config/internationalExpedition.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/back/methods/viaexpress-config/internationalExpedition.js b/back/methods/viaexpress-config/internationalExpedition.js index fd8d69e6db..dd46ff7945 100644 --- a/back/methods/viaexpress-config/internationalExpedition.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -212,7 +212,8 @@ module.exports = Self => { return referenciaVx; } catch (error) { - throw Error(error.response.data); + if (error?.response?.data) throw Error(error.response.data); + throw Error(error); } }; }; From 219ad75172ad57a6e76fa4ae84c718f249f0f3b6 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 16 Jun 2023 14:30:33 +0200 Subject: [PATCH 10/38] a --- .../viaexpress-config/internationalExpedition.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/back/methods/viaexpress-config/internationalExpedition.js b/back/methods/viaexpress-config/internationalExpedition.js index dd46ff7945..23b62e8452 100644 --- a/back/methods/viaexpress-config/internationalExpedition.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -28,12 +28,12 @@ module.exports = Self => { const [data] = await Self.rawSql(` SELECT - -- url, - -- clientViaexpress, - -- userViaexpress, - -- passwordViaexpress, - -- defaultWeight, - -- deliveryType, + url, + clientViaexpress, + userViaexpress, + passwordViaexpress, + defaultWeight, + deliveryType, DATE_FORMAT(t.shipped, '%Y-%m-%d') shipped, cv.socialName senderName, av.street senderStreet, From 303be74382a9bc38f931e994db15027df9e890f7 Mon Sep 17 00:00:00 2001 From: vicent Date: Mon, 19 Jun 2023 11:55:07 +0200 Subject: [PATCH 11/38] refs #4734 refactor: use loopback instead of --- .../internationalExpedition.js | 92 +++++++------------ back/models/viaexpress-config.json | 8 +- 2 files changed, 36 insertions(+), 64 deletions(-) diff --git a/back/methods/viaexpress-config/internationalExpedition.js b/back/methods/viaexpress-config/internationalExpedition.js index 23b62e8452..70a68acd6e 100644 --- a/back/methods/viaexpress-config/internationalExpedition.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -26,42 +26,6 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const [data] = await Self.rawSql(` - SELECT - url, - clientViaexpress, - userViaexpress, - passwordViaexpress, - defaultWeight, - deliveryType, - DATE_FORMAT(t.shipped, '%Y-%m-%d') shipped, - cv.socialName senderName, - av.street senderStreet, - av.postalCode senderPostalCode, - av.city senderCity, - pv.name senderProvince, - IFNULL(av.mobile, IFNULL(av.phone, IFNULL(cv.mobile, cv.phone))) senderPhone, - SUBSTRING_INDEX(cv.email, ',', 1) senderEmail, - a.nickname receiverName, - a.street receiverStreet, - a.postalCode receiverPostalCode, - a.city receiverCity, - p.name receiverProvince, - IFNULL(a.mobile, IFNULL(a.phone, IFNULL(c.mobile, c.phone))) receiverPhone, - SUBSTRING_INDEX(c.email, ',', 1) receiverEmail, - c2.code receiverCountry - FROM vn.viaexpressConfig - JOIN vn.expedition e ON e.id = ? - JOIN vn.ticket t ON t.id = e.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.client c ON c.id = t.clientFk - JOIN vn.company co ON co.id = t.companyFk - JOIN vn.client cv ON cv.id = co.clientFk - JOIN vn.address av ON av.id = cv.defaultAddressFk - JOIN vn.province pv ON pv.id = av.provinceFk - JOIN vn.country c2 ON c2.id = p.countryFk`, [expeditionFk], myOptions); - const expedition = await models.Expedition.findOne({ fields: ['id', 'ticketFk'], where: {id: expeditionFk}, @@ -141,20 +105,28 @@ module.exports = Self => { } ] }, myOptions); - console.log(data); - console.log(expedition); + + const viaexpressConfig = await models.ViaexpressConfig.findOne({ + fields: ['url', 'clientViaexpress', 'userViaexpress', 'passwordViaexpress', 'defaultWeight', 'deliveryType'] + }, myOptions); + + const shipped = expedition.ticket().shipped; + const year = shipped.getFullYear(); + const month = shipped.getMonth() + 1; + const day = shipped.getDate(); + const date = `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; const xmlData = ` - ${data.defaultWeight} + ${viaexpressConfig.defaultWeight} 1 0 - ${data.shipped} + ${date} 0 - ${data.deliveryType} + ${viaexpressConfig.deliveryType} 0 0 0 @@ -166,31 +138,31 @@ module.exports = Self => { - ${data.senderName} - ${data.senderStreet} - ${data.senderPostalCode} - ${data.senderCity} - ${data.senderProvince} + ${expedition.ticket().company().client().socialName} + ${expedition.ticket().company().client().defaultAddress().street} + ${expedition.ticket().company().client().defaultAddress().postalCode} + ${expedition.ticket().company().client().defaultAddress().city} + ${expedition.ticket().company().client().defaultAddress().province().name} - ${data.senderPhone} - ${data.senderEmail} + ${expedition.ticket().company().client().defaultAddress().mobile || expedition.ticket().company().client().defaultAddress().phone || expedition.ticket().company().client().mobile || expedition.ticket().company().client().phone} + ${expedition.ticket().company().client().email} - ${data.receiverName} - ${data.receiverStreet} - ${data.receiverPostalCode} - ${data.receiverCity} + ${expedition.ticket().address().nickname} + ${expedition.ticket().address().street} + ${expedition.ticket().address().postalCode} + ${expedition.ticket().address().city} - ${data.receiverProvince} + ${expedition.ticket().address().province().name} - ${data.receiverPhone} - ${data.receiverEmail} - ${data.receiverCountry} + ${expedition.ticket().address().mobile || expedition.ticket().address().phone || expedition.ticket().client().mobile || expedition.ticket().client().phone} + ${expedition.ticket().client().email} + ${expedition.ticket().address().province().country().code} - ${data.clientViaexpress} - ${data.userViaexpress} - ${data.passwordViaexpress} + ${viaexpressConfig.clientViaexpress} + ${viaexpressConfig.userViaexpress} + ${viaexpressConfig.passwordViaexpress} @@ -198,7 +170,7 @@ module.exports = Self => { `; try { - const response = await axios.post(`${data.url}ServicioVxClientes.asmx`, xmlData, { + const response = await axios.post(`${viaexpressConfig.url}ServicioVxClientes.asmx`, xmlData, { headers: { 'Content-Type': 'application/soap+xml; charset=utf-8' } diff --git a/back/models/viaexpress-config.json b/back/models/viaexpress-config.json index 5927cee3f6..26d6c8e375 100644 --- a/back/models/viaexpress-config.json +++ b/back/models/viaexpress-config.json @@ -16,19 +16,19 @@ "required": true }, "clientViaexpress": { - "type": "date" + "type": "string" }, "userViaexpress": { - "type": "number" + "type": "string" }, "passwordViaexpress": { - "type": "number" + "type": "string" }, "defaultWeight": { "type": "number" }, "deliveryType": { - "type": "number" + "type": "string" } } } From cfe340eeff471d70d188e5f1b5573179b38941b1 Mon Sep 17 00:00:00 2001 From: vicent Date: Mon, 19 Jun 2023 14:27:24 +0200 Subject: [PATCH 12/38] refs #4734 feat: xml en otro archivo --- .../internationalExpedition.js | 232 ++++++------------ back/methods/viaexpress-config/renderer.js | 162 ++++++++++++ back/methods/viaexpress-config/template.xml | 52 ++++ back/models/viaexpress-config.js | 1 + package.json | 1 + 5 files changed, 285 insertions(+), 163 deletions(-) create mode 100644 back/methods/viaexpress-config/renderer.js create mode 100644 back/methods/viaexpress-config/template.xml diff --git a/back/methods/viaexpress-config/internationalExpedition.js b/back/methods/viaexpress-config/internationalExpedition.js index 70a68acd6e..cbb1c2c675 100644 --- a/back/methods/viaexpress-config/internationalExpedition.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -1,4 +1,5 @@ const axios = require('axios'); +const fs = require('fs'); module.exports = Self => { Self.remoteMethod('internationalExpedition', { @@ -19,173 +20,78 @@ module.exports = Self => { } }); - Self.internationalExpedition = async(expeditionFk, options) => { + Self.internationalExpedition = async expeditionFk => { const models = Self.app.models; - const myOptions = {}; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - const expedition = await models.Expedition.findOne({ - fields: ['id', 'ticketFk'], - where: {id: expeditionFk}, - include: [ - { - relation: 'ticket', - scope: { - fields: ['shipped', 'addressFk', 'clientFk', 'companyFk'], - include: [ - { - relation: 'client', - scope: { - fields: ['mobile', 'phone', 'email'] - } - }, - { - relation: 'address', - scope: { - fields: [ - 'nickname', - 'street', - 'postalCode', - 'city', - 'mobile', - 'phone', - 'provinceFk' - ], - include: { - relation: 'province', - scope: { - fields: ['name', 'countryFk'], - include: { - relation: 'country', - scope: { - fields: ['code'], - } - } - - } - } - } - }, - { - relation: 'company', - scope: { - fields: ['clientFk'], - include: { - relation: 'client', - scope: { - fields: ['socialName', 'mobile', 'phone', 'email', 'defaultAddressFk'], - include: { - relation: 'defaultAddress', - scope: { - fields: [ - 'street', - 'postalCode', - 'city', - 'mobile', - 'phone', - 'provinceFk' - ], - include: { - relation: 'province', - scope: { - fields: ['name'] - } - } - } - } - } - } - } - } - ] - } - - } - ] - }, myOptions); const viaexpressConfig = await models.ViaexpressConfig.findOne({ - fields: ['url', 'clientViaexpress', 'userViaexpress', 'passwordViaexpress', 'defaultWeight', 'deliveryType'] - }, myOptions); + fields: ['url'] + }); - const shipped = expedition.ticket().shipped; - const year = shipped.getFullYear(); - const month = shipped.getMonth() + 1; - const day = shipped.getDate(); - const date = `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; + const renderedXml = await models.ViaexpressConfig.renderer(expeditionFk); + // const renderedXml = ` + // + // + // + // + // 10 + // 1 + // 0 + // 2023-06-12 + // 0 + // E + // 0 + // 0 + // 0 + // 0 + // 0 + // + // + // 0 + // + // + // + // VERDNATURA LEVANTE SL + // FENOLLARS, 2 + // 46680 + // Algemesi + // Valencia + // + // 963677177 + // pako.natek@gmail.com + // + // + // ROSAMARY FLORISTERIA + // C SANTA ROSA,25 + // 03802 + // ALCOY + // ALCOY + // Alicante + // + // 653967489 + // correo@floristeriarosamary.com + // ES + // + // + // 16092 + // B97367486 + // VERDNA22 + // + // + // + // + // `; + const response = await axios.post(`${viaexpressConfig.url}ServicioVxClientes.asmx`, renderedXml, { + headers: { + 'Content-Type': 'application/soap+xml; charset=utf-8' + } + }); + console.log(response); + const startTag = ''; + const endTag = ''; + const startIndex = response.data.indexOf(startTag) + startTag.length; + const endIndex = response.data.indexOf(endTag); + const referenciaVx = response.data.substring(startIndex, endIndex); - const xmlData = ` - - - - - ${viaexpressConfig.defaultWeight} - 1 - 0 - ${date} - 0 - ${viaexpressConfig.deliveryType} - 0 - 0 - 0 - 0 - 0 - - - 0 - - - - ${expedition.ticket().company().client().socialName} - ${expedition.ticket().company().client().defaultAddress().street} - ${expedition.ticket().company().client().defaultAddress().postalCode} - ${expedition.ticket().company().client().defaultAddress().city} - ${expedition.ticket().company().client().defaultAddress().province().name} - - ${expedition.ticket().company().client().defaultAddress().mobile || expedition.ticket().company().client().defaultAddress().phone || expedition.ticket().company().client().mobile || expedition.ticket().company().client().phone} - ${expedition.ticket().company().client().email} - - - ${expedition.ticket().address().nickname} - ${expedition.ticket().address().street} - ${expedition.ticket().address().postalCode} - ${expedition.ticket().address().city} - - ${expedition.ticket().address().province().name} - - ${expedition.ticket().address().mobile || expedition.ticket().address().phone || expedition.ticket().client().mobile || expedition.ticket().client().phone} - ${expedition.ticket().client().email} - ${expedition.ticket().address().province().country().code} - - - ${viaexpressConfig.clientViaexpress} - ${viaexpressConfig.userViaexpress} - ${viaexpressConfig.passwordViaexpress} - - - - - `; - - try { - const response = await axios.post(`${viaexpressConfig.url}ServicioVxClientes.asmx`, xmlData, { - headers: { - 'Content-Type': 'application/soap+xml; charset=utf-8' - } - }); - - const startTag = ''; - const endTag = ''; - const startIndex = response.data.indexOf(startTag) + startTag.length; - const endIndex = response.data.indexOf(endTag); - const referenciaVx = response.data.substring(startIndex, endIndex); - - return referenciaVx; - } catch (error) { - if (error?.response?.data) throw Error(error.response.data); - throw Error(error); - } + return referenciaVx; }; }; diff --git a/back/methods/viaexpress-config/renderer.js b/back/methods/viaexpress-config/renderer.js new file mode 100644 index 0000000000..79dab21c9f --- /dev/null +++ b/back/methods/viaexpress-config/renderer.js @@ -0,0 +1,162 @@ +const fs = require('fs'); +const handlebars = require('handlebars'); + +module.exports = Self => { + Self.remoteMethod('renderer', { + description: 'Returns the lastest campaigns', + accessType: 'READ', + accepts: [{ + arg: 'expeditionFk', + type: 'number', + required: true + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/renderer`, + verb: 'GET' + } + }); + + Self.renderer = async expeditionFk => { + const models = Self.app.models; + + const viaexpressConfig = await models.ViaexpressConfig.findOne({ + fields: ['clientViaexpress', 'userViaexpress', 'passwordViaexpress', 'defaultWeight', 'deliveryType'] + }); + + const expedition = await models.Expedition.findOne({ + fields: ['id', 'ticketFk'], + where: {id: expeditionFk}, + include: [ + { + relation: 'ticket', + scope: { + fields: ['shipped', 'addressFk', 'clientFk', 'companyFk'], + include: [ + { + relation: 'client', + scope: { + fields: ['mobile', 'phone', 'email'] + } + }, + { + relation: 'address', + scope: { + fields: [ + 'nickname', + 'street', + 'postalCode', + 'city', + 'mobile', + 'phone', + 'provinceFk' + ], + include: { + relation: 'province', + scope: { + fields: ['name', 'countryFk'], + include: { + relation: 'country', + scope: { + fields: ['code'], + } + } + + } + } + } + }, + { + relation: 'company', + scope: { + fields: ['clientFk'], + include: { + relation: 'client', + scope: { + fields: ['socialName', 'mobile', 'phone', 'email', 'defaultAddressFk'], + include: { + relation: 'defaultAddress', + scope: { + fields: [ + 'street', + 'postalCode', + 'city', + 'mobile', + 'phone', + 'provinceFk' + ], + include: { + relation: 'province', + scope: { + fields: ['name'] + } + } + } + } + } + } + } + } + ] + } + + } + ] + }); + + const shipped = expedition.ticket().shipped; + const year = shipped.getFullYear(); + const month = shipped.getMonth() + 1; + const day = shipped.getDate(); + const date = `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; + + const data = { + defaultWeight: viaexpressConfig.defaultWeight, + date: date, // const date = new Date().toISOString(); + deliveryType: viaexpressConfig.deliveryType, + senderName: expedition.ticket().company().client().socialName, + senderStreet: expedition.ticket().company().client().defaultAddress().street, + senderPostalCode: expedition.ticket().company().client().defaultAddress().postalCode, + senderCity: expedition.ticket().company().client().defaultAddress().city, + senderProvince: expedition.ticket().company().client().defaultAddress().province().name, + senderPhone: expedition.ticket().company().client().defaultAddress().mobile + || expedition.ticket().company().client().defaultAddress().phone + || expedition.ticket().company().client().mobile + || expedition.ticket().company().client().phone, + senderEmail: expedition.ticket().company().client().email, + receiverName: expedition.ticket().address().nickname, + receiverStreet: expedition.ticket().address().street, + receiverPostalCode: expedition.ticket().address().postalCode, + receiverCity: expedition.ticket().address().city, + receiverProvince: expedition.ticket().address().province().name, + receiverPhone: expedition.ticket().address().mobile + || expedition.ticket().address().phone + || expedition.ticket().client().mobile + || expedition.ticket().client().phone, + receiverEmail: expedition.ticket().client().email, + receiverCountry: expedition.ticket().address().province().country().code, + clientViaexpress: viaexpressConfig.clientViaexpress, + userViaexpress: viaexpressConfig.userViaexpress, + passwordViaexpress: viaexpressConfig.passwordViaexpress + }; + + const templateXml = fs.readFileSync(__dirname + '/template.xml', 'utf-8'); + + // // Crea una instancia de Vue con los datos + // const vueInstance = new Vue({ + // data: data, + // template: templateXml, + // }); + + // // Renderiza la plantilla con los datos utilizando vue-server-renderer + // const renderer = createRenderer(); + // return renderer.renderToString(vueInstance); + + const compiledTemplate = handlebars.compile(templateXml); + const renderedHtml = compiledTemplate(data); + return renderedHtml; + }; +}; diff --git a/back/methods/viaexpress-config/template.xml b/back/methods/viaexpress-config/template.xml new file mode 100644 index 0000000000..141fb939ae --- /dev/null +++ b/back/methods/viaexpress-config/template.xml @@ -0,0 +1,52 @@ + + + + + + {{ defaultWeight }} + 1 + 0 + {{ date }} + 0 + {{ deliveryType }} + 0 + 0 + 0 + 0 + 0 + + + 0 + + + + {{ senderName }} + {{ senderStreet }} + {{ senderPostalCode }} + {{ senderCity }} + {{ senderProvince }} + + {{ senderPhone }} + {{ senderEmail }} + + + {{ receiverName }} + {{ receiverStreet }} + {{ receiverPostalCode }} + {{ receiverCity }} + + {{ receiverProvince }} + + {{ receiverPhone }} + {{ receiverEmail }} + {{ receiverCountry }} + + + {{ clientViaexpress }} + {{ userViaexpress }} + {{ passwordViaexpress }} + + + + + diff --git a/back/models/viaexpress-config.js b/back/models/viaexpress-config.js index 72424f806c..d0335b28b6 100644 --- a/back/models/viaexpress-config.js +++ b/back/models/viaexpress-config.js @@ -1,3 +1,4 @@ module.exports = Self => { require('../methods/viaexpress-config/internationalExpedition')(Self); + require('../methods/viaexpress-config/renderer')(Self); }; diff --git a/package.json b/package.json index 4358c86a70..857a7c1729 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "ftps": "^1.2.0", "gm": "^1.25.0", "got": "^10.7.0", + "handlebars": "^4.7.7", "helmet": "^3.21.2", "i18n": "^0.8.4", "image-type": "^4.1.0", From 1ba19714da1d8c14d5ee54ca4cbe044cae8a86d5 Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 20 Jun 2023 07:11:45 +0200 Subject: [PATCH 13/38] refs #4734 feat: add acl --- db/changes/232601/00-acl_viaexpressConfig.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/changes/232601/00-acl_viaexpressConfig.sql b/db/changes/232601/00-acl_viaexpressConfig.sql index 91a7e3c5b5..d4c186dd41 100644 --- a/db/changes/232601/00-acl_viaexpressConfig.sql +++ b/db/changes/232601/00-acl_viaexpressConfig.sql @@ -1,3 +1,4 @@ INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES - ('ViaexpressConfig', 'internationalExpedition', 'WRITE', 'ALLOW', 'ROLE', 'employee'); + ('ViaexpressConfig', 'internationalExpedition', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('ViaexpressConfig', 'renderer', 'READ', 'ALLOW', 'ROLE', 'employee'); From c3af2e3c925186e56f31a0f80f33b4095604770b Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 20 Jun 2023 07:19:32 +0200 Subject: [PATCH 14/38] refs #4734 refactor: actualizada descripcion --- back/methods/viaexpress-config/internationalExpedition.js | 3 +-- back/methods/viaexpress-config/renderer.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/back/methods/viaexpress-config/internationalExpedition.js b/back/methods/viaexpress-config/internationalExpedition.js index cbb1c2c675..75f44401f5 100644 --- a/back/methods/viaexpress-config/internationalExpedition.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -1,9 +1,8 @@ const axios = require('axios'); -const fs = require('fs'); module.exports = Self => { Self.remoteMethod('internationalExpedition', { - description: 'Returns the lastest campaigns', + description: 'Create an expedition and return a label', accessType: 'WRITE', accepts: [{ arg: 'expeditionFk', diff --git a/back/methods/viaexpress-config/renderer.js b/back/methods/viaexpress-config/renderer.js index 79dab21c9f..7308b482ed 100644 --- a/back/methods/viaexpress-config/renderer.js +++ b/back/methods/viaexpress-config/renderer.js @@ -3,7 +3,7 @@ const handlebars = require('handlebars'); module.exports = Self => { Self.remoteMethod('renderer', { - description: 'Returns the lastest campaigns', + description: 'Renders the data from an XML', accessType: 'READ', accepts: [{ arg: 'expeditionFk', From 13e95bcd35920d28fa170b97b2d317cf4cee918d Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 20 Jun 2023 11:25:47 +0200 Subject: [PATCH 15/38] add vue commented code --- back/methods/viaexpress-config/renderer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/back/methods/viaexpress-config/renderer.js b/back/methods/viaexpress-config/renderer.js index 7308b482ed..588733174d 100644 --- a/back/methods/viaexpress-config/renderer.js +++ b/back/methods/viaexpress-config/renderer.js @@ -1,5 +1,7 @@ const fs = require('fs'); const handlebars = require('handlebars'); +// const Vue = require('vue'); +// const renderer = require('vue-server-renderer').createRenderer(); module.exports = Self => { Self.remoteMethod('renderer', { From 4444b45b08e5e5427408d15f57b7ff80b87bce1e Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 20 Jun 2023 14:07:36 +0200 Subject: [PATCH 16/38] refs #4734 feat: se utiliza la libreria ejs y xmldom --- .../internationalExpedition.js | 65 ++----------------- back/methods/viaexpress-config/renderer.js | 28 ++------ back/methods/viaexpress-config/template.ejs | 52 +++++++++++++++ back/methods/viaexpress-config/template.xml | 52 --------------- 4 files changed, 64 insertions(+), 133 deletions(-) create mode 100644 back/methods/viaexpress-config/template.ejs delete mode 100644 back/methods/viaexpress-config/template.xml diff --git a/back/methods/viaexpress-config/internationalExpedition.js b/back/methods/viaexpress-config/internationalExpedition.js index 75f44401f5..698bb1dac4 100644 --- a/back/methods/viaexpress-config/internationalExpedition.js +++ b/back/methods/viaexpress-config/internationalExpedition.js @@ -1,4 +1,5 @@ const axios = require('axios'); +const {DOMParser} = require('xmldom'); module.exports = Self => { Self.remoteMethod('internationalExpedition', { @@ -27,69 +28,17 @@ module.exports = Self => { }); const renderedXml = await models.ViaexpressConfig.renderer(expeditionFk); - // const renderedXml = ` - // - // - // - // - // 10 - // 1 - // 0 - // 2023-06-12 - // 0 - // E - // 0 - // 0 - // 0 - // 0 - // 0 - // - // - // 0 - // - // - // - // VERDNATURA LEVANTE SL - // FENOLLARS, 2 - // 46680 - // Algemesi - // Valencia - // - // 963677177 - // pako.natek@gmail.com - // - // - // ROSAMARY FLORISTERIA - // C SANTA ROSA,25 - // 03802 - // ALCOY - // ALCOY - // Alicante - // - // 653967489 - // correo@floristeriarosamary.com - // ES - // - // - // 16092 - // B97367486 - // VERDNA22 - // - // - // - // - // `; const response = await axios.post(`${viaexpressConfig.url}ServicioVxClientes.asmx`, renderedXml, { headers: { 'Content-Type': 'application/soap+xml; charset=utf-8' } }); - console.log(response); - const startTag = ''; - const endTag = ''; - const startIndex = response.data.indexOf(startTag) + startTag.length; - const endIndex = response.data.indexOf(endTag); - const referenciaVx = response.data.substring(startIndex, endIndex); + + const xmlString = response.data; + const parser = new DOMParser(); + const xmlDoc = parser.parseFromString(xmlString, 'text/xml'); + const referenciaVxElement = xmlDoc.getElementsByTagName('ReferenciaVx')[0]; + const referenciaVx = referenciaVxElement.textContent; return referenciaVx; }; diff --git a/back/methods/viaexpress-config/renderer.js b/back/methods/viaexpress-config/renderer.js index 588733174d..4014dd42d3 100644 --- a/back/methods/viaexpress-config/renderer.js +++ b/back/methods/viaexpress-config/renderer.js @@ -1,7 +1,5 @@ const fs = require('fs'); -const handlebars = require('handlebars'); -// const Vue = require('vue'); -// const renderer = require('vue-server-renderer').createRenderer(); +const ejs = require('ejs'); module.exports = Self => { Self.remoteMethod('renderer', { @@ -110,14 +108,10 @@ module.exports = Self => { }); const shipped = expedition.ticket().shipped; - const year = shipped.getFullYear(); - const month = shipped.getMonth() + 1; - const day = shipped.getDate(); - const date = `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`; const data = { defaultWeight: viaexpressConfig.defaultWeight, - date: date, // const date = new Date().toISOString(); + date: shipped.toISOString(), // const date = new Date().toISOString(); deliveryType: viaexpressConfig.deliveryType, senderName: expedition.ticket().company().client().socialName, senderStreet: expedition.ticket().company().client().defaultAddress().street, @@ -145,20 +139,8 @@ module.exports = Self => { passwordViaexpress: viaexpressConfig.passwordViaexpress }; - const templateXml = fs.readFileSync(__dirname + '/template.xml', 'utf-8'); - - // // Crea una instancia de Vue con los datos - // const vueInstance = new Vue({ - // data: data, - // template: templateXml, - // }); - - // // Renderiza la plantilla con los datos utilizando vue-server-renderer - // const renderer = createRenderer(); - // return renderer.renderToString(vueInstance); - - const compiledTemplate = handlebars.compile(templateXml); - const renderedHtml = compiledTemplate(data); - return renderedHtml; + const template = fs.readFileSync(__dirname + '/template.ejs', 'utf-8'); + const renderedXml = ejs.render(template, data); + return renderedXml; }; }; diff --git a/back/methods/viaexpress-config/template.ejs b/back/methods/viaexpress-config/template.ejs new file mode 100644 index 0000000000..e8b1f19776 --- /dev/null +++ b/back/methods/viaexpress-config/template.ejs @@ -0,0 +1,52 @@ + + + + + + <%= defaultWeight %> + 1 + 0 + <%= date %> + 0 + <%= deliveryType %> + 0 + 0 + 0 + 0 + 0 + + + 0 + + + + <%= senderName %> + <%= senderStreet %> + <%= senderPostalCode %> + <%= senderCity %> + <%= senderProvince %> + + <%= senderPhone %> + <%= senderEmail %> + + + <%= receiverName %> + <%= receiverStreet %> + <%= receiverPostalCode %> + <%= receiverCity %> + + <%= receiverProvince %> + + <%= receiverPhone %> + <%= receiverEmail %> + <%= receiverCountry %> + + + <%= clientViaexpress %> + <%= userViaexpress %> + <%= passwordViaexpress %> + + + + + diff --git a/back/methods/viaexpress-config/template.xml b/back/methods/viaexpress-config/template.xml deleted file mode 100644 index 141fb939ae..0000000000 --- a/back/methods/viaexpress-config/template.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - {{ defaultWeight }} - 1 - 0 - {{ date }} - 0 - {{ deliveryType }} - 0 - 0 - 0 - 0 - 0 - - - 0 - - - - {{ senderName }} - {{ senderStreet }} - {{ senderPostalCode }} - {{ senderCity }} - {{ senderProvince }} - - {{ senderPhone }} - {{ senderEmail }} - - - {{ receiverName }} - {{ receiverStreet }} - {{ receiverPostalCode }} - {{ receiverCity }} - - {{ receiverProvince }} - - {{ receiverPhone }} - {{ receiverEmail }} - {{ receiverCountry }} - - - {{ clientViaexpress }} - {{ userViaexpress }} - {{ passwordViaexpress }} - - - - - From 783d4c60c4d7e81e5cf99369944947fac7624502 Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 28 Jun 2023 13:02:47 +0200 Subject: [PATCH 17/38] refs #4734 delete module handlebars from package.json --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 857a7c1729..4358c86a70 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "ftps": "^1.2.0", "gm": "^1.25.0", "got": "^10.7.0", - "handlebars": "^4.7.7", "helmet": "^3.21.2", "i18n": "^0.8.4", "image-type": "^4.1.0", From 112d7a84e336b6242ff04a845faf256bb81b71b2 Mon Sep 17 00:00:00 2001 From: vicent Date: Thu, 13 Jul 2023 09:32:08 +0200 Subject: [PATCH 18/38] solved test --- back/methods/vn-user/specs/addAlias.spec.js | 68 ------------------- modules/ticket/front/descriptor-menu/index.js | 2 +- 2 files changed, 1 insertion(+), 69 deletions(-) delete mode 100644 back/methods/vn-user/specs/addAlias.spec.js diff --git a/back/methods/vn-user/specs/addAlias.spec.js b/back/methods/vn-user/specs/addAlias.spec.js deleted file mode 100644 index ef657a3a80..0000000000 --- a/back/methods/vn-user/specs/addAlias.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -const {models} = require('vn-loopback/server/server'); - -describe('VnUser addAlias()', () => { - const employeeId = 1; - const sysadminId = 66; - const developerId = 9; - const customerId = 2; - const mailAlias = 1; - it('should throw an error when user not has privileges', async() => { - const ctx = {req: {accessToken: {userId: employeeId}}}; - const tx = await models.VnUser.beginTransaction({}); - - let error; - try { - const options = {transaction: tx}; - - await models.VnUser.addAlias(ctx, employeeId, mailAlias, options); - - await tx.rollback(); - } catch (e) { - error = e; - await tx.rollback(); - } - - expect(error.message).toContain(`You don't have grant privilege`); - }); - - it('should throw an error when user has privileges but not has the role from user', async() => { - const ctx = {req: {accessToken: {userId: sysadminId}}}; - const tx = await models.VnUser.beginTransaction({}); - - let error; - try { - const options = {transaction: tx}; - - await models.VnUser.addAlias(ctx, employeeId, mailAlias, options); - - await tx.rollback(); - } catch (e) { - error = e; - await tx.rollback(); - } - - expect(error.message).toContain(`You cannot assign an alias that you are not assigned to`); - }); - - it('should add an alias', async() => { - const ctx = {req: {accessToken: {userId: developerId}}}; - const tx = await models.VnUser.beginTransaction({}); - - let result; - try { - const options = {transaction: tx}; - - const user = await models.VnUser.findById(developerId, null, options); - await user.updateAttribute('hasGrant', true, options); - - result = await models.VnUser.addAlias(ctx, customerId, mailAlias, options); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - } - - expect(result.mailAlias).toBe(mailAlias); - expect(result.account).toBe(customerId); - }); -}); diff --git a/modules/ticket/front/descriptor-menu/index.js b/modules/ticket/front/descriptor-menu/index.js index 0b47102acc..0fc8488cae 100644 --- a/modules/ticket/front/descriptor-menu/index.js +++ b/modules/ticket/front/descriptor-menu/index.js @@ -270,7 +270,7 @@ class Controller extends Section { }); } - return this.$http.post(`Tickets/invoiceTickets`, params) + return this.$http.post(`Tickets/invoiceTickets`, {ticketsIds: [this.id]}) .then(() => this.reload()) .then(() => this.vnApp.showSuccess(this.$t('Ticket invoiced'))); } From 834e4b3723d3d3c9ed569f1397a4d75d475a59e0 Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 18 Jul 2023 07:56:44 +0200 Subject: [PATCH 19/38] refs #4734 refactor: variables definindas --- back/methods/viaexpress-config/renderer.js | 40 +++++--------------- back/methods/viaexpress-config/template.ejs | 42 ++++++++++----------- back/models/viaexpress-config.json | 6 +-- db/changes/232601/00-viaexpress.sql | 6 +-- 4 files changed, 37 insertions(+), 57 deletions(-) diff --git a/back/methods/viaexpress-config/renderer.js b/back/methods/viaexpress-config/renderer.js index 4014dd42d3..e9abce5ca7 100644 --- a/back/methods/viaexpress-config/renderer.js +++ b/back/methods/viaexpress-config/renderer.js @@ -24,7 +24,7 @@ module.exports = Self => { const models = Self.app.models; const viaexpressConfig = await models.ViaexpressConfig.findOne({ - fields: ['clientViaexpress', 'userViaexpress', 'passwordViaexpress', 'defaultWeight', 'deliveryType'] + fields: ['client', 'user', 'password', 'defaultWeight', 'deliveryType'] }); const expedition = await models.Expedition.findOne({ @@ -107,36 +107,16 @@ module.exports = Self => { ] }); - const shipped = expedition.ticket().shipped; - + const ticket = expedition.ticket(); + const sender = ticket.company().client(); + const shipped = ticket.shipped.toISOString(); const data = { - defaultWeight: viaexpressConfig.defaultWeight, - date: shipped.toISOString(), // const date = new Date().toISOString(); - deliveryType: viaexpressConfig.deliveryType, - senderName: expedition.ticket().company().client().socialName, - senderStreet: expedition.ticket().company().client().defaultAddress().street, - senderPostalCode: expedition.ticket().company().client().defaultAddress().postalCode, - senderCity: expedition.ticket().company().client().defaultAddress().city, - senderProvince: expedition.ticket().company().client().defaultAddress().province().name, - senderPhone: expedition.ticket().company().client().defaultAddress().mobile - || expedition.ticket().company().client().defaultAddress().phone - || expedition.ticket().company().client().mobile - || expedition.ticket().company().client().phone, - senderEmail: expedition.ticket().company().client().email, - receiverName: expedition.ticket().address().nickname, - receiverStreet: expedition.ticket().address().street, - receiverPostalCode: expedition.ticket().address().postalCode, - receiverCity: expedition.ticket().address().city, - receiverProvince: expedition.ticket().address().province().name, - receiverPhone: expedition.ticket().address().mobile - || expedition.ticket().address().phone - || expedition.ticket().client().mobile - || expedition.ticket().client().phone, - receiverEmail: expedition.ticket().client().email, - receiverCountry: expedition.ticket().address().province().country().code, - clientViaexpress: viaexpressConfig.clientViaexpress, - userViaexpress: viaexpressConfig.userViaexpress, - passwordViaexpress: viaexpressConfig.passwordViaexpress + viaexpressConfig, + sender, + senderAddress: sender.defaultAddress(), + client: ticket.client(), + address: ticket.address(), + shipped }; const template = fs.readFileSync(__dirname + '/template.ejs', 'utf-8'); diff --git a/back/methods/viaexpress-config/template.ejs b/back/methods/viaexpress-config/template.ejs index e8b1f19776..0b6eb468c6 100644 --- a/back/methods/viaexpress-config/template.ejs +++ b/back/methods/viaexpress-config/template.ejs @@ -3,12 +3,12 @@ - <%= defaultWeight %> + <%= viaexpressConfig.defaultWeight %> 1 0 - <%= date %> + <%= shipped %> 0 - <%= deliveryType %> + <%= viaexpressConfig.deliveryType %> 0 0 0 @@ -20,31 +20,31 @@ - <%= senderName %> - <%= senderStreet %> - <%= senderPostalCode %> - <%= senderCity %> - <%= senderProvince %> + <%= sender.socialName %> + <%= senderAddress.street %> + <%= senderAddress.postalCode %> + <%= senderAddress.city %> + <%= senderAddress.province().name %> - <%= senderPhone %> - <%= senderEmail %> + <%= senderAddress.mobile || senderAddress.phone || sender.mobile || sender.phone %> + <%= sender.email %> - <%= receiverName %> - <%= receiverStreet %> - <%= receiverPostalCode %> - <%= receiverCity %> + <%= address.nickname %> + <%= address.street %> + <%= address.postalCode %> + <%= address.city %> - <%= receiverProvince %> + <%= address.province().name %> - <%= receiverPhone %> - <%= receiverEmail %> - <%= receiverCountry %> + <%= address.mobile || address.phone || client.mobile || client.phone %> + <%= client.email %> + <%= address.province().country().code %> - <%= clientViaexpress %> - <%= userViaexpress %> - <%= passwordViaexpress %> + <%= viaexpressConfig.client %> + <%= viaexpressConfig.user %> + <%= viaexpressConfig.password %> diff --git a/back/models/viaexpress-config.json b/back/models/viaexpress-config.json index 26d6c8e375..8df24201be 100644 --- a/back/models/viaexpress-config.json +++ b/back/models/viaexpress-config.json @@ -15,13 +15,13 @@ "type": "string", "required": true }, - "clientViaexpress": { + "client": { "type": "string" }, - "userViaexpress": { + "user": { "type": "string" }, - "passwordViaexpress": { + "password": { "type": "string" }, "defaultWeight": { diff --git a/db/changes/232601/00-viaexpress.sql b/db/changes/232601/00-viaexpress.sql index 9e3baa9fd5..42cf3b6479 100644 --- a/db/changes/232601/00-viaexpress.sql +++ b/db/changes/232601/00-viaexpress.sql @@ -1,9 +1,9 @@ CREATE TABLE `vn`.`viaexpressConfig` ( id int auto_increment NOT NULL, url varchar(100) NOT NULL, - clientViaexpress varchar(100) NOT NULL, - userViaexpress varchar(100) NOT NULL, - passwordViaexpress varchar(100) NOT NULL, + client varchar(100) NOT NULL, + user varchar(100) NOT NULL, + password varchar(100) NOT NULL, defaultWeight decimal(10,2) NOT NULL, deliveryType varchar(5) NOT NULL, CONSTRAINT viaexpressConfig_PK PRIMARY KEY (id) From 985e258529a0debad2e27172049fc0e91bc9ee13 Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 21 Jul 2023 12:33:14 +0200 Subject: [PATCH 20/38] refs #5769 fix(web-access): email rule --- back/methods/vn-user/privileges.js | 2 +- back/models/vn-user.js | 2 +- modules/client/front/web-access/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/back/methods/vn-user/privileges.js b/back/methods/vn-user/privileges.js index 690ce74a3f..08cfaaae88 100644 --- a/back/methods/vn-user/privileges.js +++ b/back/methods/vn-user/privileges.js @@ -47,7 +47,7 @@ module.exports = Self => { const user = await Self.findById(userId, {fields: ['hasGrant']}, myOptions); const userToUpdate = await Self.findById(id, { - fields: ['id', 'name', 'hasGrant', 'roleFk', 'password'], + fields: ['id', 'name', 'hasGrant', 'roleFk', 'password', 'email'], include: { relation: 'role', scope: { diff --git a/back/models/vn-user.js b/back/models/vn-user.js index a7ce120735..985f017a5e 100644 --- a/back/models/vn-user.js +++ b/back/models/vn-user.js @@ -20,7 +20,7 @@ module.exports = function(Self) { Self.validatesFormatOf('email', { message: 'Invalid email', allowNull: true, - allowBlank: true, + allowBlank: false, with: /^[\w|.|-]+@[\w|-]+(\.[\w|-]+)*(,[\w|.|-]+@[\w|-]+(\.[\w|-]+)*)*$/ }); diff --git a/modules/client/front/web-access/index.html b/modules/client/front/web-access/index.html index 74407ba5c3..bf3d34c795 100644 --- a/modules/client/front/web-access/index.html +++ b/modules/client/front/web-access/index.html @@ -39,7 +39,7 @@ label="Recovery email" ng-model="$ctrl.account.email" info="This email is used for user to regain access their account." - rule="VnUser.name"> + rule="VnUser.email"> From bf92c5d482ce4bf7a4055da56e279136f3651926 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 25 Jul 2023 15:00:08 +0200 Subject: [PATCH 21/38] refs #6059 validateLogin sync user --- back/models/vn-user.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/back/models/vn-user.js b/back/models/vn-user.js index 985f017a5e..68a556d773 100644 --- a/back/models/vn-user.js +++ b/back/models/vn-user.js @@ -115,6 +115,14 @@ module.exports = function(Self) { Self.validateLogin = async function(user, password) { let loginInfo = Object.assign({password}, Self.userUses(user)); token = await Self.login(loginInfo, 'user'); + + const userToken = await token.user.get(); + try { + await Self.app.models.Account.sync(userToken.name, password); + } catch (err) { + console.warn(err); + } + return {token: token.id, ttl: token.ttl}; }; From 2a0c363dc5443091d71df034da772032b56191e3 Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 26 Jul 2023 13:28:40 +0200 Subject: [PATCH 22/38] hotfix change model --- .../assets/files/{model.ezp => model.ezpx} | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename print/templates/email/printer-setup/assets/files/{model.ezp => model.ezpx} (95%) diff --git a/print/templates/email/printer-setup/assets/files/model.ezp b/print/templates/email/printer-setup/assets/files/model.ezpx similarity index 95% rename from print/templates/email/printer-setup/assets/files/model.ezp rename to print/templates/email/printer-setup/assets/files/model.ezpx index dba98e0ee9..739593447b 100644 --- a/print/templates/email/printer-setup/assets/files/model.ezp +++ b/print/templates/email/printer-setup/assets/files/model.ezpx @@ -539,9 +539,9 @@ 2 4 - + false - false + true 4294967295 5 W5 @@ -571,15 +571,15 @@ 2896 - 187 - 24 + 138 + 32 426 2896 - 187 - 24 + 138 + 32 426 2896 @@ -621,14 +621,14 @@ New label -Lang:(es-ES) OS:Microsoft Windows NT 10.0.22000.0(Win32NT) +Lang:(es-ES) OS:Microsoft Windows NT 10.0.19045.0(Win32NT) Mm 203 EZPL - GODEX G300#132207AB - None + 00000000 + COM1 USB 2886794855 9100 From 1277af1399ff877069a7f33840e1174f374ba11c Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 26 Jul 2023 13:53:15 +0200 Subject: [PATCH 23/38] hotfix mod path --- print/templates/email/printer-setup/attachments.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/print/templates/email/printer-setup/attachments.json b/print/templates/email/printer-setup/attachments.json index 1e1f710c3b..969fdd23a2 100644 --- a/print/templates/email/printer-setup/attachments.json +++ b/print/templates/email/printer-setup/attachments.json @@ -1,9 +1,9 @@ [ { - "filename": "model.ezp", + "filename": "model.ezpx", "component": "printer-setup", - "path": "/assets/files/model.ezp", - "cid": "model.ezp" + "path": "/assets/files/model.ezpx", + "cid": "model.ezpx" }, { "filename": "port.png", @@ -11,4 +11,4 @@ "path": "/assets/files/port.png", "cid": "port.png" } -] \ No newline at end of file +] From 29baa2f0c7d7998864863761adca7eb30b6608bc Mon Sep 17 00:00:00 2001 From: alexm Date: Thu, 27 Jul 2023 08:27:09 +0200 Subject: [PATCH 24/38] refs #6015 modify changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5928e9c48..8440e0f2fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - (General -> Iconos) Añadidos nuevos iconos -- (Clientes -> Razón social) Nuevas restricciones por pais +- (Clientes -> Razón social) Permite crear clientes con la misma razón social según el país ### Fixed From 65b9cadd9e6ed72d263c8a23e1efb0878069b4ca Mon Sep 17 00:00:00 2001 From: vicent Date: Thu, 27 Jul 2023 12:51:14 +0200 Subject: [PATCH 25/38] refs #5804 refactor: sustituido activeBuyers por getItemTypeWorker --- .../item/back/methods/item/activeBuyers.js | 44 ------------------- .../methods/item/specs/activeBuyers.spec.js | 24 ---------- modules/item/back/models/item.js | 1 - .../front/request-search-panel/index.html | 14 +++--- modules/item/front/search-panel/index.html | 12 ++--- .../ticket-request/getItemTypeWorker.js | 33 ++++++++------ .../specs/getItemTypeWorkers.spec.js | 6 +-- 7 files changed, 34 insertions(+), 100 deletions(-) delete mode 100644 modules/item/back/methods/item/activeBuyers.js delete mode 100644 modules/item/back/methods/item/specs/activeBuyers.spec.js diff --git a/modules/item/back/methods/item/activeBuyers.js b/modules/item/back/methods/item/activeBuyers.js deleted file mode 100644 index e16ff877b0..0000000000 --- a/modules/item/back/methods/item/activeBuyers.js +++ /dev/null @@ -1,44 +0,0 @@ -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; -const mergeFilters = require('vn-loopback/util/filter').mergeFilters; - -module.exports = Self => { - Self.remoteMethod('activeBuyers', { - description: 'Returns a list of buyers for the given item type', - accepts: [{ - arg: 'filter', - type: 'object', - description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string` - }], - returns: { - type: ['object'], - root: true - }, - http: { - path: `/activeBuyers`, - verb: 'GET' - } - }); - - Self.activeBuyers = async(filter, options) => { - const conn = Self.dataSource.connector; - const where = {isActive: true}; - const myOptions = {}; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - filter = mergeFilters(filter, {where}); - - let stmt = new ParameterizedSQL( - `SELECT DISTINCT w.id workerFk, w.firstName, w.lastName, u.name, u.nickname - FROM worker w - JOIN itemType it ON it.workerFk = w.id - JOIN account.user u ON u.id = w.id - JOIN item i ON i.typeFk = it.id`, - null, myOptions); - - stmt.merge(conn.makeSuffix(filter)); - - return conn.executeStmt(stmt); - }; -}; diff --git a/modules/item/back/methods/item/specs/activeBuyers.spec.js b/modules/item/back/methods/item/specs/activeBuyers.spec.js deleted file mode 100644 index 5bf36756fc..0000000000 --- a/modules/item/back/methods/item/specs/activeBuyers.spec.js +++ /dev/null @@ -1,24 +0,0 @@ -const models = require('vn-loopback/server/server').models; - -describe('Worker activeBuyers', () => { - it('should return the buyers in itemType as result', async() => { - const tx = await models.Item.beginTransaction({}); - - try { - const options = {transaction: tx}; - const filter = {}; - const result = await models.Item.activeBuyers(filter, options); - const firstWorker = result[0]; - const secondWorker = result[1]; - - expect(result.length).toEqual(2); - expect(firstWorker.nickname).toEqual('logisticBossNick'); - expect(secondWorker.nickname).toEqual('buyerNick'); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); -}); diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index b8baa97ea7..61c5c2588c 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -14,7 +14,6 @@ module.exports = Self => { require('../methods/item/getWasteByWorker')(Self); require('../methods/item/getWasteByItem')(Self); require('../methods/item/createIntrastat')(Self); - require('../methods/item/activeBuyers')(Self); require('../methods/item/buyerWasteEmail')(Self); require('../methods/item/labelPdf')(Self); diff --git a/modules/item/front/request-search-panel/index.html b/modules/item/front/request-search-panel/index.html index a766847760..9d35fbca4a 100644 --- a/modules/item/front/request-search-panel/index.html +++ b/modules/item/front/request-search-panel/index.html @@ -1,7 +1,7 @@
@@ -26,7 +26,7 @@ search-function="{firstName: $search}" value-field="id" where="{role: {inq: ['logistic', 'buyer']}}" - label="Atender"> + label="Buyer"> {{nickname}} @@ -57,7 +57,7 @@ {{firstName}} {{lastName}} - +
- - - - { - Self.remoteMethodCtx('getItemTypeWorker', { + Self.remoteMethod('getItemTypeWorker', { description: 'Returns the workers that appear in itemType', accessType: 'READ', accepts: [{ @@ -20,10 +22,9 @@ module.exports = Self => { } }); - Self.getItemTypeWorker = async(ctx, filter, options) => { + Self.getItemTypeWorker = async(filter, options) => { const myOptions = {}; const conn = Self.dataSource.connector; - let tx; if (typeof options == 'object') Object.assign(myOptions, options); @@ -33,25 +34,29 @@ module.exports = Self => { FROM itemType it JOIN worker w ON w.id = it.workerFk JOIN account.user u ON u.id = w.id`; + const stmt = new ParameterizedSQL(query); - let stmt = new ParameterizedSQL(query); - - if (filter.where) { - const value = filter.where.firstName; - const myFilter = { - where: {or: [ + filter.where = buildFilter(filter.where, (param, value) => { + switch (param) { + case 'firstName': + return {or: [ {'w.firstName': {like: `%${value}%`}}, {'w.lastName': {like: `%${value}%`}}, {'u.name': {like: `%${value}%`}}, {'u.nickname': {like: `%${value}%`}} - ]} - }; + ]}; + case 'id': + return {'w.id': value}; + } + }); - stmt.merge(conn.makeSuffix(myFilter)); - } + let myFilter = { + where: {'u.active': true} + }; - if (tx) await tx.commit(); + myFilter = mergeFilters(myFilter, filter); + stmt.merge(conn.makeSuffix(myFilter)); return conn.executeStmt(stmt); }; }; diff --git a/modules/ticket/back/methods/ticket-request/specs/getItemTypeWorkers.spec.js b/modules/ticket/back/methods/ticket-request/specs/getItemTypeWorkers.spec.js index ae5c508b6d..c57451c261 100644 --- a/modules/ticket/back/methods/ticket-request/specs/getItemTypeWorkers.spec.js +++ b/modules/ticket/back/methods/ticket-request/specs/getItemTypeWorkers.spec.js @@ -1,12 +1,10 @@ const models = require('vn-loopback/server/server').models; describe('ticket-request getItemTypeWorker()', () => { - const ctx = {req: {accessToken: {userId: 18}}}; - it('should return the buyer as result', async() => { const filter = {where: {firstName: 'buyer'}}; - const result = await models.TicketRequest.getItemTypeWorker(ctx, filter); + const result = await models.TicketRequest.getItemTypeWorker(filter); expect(result.length).toEqual(1); }); @@ -14,7 +12,7 @@ describe('ticket-request getItemTypeWorker()', () => { it('should return the workers at itemType as result', async() => { const filter = {}; - const result = await models.TicketRequest.getItemTypeWorker(ctx, filter); + const result = await models.TicketRequest.getItemTypeWorker(filter); expect(result.length).toBeGreaterThan(1); }); From 3bc3ffe1153644fc568d24176e6ca3590d36f491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 27 Jul 2023 13:40:39 +0200 Subject: [PATCH 26/38] refs #6077 Log-InvoiceInDueday-incorrecto --- .../invoiceIn/back/locale/invoiceIn/en.yml | 20 +++++++++++++++++++ .../invoiceIn/back/locale/invoiceIn/es.yml | 20 +++++++++++++++++++ .../back/locale/invoiceInDueDay/en.yml | 9 +++++++++ .../back/locale/invoiceInDueDay/es.yml | 9 +++++++++ .../invoiceIn/back/locale/invoiceInTax/en.yml | 12 +++++++++++ .../invoiceIn/back/locale/invoiceInTax/es.yml | 12 +++++++++++ 6 files changed, 82 insertions(+) create mode 100644 modules/invoiceIn/back/locale/invoiceIn/en.yml create mode 100644 modules/invoiceIn/back/locale/invoiceIn/es.yml create mode 100644 modules/invoiceIn/back/locale/invoiceInDueDay/en.yml create mode 100644 modules/invoiceIn/back/locale/invoiceInDueDay/es.yml create mode 100644 modules/invoiceIn/back/locale/invoiceInTax/en.yml create mode 100644 modules/invoiceIn/back/locale/invoiceInTax/es.yml diff --git a/modules/invoiceIn/back/locale/invoiceIn/en.yml b/modules/invoiceIn/back/locale/invoiceIn/en.yml new file mode 100644 index 0000000000..4110dcdbce --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceIn/en.yml @@ -0,0 +1,20 @@ +name: invoice in +columns: + id: id + serialNumber: serial number + serial: serial + supplierFk: supplier + issued: issued + supplierRef: supplierRef + isBooked: is booked + currencyFk: currency + created: created + companyFk: company + docFk: document + booked: booked + operated: operated + bookEntried: book entried + isVatDeductible: is VAT deductible + withholdingSageFk: withholding + expenceFkDeductible: expence deductible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceIn/es.yml b/modules/invoiceIn/back/locale/invoiceIn/es.yml new file mode 100644 index 0000000000..432b27cb33 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceIn/es.yml @@ -0,0 +1,20 @@ +name: factura recibida +columns: + id: id + serialNumber: número de serie + serial: serie + supplierFk: proveedor + issued: fecha emisión + supplierRef: referéncia proveedor + isBooked: facturado + currencyFk: moneda + created: creado + companyFk: empresa + docFk: documento + booked: fecha contabilización + operated: fecha entrega + bookEntried: fecha asiento + isVatDeductible: impuesto deducible + withholdingSageFk: código de retención + expenceFkDeductible: gasto deducible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml new file mode 100644 index 0000000000..5e42dfc664 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml @@ -0,0 +1,9 @@ +name: invoice in due day +columns: + id: id + invoiceInFk: invoice in + dueDated: due date + bankFk: bank + amount: amount + foreignValue : foreign amount + created: created diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml new file mode 100644 index 0000000000..168db9803b --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml @@ -0,0 +1,9 @@ +name: vencimientos factura recibida +columns: + id: id + invoiceInFk: factura + dueDated: fecha vto. + bankFk: banco + amount: importe + foreignValue : importe divisa + created: creado diff --git a/modules/invoiceIn/back/locale/invoiceInTax/en.yml b/modules/invoiceIn/back/locale/invoiceInTax/en.yml new file mode 100644 index 0000000000..86a9e42c3d --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInTax/en.yml @@ -0,0 +1,12 @@ +name: invoice in tax +colmns: + id: id + invoiceInFk: invoice in + taxCodeFk: tax + taxableBase: taxable base + expenceFk: expence + foreignValue: foreign amount + taxTypeSageFk: tax type + transactionTypeSageFk: transaction type + created: created + editorFk: editor diff --git a/modules/invoiceIn/back/locale/invoiceInTax/es.yml b/modules/invoiceIn/back/locale/invoiceInTax/es.yml new file mode 100644 index 0000000000..233c591e95 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInTax/es.yml @@ -0,0 +1,12 @@ +name: factura recibida impuesto +colmns: + id: id + invoiceInFk: factura recibida + taxCodeFk: código IVA + taxableBase: base imponible + expenceFk: código gasto + foreignValue: importe divisa + taxTypeSageFk: código impuesto + transactionTypeSageFk: código transacción + created: creado + editorFk: editor \ No newline at end of file From 1d4ce2c70342e01371143b317f80d5c17214c474 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 28 Jul 2023 12:24:24 +0200 Subject: [PATCH 27/38] refs #5804 fix: delete transaction --- .../ticket/back/methods/ticket-request/getItemTypeWorker.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/ticket/back/methods/ticket-request/getItemTypeWorker.js b/modules/ticket/back/methods/ticket-request/getItemTypeWorker.js index f160cfaaca..9ea859f7cf 100644 --- a/modules/ticket/back/methods/ticket-request/getItemTypeWorker.js +++ b/modules/ticket/back/methods/ticket-request/getItemTypeWorker.js @@ -22,13 +22,9 @@ module.exports = Self => { } }); - Self.getItemTypeWorker = async(filter, options) => { - const myOptions = {}; + Self.getItemTypeWorker = async filter => { const conn = Self.dataSource.connector; - if (typeof options == 'object') - Object.assign(myOptions, options); - const query = `SELECT DISTINCT u.id, u.nickname FROM itemType it From 4061f3e5ce87668745a74e04986aaee49c35e926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 28 Jul 2023 12:28:41 +0200 Subject: [PATCH 28/38] #refs 6077 espacios por tabulaciones --- .../invoiceIn/back/locale/invoiceIn/en.yml | 36 +++++++++---------- .../invoiceIn/back/locale/invoiceIn/es.yml | 36 +++++++++---------- .../back/locale/invoiceInDueDay/en.yml | 14 ++++---- .../back/locale/invoiceInDueDay/es.yml | 14 ++++---- .../invoiceIn/back/locale/invoiceInTax/en.yml | 20 +++++------ .../invoiceIn/back/locale/invoiceInTax/es.yml | 20 +++++------ 6 files changed, 70 insertions(+), 70 deletions(-) diff --git a/modules/invoiceIn/back/locale/invoiceIn/en.yml b/modules/invoiceIn/back/locale/invoiceIn/en.yml index 4110dcdbce..5aa81b9ff5 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/en.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/en.yml @@ -1,20 +1,20 @@ name: invoice in columns: - id: id - serialNumber: serial number - serial: serial - supplierFk: supplier - issued: issued - supplierRef: supplierRef - isBooked: is booked - currencyFk: currency - created: created - companyFk: company - docFk: document - booked: booked - operated: operated - bookEntried: book entried - isVatDeductible: is VAT deductible - withholdingSageFk: withholding - expenceFkDeductible: expence deductible - editorFk: editor \ No newline at end of file + id: id + serialNumber: serial number + serial: serial + supplierFk: supplier + issued: issued + supplierRef: supplierRef + isBooked: is booked + currencyFk: currency + created: created + companyFk: company + docFk: document + booked: booked + operated: operated + bookEntried: book entried + isVatDeductible: is VAT deductible + withholdingSageFk: withholding + expenceFkDeductible: expence deductible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceIn/es.yml b/modules/invoiceIn/back/locale/invoiceIn/es.yml index 432b27cb33..61f62f022e 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/es.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/es.yml @@ -1,20 +1,20 @@ name: factura recibida columns: - id: id - serialNumber: número de serie - serial: serie - supplierFk: proveedor - issued: fecha emisión - supplierRef: referéncia proveedor - isBooked: facturado - currencyFk: moneda - created: creado - companyFk: empresa - docFk: documento - booked: fecha contabilización - operated: fecha entrega - bookEntried: fecha asiento - isVatDeductible: impuesto deducible - withholdingSageFk: código de retención - expenceFkDeductible: gasto deducible - editorFk: editor \ No newline at end of file + id: id + serialNumber: número de serie + serial: serie + supplierFk: proveedor + issued: fecha emisión + supplierRef: referéncia proveedor + isBooked: facturado + currencyFk: moneda + created: creado + companyFk: empresa + docFk: documento + booked: fecha contabilización + operated: fecha entrega + bookEntried: fecha asiento + isVatDeductible: impuesto deducible + withholdingSageFk: código de retención + expenceFkDeductible: gasto deducible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml index 5e42dfc664..f01a0de46d 100644 --- a/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml @@ -1,9 +1,9 @@ name: invoice in due day columns: - id: id - invoiceInFk: invoice in - dueDated: due date - bankFk: bank - amount: amount - foreignValue : foreign amount - created: created + id: id + invoiceInFk: invoice in + dueDated: due date + bankFk: bank + amount: amount + foreignValue : foreign amount + created: created diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml index 168db9803b..34b20b37d8 100644 --- a/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml @@ -1,9 +1,9 @@ name: vencimientos factura recibida columns: - id: id - invoiceInFk: factura - dueDated: fecha vto. - bankFk: banco - amount: importe - foreignValue : importe divisa - created: creado + id: id + invoiceInFk: factura + dueDated: fecha vto. + bankFk: banco + amount: importe + foreignValue : importe divisa + created: creado diff --git a/modules/invoiceIn/back/locale/invoiceInTax/en.yml b/modules/invoiceIn/back/locale/invoiceInTax/en.yml index 86a9e42c3d..374f62e7dd 100644 --- a/modules/invoiceIn/back/locale/invoiceInTax/en.yml +++ b/modules/invoiceIn/back/locale/invoiceInTax/en.yml @@ -1,12 +1,12 @@ name: invoice in tax colmns: - id: id - invoiceInFk: invoice in - taxCodeFk: tax - taxableBase: taxable base - expenceFk: expence - foreignValue: foreign amount - taxTypeSageFk: tax type - transactionTypeSageFk: transaction type - created: created - editorFk: editor + id: id + invoiceInFk: invoice in + taxCodeFk: tax + taxableBase: taxable base + expenceFk: expence + foreignValue: foreign amount + taxTypeSageFk: tax type + transactionTypeSageFk: transaction type + created: created + editorFk: editor diff --git a/modules/invoiceIn/back/locale/invoiceInTax/es.yml b/modules/invoiceIn/back/locale/invoiceInTax/es.yml index 233c591e95..b20663dd4d 100644 --- a/modules/invoiceIn/back/locale/invoiceInTax/es.yml +++ b/modules/invoiceIn/back/locale/invoiceInTax/es.yml @@ -1,12 +1,12 @@ name: factura recibida impuesto colmns: - id: id - invoiceInFk: factura recibida - taxCodeFk: código IVA - taxableBase: base imponible - expenceFk: código gasto - foreignValue: importe divisa - taxTypeSageFk: código impuesto - transactionTypeSageFk: código transacción - created: creado - editorFk: editor \ No newline at end of file + id: id + invoiceInFk: factura recibida + taxCodeFk: código IVA + taxableBase: base imponible + expenceFk: código gasto + foreignValue: importe divisa + taxTypeSageFk: código impuesto + transactionTypeSageFk: código transacción + created: creado + editorFk: editor \ No newline at end of file From 136b401ede36eed3d0e3cc9025a429bf74d48ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 28 Jul 2023 14:17:50 +0200 Subject: [PATCH 29/38] refs #6077 espacios correctos --- .../invoiceIn/back/locale/invoiceIn/en.yml | 36 +++++++++---------- .../invoiceIn/back/locale/invoiceIn/es.yml | 36 +++++++++---------- .../back/locale/invoiceInDueDay/en.yml | 14 ++++---- .../back/locale/invoiceInDueDay/es.yml | 14 ++++---- .../invoiceIn/back/locale/invoiceInTax/en.yml | 22 ++++++------ .../invoiceIn/back/locale/invoiceInTax/es.yml | 22 ++++++------ 6 files changed, 72 insertions(+), 72 deletions(-) diff --git a/modules/invoiceIn/back/locale/invoiceIn/en.yml b/modules/invoiceIn/back/locale/invoiceIn/en.yml index 5aa81b9ff5..ec9a824b61 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/en.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/en.yml @@ -1,20 +1,20 @@ name: invoice in columns: - id: id - serialNumber: serial number - serial: serial - supplierFk: supplier - issued: issued - supplierRef: supplierRef - isBooked: is booked - currencyFk: currency - created: created - companyFk: company - docFk: document - booked: booked - operated: operated - bookEntried: book entried - isVatDeductible: is VAT deductible - withholdingSageFk: withholding - expenceFkDeductible: expence deductible - editorFk: editor \ No newline at end of file + id: id + serialNumber: serial number + serial: serial + supplierFk: supplier + issued: issued + supplierRef: supplierRef + isBooked: is booked + currencyFk: currency + created: created + companyFk: company + docFk: document + booked: booked + operated: operated + bookEntried: book entried + isVatDeductible: is VAT deductible + withholdingSageFk: withholding + expenceFkDeductible: expence deductible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceIn/es.yml b/modules/invoiceIn/back/locale/invoiceIn/es.yml index 61f62f022e..64e96b3792 100644 --- a/modules/invoiceIn/back/locale/invoiceIn/es.yml +++ b/modules/invoiceIn/back/locale/invoiceIn/es.yml @@ -1,20 +1,20 @@ name: factura recibida columns: - id: id - serialNumber: número de serie - serial: serie - supplierFk: proveedor - issued: fecha emisión - supplierRef: referéncia proveedor - isBooked: facturado - currencyFk: moneda - created: creado - companyFk: empresa - docFk: documento - booked: fecha contabilización - operated: fecha entrega - bookEntried: fecha asiento - isVatDeductible: impuesto deducible - withholdingSageFk: código de retención - expenceFkDeductible: gasto deducible - editorFk: editor \ No newline at end of file + id: id + serialNumber: número de serie + serial: serie + supplierFk: proveedor + issued: fecha emisión + supplierRef: referéncia proveedor + isBooked: facturado + currencyFk: moneda + created: creado + companyFk: empresa + docFk: documento + booked: fecha contabilización + operated: fecha entrega + bookEntried: fecha asiento + isVatDeductible: impuesto deducible + withholdingSageFk: código de retención + expenceFkDeductible: gasto deducible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml index f01a0de46d..7a6c0dfaf6 100644 --- a/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml @@ -1,9 +1,9 @@ name: invoice in due day columns: - id: id - invoiceInFk: invoice in - dueDated: due date - bankFk: bank - amount: amount - foreignValue : foreign amount - created: created + id: id + invoiceInFk: invoice in + dueDated: due date + bankFk: bank + amount: amount + foreignValue : foreign amount + created: created diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml index 34b20b37d8..993437b052 100644 --- a/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml @@ -1,9 +1,9 @@ name: vencimientos factura recibida columns: - id: id - invoiceInFk: factura - dueDated: fecha vto. - bankFk: banco - amount: importe - foreignValue : importe divisa - created: creado + id: id + invoiceInFk: factura + dueDated: fecha vto. + bankFk: banco + amount: importe + foreignValue : importe divisa + created: creado diff --git a/modules/invoiceIn/back/locale/invoiceInTax/en.yml b/modules/invoiceIn/back/locale/invoiceInTax/en.yml index 374f62e7dd..c0d12c37df 100644 --- a/modules/invoiceIn/back/locale/invoiceInTax/en.yml +++ b/modules/invoiceIn/back/locale/invoiceInTax/en.yml @@ -1,12 +1,12 @@ name: invoice in tax -colmns: - id: id - invoiceInFk: invoice in - taxCodeFk: tax - taxableBase: taxable base - expenceFk: expence - foreignValue: foreign amount - taxTypeSageFk: tax type - transactionTypeSageFk: transaction type - created: created - editorFk: editor +columns: + id: id + invoiceInFk: invoice in + taxCodeFk: tax + taxableBase: taxable base + expenceFk: expence + foreignValue: foreign amount + taxTypeSageFk: tax type + transactionTypeSageFk: transaction type + created: created + editorFk: editor diff --git a/modules/invoiceIn/back/locale/invoiceInTax/es.yml b/modules/invoiceIn/back/locale/invoiceInTax/es.yml index b20663dd4d..7cb847ed86 100644 --- a/modules/invoiceIn/back/locale/invoiceInTax/es.yml +++ b/modules/invoiceIn/back/locale/invoiceInTax/es.yml @@ -1,12 +1,12 @@ name: factura recibida impuesto -colmns: - id: id - invoiceInFk: factura recibida - taxCodeFk: código IVA - taxableBase: base imponible - expenceFk: código gasto - foreignValue: importe divisa - taxTypeSageFk: código impuesto - transactionTypeSageFk: código transacción - created: creado - editorFk: editor \ No newline at end of file +columns: + id: id + invoiceInFk: factura recibida + taxCodeFk: código IVA + taxableBase: base imponible + expenceFk: código gasto + foreignValue: importe divisa + taxTypeSageFk: código impuesto + transactionTypeSageFk: código transacción + created: creado + editorFk: editor \ No newline at end of file From e253dd79822b068849a43dc78f5167bfb15388a8 Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 28 Jul 2023 14:39:01 +0200 Subject: [PATCH 30/38] refs #5351 fix(worker_model): remove required userFk --- modules/worker/back/models/worker.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json index 6d23c1b665..6e1371055c 100644 --- a/modules/worker/back/models/worker.json +++ b/modules/worker/back/models/worker.json @@ -25,8 +25,7 @@ "type" : "string" }, "userFk": { - "type" : "number", - "required": true + "type" : "number" }, "bossFk": { "type" : "number" From 81dc163819fb45e288d004378f7f916cb7e7b5d1 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 28 Jul 2023 14:40:03 +0200 Subject: [PATCH 31/38] ya no muestra error en el front --- modules/worker/front/card/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/worker/front/card/index.js b/modules/worker/front/card/index.js index 0bf9ae5c4a..b8b533c5d2 100644 --- a/modules/worker/front/card/index.js +++ b/modules/worker/front/card/index.js @@ -36,7 +36,7 @@ class Controller extends ModuleCard { this.$http.get(`Workers/${this.$params.id}`, {filter}) .then(res => this.worker = res.data), this.$http.get(`Workers/${this.$params.id}/activeContract`) - .then(res => this.hasWorkCenter = res.data.workCenterFk) + .then(res => this.hasWorkCenter = res.data?.workCenterFk) ]); } } From 40607a42cfc37606bf4496dc1d759d1e6d4757a3 Mon Sep 17 00:00:00 2001 From: carlossa Date: Tue, 1 Aug 2023 10:25:44 +0200 Subject: [PATCH 32/38] hotfix-loadData --- .../front/department/descriptor/index.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/modules/worker/front/department/descriptor/index.js b/modules/worker/front/department/descriptor/index.js index 5ab1059d91..388a7f776b 100644 --- a/modules/worker/front/department/descriptor/index.js +++ b/modules/worker/front/department/descriptor/index.js @@ -32,6 +32,28 @@ class Controller extends Descriptor { this.vnApp.showSuccess(this.$t('Department deleted.')); }); } + + loadData() { + const filter = { + fields: ['id', 'name', 'code', 'workerFk', 'isProduction', 'chatName', + 'isTeleworking', 'notificationEmail', 'hasToRefill', 'hasToSendMail', 'hasToMistake', 'clientFk'], + include: [ + {relation: 'client', + scope: { + fields: ['id', 'name'] + }}, + { + relation: 'worker', + scope: { + fields: ['id', 'firstName', 'lastName'] + } + } + ] + }; + + return this.getData(`Departments/${this.id}`, {filter}) + .then(res => this.entity = res.data); + } } Controller.$inject = ['$element', '$scope', '$rootScope']; From 30c5e8d8ccd638e57e85f35f55de8f16fe7c1103 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 1 Aug 2023 11:11:29 +0200 Subject: [PATCH 33/38] hotFix(canBeInvoiced): no de vuelve error si hay mas de un ticket y uno esta a 0 --- modules/ticket/back/methods/ticket/canBeInvoiced.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ticket/back/methods/ticket/canBeInvoiced.js b/modules/ticket/back/methods/ticket/canBeInvoiced.js index 0f6cb476be..348f02348b 100644 --- a/modules/ticket/back/methods/ticket/canBeInvoiced.js +++ b/modules/ticket/back/methods/ticket/canBeInvoiced.js @@ -67,7 +67,7 @@ module.exports = function(Self) { throw new UserError(`This ticket is already invoiced`); const priceZero = ticket.totalWithVat == 0; - if (priceZero) + if (ticketsIds.length == 1 && priceZero) throw new UserError(`A ticket with an amount of zero can't be invoiced`); }); From 56cd94feaa8d0261054d4600761f0243d4b46025 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 2 Aug 2023 13:26:42 +0200 Subject: [PATCH 34/38] refs #5843 fix(timeControl_filter): not use userFk --- modules/worker/back/methods/worker-time-control/filter.js | 4 ++-- modules/worker/front/time-control/index.html | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/modules/worker/back/methods/worker-time-control/filter.js b/modules/worker/back/methods/worker-time-control/filter.js index 041c6cbfbd..6d08802536 100644 --- a/modules/worker/back/methods/worker-time-control/filter.js +++ b/modules/worker/back/methods/worker-time-control/filter.js @@ -36,9 +36,9 @@ module.exports = Self => { if (isSubordinate === false) throw new UserError(`You don't have enough privileges`); - const subordinate = await Worker.findById(ctx.args.workerFk); + const subordinate = await Worker.findById(ctx.args.workerFk, {fields: ['id']}); filter = mergeFilters(filter, {where: { - userFk: subordinate.userFk + userFk: subordinate.id }}); return Self.find(filter); diff --git a/modules/worker/front/time-control/index.html b/modules/worker/front/time-control/index.html index 760b0dafcb..b77acbddcb 100644 --- a/modules/worker/front/time-control/index.html +++ b/modules/worker/front/time-control/index.html @@ -4,7 +4,7 @@ filter="::$ctrl.filter" data="$ctrl.hours"> -
+
@@ -106,12 +106,6 @@
-
- Autonomous worker -
From 29fe1c0c84f59ce37b81759d4e123a5ee860ff1c Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 2 Aug 2023 13:55:01 +0200 Subject: [PATCH 35/38] refs #5325 displaySearch return if not has search row --- front/core/components/smart-table/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/front/core/components/smart-table/index.js b/front/core/components/smart-table/index.js index c3b927c62b..63a9f64883 100644 --- a/front/core/components/smart-table/index.js +++ b/front/core/components/smart-table/index.js @@ -339,8 +339,9 @@ export default class SmartTable extends Component { if (!header) return; const tbody = this.element.querySelector('tbody'); - const columns = header.querySelectorAll('th'); + if (!tbody) return; + const columns = header.querySelectorAll('th'); const hasSearchRow = tbody.querySelector('tr#searchRow'); if (hasSearchRow) { if (this.$inputsScope) From 3d200ed64b8bdbf12a6da6f1d977bacfc3e9e5ab Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 2 Aug 2023 13:59:56 +0200 Subject: [PATCH 36/38] changeLog correct version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de66fe9289..2f935f7861 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [2330.01] - 2023-07-27 +## [2332.01] - 2023-08-09 ### Added From ca34065e899257be75c14ede0b25b7c260529c92 Mon Sep 17 00:00:00 2001 From: alexm Date: Thu, 3 Aug 2023 09:17:32 +0200 Subject: [PATCH 37/38] refs #6093 deploy(2332): dev to test --- CHANGELOG.md | 4 ++++ db/changes/{232601 => 233201}/00-acl_viaexpressConfig.sql | 0 db/changes/{232601 => 233201}/00-viaexpress.sql | 0 3 files changed, 4 insertions(+) rename db/changes/{232601 => 233201}/00-acl_viaexpressConfig.sql (100%) rename db/changes/{232601 => 233201}/00-viaexpress.sql (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f935f7861..73520a6db8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [2332.01] - 2023-08-09 ### Added +- (Trabajadores -> Gestión documental) Soporte para Docuware +- (General -> Agencia) Soporte para Viaexpress ### Changed +- (General -> Tickets) Devuelve el motivo por el cual no es editable +- (Desplegables -> Trabajadores) Mejorados ### Fixed diff --git a/db/changes/232601/00-acl_viaexpressConfig.sql b/db/changes/233201/00-acl_viaexpressConfig.sql similarity index 100% rename from db/changes/232601/00-acl_viaexpressConfig.sql rename to db/changes/233201/00-acl_viaexpressConfig.sql diff --git a/db/changes/232601/00-viaexpress.sql b/db/changes/233201/00-viaexpress.sql similarity index 100% rename from db/changes/232601/00-viaexpress.sql rename to db/changes/233201/00-viaexpress.sql From 4628450240c99ddbafa958b232e14c6791ca80ec Mon Sep 17 00:00:00 2001 From: alexm Date: Thu, 3 Aug 2023 09:20:03 +0200 Subject: [PATCH 38/38] refs #6093 deploy: 2334 init version --- CHANGELOG.md | 9 +++++++++ db/changes/233401/.gitkeep | 0 package-lock.json | 2 +- package.json | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 db/changes/233401/.gitkeep diff --git a/CHANGELOG.md b/CHANGELOG.md index 73520a6db8..80d8517dea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2334.01] - 2023-08-24 + +### Added + +### Changed + +### Fixed + + ## [2332.01] - 2023-08-09 ### Added diff --git a/db/changes/233401/.gitkeep b/db/changes/233401/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package-lock.json b/package-lock.json index 5506075b9d..f87e3f64b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "salix-back", - "version": "23.32.01", + "version": "23.34.01", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 37e39d5a5c..2aa37379ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salix-back", - "version": "23.32.01", + "version": "23.34.01", "author": "Verdnatura Levante SL", "description": "Salix backend", "license": "GPL-3.0",