From 42df7114640289156b9416778e608fc716247431 Mon Sep 17 00:00:00 2001 From: pablone Date: Sun, 15 Oct 2023 11:15:07 +0200 Subject: [PATCH 001/456] refs #6130 --- commitlint.config.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 commitlint.config.js diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 000000000..28fe5c5bf --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1 @@ +module.exports = {extends: ['@commitlint/config-conventional']} From 38ee64d8f120669a16da7548aa3d8d54a1024169 Mon Sep 17 00:00:00 2001 From: pablone Date: Sun, 15 Oct 2023 11:15:35 +0200 Subject: [PATCH 002/456] refs #6131 --- commitlint.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commitlint.config.js b/commitlint.config.js index 28fe5c5bf..3347cb961 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1 +1 @@ -module.exports = {extends: ['@commitlint/config-conventional']} +module.exports = {extends: ['@commitlint/config-conventional']}; From a2f843f4e2aad6a09c166afa6b5fcf030c95f003 Mon Sep 17 00:00:00 2001 From: pablone Date: Sun, 15 Oct 2023 11:21:13 +0200 Subject: [PATCH 003/456] refs #6130 --- .husky/commit-msg | 4 ++++ package-lock.json | 22 ++++++++++++++++++++++ package.json | 1 + 3 files changed, 27 insertions(+) create mode 100755 .husky/commit-msg diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 000000000..c160a7712 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx --no -- commitlint --edit ${1} diff --git a/package-lock.json b/package-lock.json index c3f88bc2c..96db6a921 100644 --- a/package-lock.json +++ b/package-lock.json @@ -78,6 +78,7 @@ "html-loader": "^0.4.5", "html-loader-jest": "^0.2.1", "html-webpack-plugin": "^5.5.1", + "husky": "^8.0.3", "identity-obj-proxy": "^3.0.0", "jasmine": "^5.0.0", "jasmine-reporters": "^2.4.0", @@ -11721,6 +11722,21 @@ "ms": "^2.0.0" } }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/i18n": { "version": "0.8.6", "integrity": "sha512-aMsJq8i1XXrb+BBsgmJBwak9mr69zPEIAUPb6c5yw2G/O4k1Q52lBxL+agZdQDN/RGf1ylQzrCswsOOgIiC1FA==", @@ -36379,6 +36395,12 @@ "ms": "^2.0.0" } }, + "husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true + }, "i18n": { "version": "0.8.6", "integrity": "sha512-aMsJq8i1XXrb+BBsgmJBwak9mr69zPEIAUPb6c5yw2G/O4k1Q52lBxL+agZdQDN/RGf1ylQzrCswsOOgIiC1FA==", diff --git a/package.json b/package.json index 3320705f5..21e728253 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,7 @@ "html-loader": "^0.4.5", "html-loader-jest": "^0.2.1", "html-webpack-plugin": "^5.5.1", + "husky": "^8.0.3", "identity-obj-proxy": "^3.0.0", "jasmine": "^5.0.0", "jasmine-reporters": "^2.4.0", From a0eb6d0399d002167cfdb81502e3314b621cd8db Mon Sep 17 00:00:00 2001 From: pablone Date: Sun, 15 Oct 2023 11:33:05 +0200 Subject: [PATCH 004/456] feat(git): add commit lint refs#6130 --- .husky/commit-msg | 2 +- package.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.husky/commit-msg b/.husky/commit-msg index c160a7712..482222a2b 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -npx --no -- commitlint --edit ${1} +npm run commitlint ${1} diff --git a/package.json b/package.json index 21e728253..a2da79062 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,8 @@ "test:front": "jest --watch", "back": "nodemon --inspect -w modules ./node_modules/gulp/bin/gulp.js back", "lint": "eslint ./ --cache --ignore-pattern .gitignore", - "docker": "docker build --progress=plain -t salix-db ./db" + "docker": "docker build --progress=plain -t salix-db ./db", + "commitlint": "commitlint --edit" }, "jest": { "projects": [ From 597c5bd7500aac75f5d13dbf25ab63d609025e6a Mon Sep 17 00:00:00 2001 From: pablone Date: Sun, 15 Oct 2023 11:35:15 +0200 Subject: [PATCH 005/456] feat(git): add commit lint refs #6130 --- modules/claim/front/basic-data/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/claim/front/basic-data/index.html b/modules/claim/front/basic-data/index.html index 10aa7623a..308c069b6 100644 --- a/modules/claim/front/basic-data/index.html +++ b/modules/claim/front/basic-data/index.html @@ -17,7 +17,7 @@ label="Client" ng-model="$ctrl.claim.client.name" readonly="true"> - + Date: Sun, 15 Oct 2023 11:38:27 +0200 Subject: [PATCH 006/456] fix(claim): remove blank space refs #6130 --- modules/claim/front/basic-data/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/claim/front/basic-data/index.html b/modules/claim/front/basic-data/index.html index 308c069b6..10aa7623a 100644 --- a/modules/claim/front/basic-data/index.html +++ b/modules/claim/front/basic-data/index.html @@ -17,7 +17,7 @@ label="Client" ng-model="$ctrl.claim.client.name" readonly="true"> - + Date: Thu, 9 Nov 2023 07:56:35 +0100 Subject: [PATCH 007/456] =?UTF-8?q?refactor(printer-notification):=20refs?= =?UTF-8?q?=20#6005=20refactor=20de=20la=20notificaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../234601/00-sectorBackUpLabelerFk.sql | 19 +++++++++++++++++++ db/dump/fixtures.sql | 15 +++++++-------- modules/shelving/back/models/sector.json | 2 +- .../methods/operator/spec/operator.spec.js | 2 +- modules/worker/back/models/operator.js | 10 +++++----- .../assets/css/import.js | 0 .../backup-printer-selected.html | 14 ++++++++++++++ .../backup-printer-selected.js} | 4 ++-- .../backup-printer-selected/locale/en.yml | 3 +++ .../backup-printer-selected/locale/es.yml | 3 +++ .../sql/printer.sql | 3 ++- .../backup-printer-selected/sql/sector.sql | 5 +++++ .../sql/worker.sql | 0 .../not-main-printer-configured/locale/en.yml | 3 --- .../not-main-printer-configured/locale/es.yml | 3 --- .../not-main-printer-configured.html | 8 -------- .../sql/sector.sql | 3 --- 17 files changed, 62 insertions(+), 35 deletions(-) create mode 100644 db/changes/234601/00-sectorBackUpLabelerFk.sql rename print/templates/email/{not-main-printer-configured => backup-printer-selected}/assets/css/import.js (100%) create mode 100644 print/templates/email/backup-printer-selected/backup-printer-selected.html rename print/templates/email/{not-main-printer-configured/not-main-printer-configured.js => backup-printer-selected/backup-printer-selected.js} (92%) create mode 100644 print/templates/email/backup-printer-selected/locale/en.yml create mode 100644 print/templates/email/backup-printer-selected/locale/es.yml rename print/templates/email/{not-main-printer-configured => backup-printer-selected}/sql/printer.sql (63%) create mode 100644 print/templates/email/backup-printer-selected/sql/sector.sql rename print/templates/email/{not-main-printer-configured => backup-printer-selected}/sql/worker.sql (100%) delete mode 100644 print/templates/email/not-main-printer-configured/locale/en.yml delete mode 100644 print/templates/email/not-main-printer-configured/locale/es.yml delete mode 100644 print/templates/email/not-main-printer-configured/not-main-printer-configured.html delete mode 100644 print/templates/email/not-main-printer-configured/sql/sector.sql diff --git a/db/changes/234601/00-sectorBackUpLabelerFk.sql b/db/changes/234601/00-sectorBackUpLabelerFk.sql new file mode 100644 index 000000000..ac512493c --- /dev/null +++ b/db/changes/234601/00-sectorBackUpLabelerFk.sql @@ -0,0 +1,19 @@ +ALTER TABLE `vn`.`sector` CHANGE `mainPrinterFk` `backupPrinterFk` tinyint(3) unsigned DEFAULT NULL NULL; + +ALTER TABLE `util`.`notificationSubscription` DROP FOREIGN KEY `notificationSubscription_ibfk_1`; +ALTER TABLE `util`.`notificationQueue` DROP FOREIGN KEY `nnotificationQueue_ibfk_1`; +ALTER TABLE `util`.`notificationAcl` DROP FOREIGN KEY `notificationAcl_ibfk_1`; + +ALTER TABLE `util`.`notification` MODIFY COLUMN `id` int(11) auto_increment NOT NULL; + +ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`); +ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`name`); +ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`); + +DELETE FROM `util`.`notification` + WHERE `name` = 'not-main-printer-configured'; + +INSERT INTO `util`.`notification` + SET `id` = 15, + `name` = 'backup-printer-selected', + `description` = 'The worker has selected the backup printer for their sector'; diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index d70279e7d..0fab05bda 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -174,19 +174,16 @@ INSERT INTO `vn`.`warehouse`(`id`, `name`, `code`, `isComparative`, `isInventory (13, 'Inventory', 'inv', 1, 1, 1, 0, 0, 0, 2, 1, 0), (60, 'Algemesi', NULL, 1, 1, 1, 0, 0, 0, 2, 1, 0); - -INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `isPreviousPreparedByPacking`, `code`) - VALUES - (1, 'First sector', 1, 1, 'FIRST'), - (2, 'Second sector', 2, 0, 'SECOND'); - INSERT INTO `vn`.`printer` (`id`, `name`, `path`, `isLabeler`, `sectorFk`, `ipAddress`) VALUES (1, 'printer1', 'path1', 0, 1 , NULL), (2, 'printer2', 'path2', 1, 1 , NULL), (4, 'printer4', 'path4', 0, NULL, '10.1.10.4'); -UPDATE `vn`.`sector` SET mainPrinterFk = 1 WHERE id = 1; +INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `isPreviousPreparedByPacking`, `code`, `backupPrinterFk`) + VALUES + (1, 'First sector', 1, 1, 'FIRST', 1), + (2, 'Second sector', 2, 0, 'SECOND', NULL); INSERT INTO `vn`.`worker`(`id`, `code`, `firstName`, `lastName`,`bossFk`, `phone`) VALUES @@ -2780,11 +2777,13 @@ INSERT INTO `util`.`notification` (`id`, `name`, `description`) VALUES (1, 'print-email', 'notification fixture one'), (2, 'invoice-electronic', 'A electronic invoice has been generated'), - (3, 'not-main-printer-configured', 'A printer distinct than main has been configured'), (4, 'supplier-pay-method-update', 'A supplier pay method has been updated'), (5, 'modified-entry', 'An entry has been modified'), (6, 'book-entry-deleted', 'accounting entries deleted'); +INSERT IGNORE INTO `util`.`notification` (`id`, `name`, `description`) + VALUES (3, 'backup-printer-selected', 'A printer distinct than main has been configured'); + INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) VALUES (1, 9), diff --git a/modules/shelving/back/models/sector.json b/modules/shelving/back/models/sector.json index 47d66bd8d..36a25ed3b 100644 --- a/modules/shelving/back/models/sector.json +++ b/modules/shelving/back/models/sector.json @@ -56,7 +56,7 @@ "type": "number", "required": false }, - "mainPrinterFk": { + "backupPrinterFk": { "type": "number", "required": false }, diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index 1253be474..2d402b0d1 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -4,7 +4,7 @@ describe('Operator', () => { const authorFk = 9; const sectorId = 1; const mainPrinter = 1; - const notificationName = 'not-main-printer-configured'; + const notificationName = 'backup-printer-selected'; const operator = { workerFk: 1, trainFk: 1, diff --git a/modules/worker/back/models/operator.js b/modules/worker/back/models/operator.js index db1ac7e49..f51a6431c 100644 --- a/modules/worker/back/models/operator.js +++ b/modules/worker/back/models/operator.js @@ -1,5 +1,5 @@ module.exports = function(Self) { - Self.observe('after save', async function(ctx) { + Self.observe('after save', async ctx => { const instance = ctx.data || ctx.instance; const models = Self.app.models; const options = ctx.options; @@ -7,13 +7,13 @@ module.exports = function(Self) { if (!instance?.sectorFk || !instance?.labelerFk) return; const sector = await models.Sector.findById(instance.sectorFk, { - fields: ['mainPrinterFk'] + fields: ['backupPrinterFk'] }, options); - if (sector.mainPrinterFk && sector.mainPrinterFk != instance.labelerFk) { - const userId = ctx.options.accessToken.userId; + if (sector.backupPrinterFk && sector.backupPrinterFk == instance.labelerFk) { + const {userId} = ctx.options.accessToken; await models.NotificationQueue.create({ - notificationFk: 'not-main-printer-configured', + notificationFk: 'backup-printer-selected', authorFk: userId, params: JSON.stringify( { diff --git a/print/templates/email/not-main-printer-configured/assets/css/import.js b/print/templates/email/backup-printer-selected/assets/css/import.js similarity index 100% rename from print/templates/email/not-main-printer-configured/assets/css/import.js rename to print/templates/email/backup-printer-selected/assets/css/import.js diff --git a/print/templates/email/backup-printer-selected/backup-printer-selected.html b/print/templates/email/backup-printer-selected/backup-printer-selected.html new file mode 100644 index 000000000..51fb41773 --- /dev/null +++ b/print/templates/email/backup-printer-selected/backup-printer-selected.html @@ -0,0 +1,14 @@ + +
+
+

{{ $t('title') }}

+

+

+
+
diff --git a/print/templates/email/not-main-printer-configured/not-main-printer-configured.js b/print/templates/email/backup-printer-selected/backup-printer-selected.js similarity index 92% rename from print/templates/email/not-main-printer-configured/not-main-printer-configured.js rename to print/templates/email/backup-printer-selected/backup-printer-selected.js index c381991fa..0e56396db 100755 --- a/print/templates/email/not-main-printer-configured/not-main-printer-configured.js +++ b/print/templates/email/backup-printer-selected/backup-printer-selected.js @@ -2,7 +2,7 @@ const Component = require(`vn-print/core/component`); const emailBody = new Component('email-body'); module.exports = { - name: 'not-main-printer-configured', + name: 'backup-printer-selected', async serverPrefetch() { this.sector = await this.findOneFromDef('sector', [this.sectorId]); @@ -10,7 +10,7 @@ module.exports = { throw new Error('Something went wrong'); this.labeler = await this.findOneFromDef('printer', [this.labelerId]); - this.mainPrinter = await this.findOneFromDef('printer', [this.sector.mainPrinterFk]); + this.mainPrinter = await this.findOneFromDef('printer', [this.sector.backupPrinterFk]); this.worker = await this.findOneFromDef('worker', [this.workerId]); }, components: { diff --git a/print/templates/email/backup-printer-selected/locale/en.yml b/print/templates/email/backup-printer-selected/locale/en.yml new file mode 100644 index 000000000..917881641 --- /dev/null +++ b/print/templates/email/backup-printer-selected/locale/en.yml @@ -0,0 +1,3 @@ +subject: Not main printer configured +title: Not main printer configured +description: 'The worker #{0} is using the backup printer {1} for their sector {2}.' diff --git a/print/templates/email/backup-printer-selected/locale/es.yml b/print/templates/email/backup-printer-selected/locale/es.yml new file mode 100644 index 000000000..a250ba20f --- /dev/null +++ b/print/templates/email/backup-printer-selected/locale/es.yml @@ -0,0 +1,3 @@ +subject: Configurada impresora no principal +title: Configurada impresora no principal +description: 'El trabajador #{0} esta utilizando la impresora de repuesto {1} su sector {2}.' diff --git a/print/templates/email/not-main-printer-configured/sql/printer.sql b/print/templates/email/backup-printer-selected/sql/printer.sql similarity index 63% rename from print/templates/email/not-main-printer-configured/sql/printer.sql rename to print/templates/email/backup-printer-selected/sql/printer.sql index 265818129..2a98a8f08 100644 --- a/print/templates/email/not-main-printer-configured/sql/printer.sql +++ b/print/templates/email/backup-printer-selected/sql/printer.sql @@ -1,3 +1,4 @@ -SELECT id, name +SELECT id, + name FROM vn.printer WHERE id = ? diff --git a/print/templates/email/backup-printer-selected/sql/sector.sql b/print/templates/email/backup-printer-selected/sql/sector.sql new file mode 100644 index 000000000..9514c4e38 --- /dev/null +++ b/print/templates/email/backup-printer-selected/sql/sector.sql @@ -0,0 +1,5 @@ +SELECT id, + description, + backupPrinterFk + FROM vn.sector + WHERE id = ? diff --git a/print/templates/email/not-main-printer-configured/sql/worker.sql b/print/templates/email/backup-printer-selected/sql/worker.sql similarity index 100% rename from print/templates/email/not-main-printer-configured/sql/worker.sql rename to print/templates/email/backup-printer-selected/sql/worker.sql diff --git a/print/templates/email/not-main-printer-configured/locale/en.yml b/print/templates/email/not-main-printer-configured/locale/en.yml deleted file mode 100644 index 2a3051145..000000000 --- a/print/templates/email/not-main-printer-configured/locale/en.yml +++ /dev/null @@ -1,3 +0,0 @@ -subject: Not main printer configured -title: Not main printer configured -description: 'Printer #{0} {1} has been configured in sector #{2} {3} (the main printer for that sector is #{4} {5}). Ask the worker {6}.' diff --git a/print/templates/email/not-main-printer-configured/locale/es.yml b/print/templates/email/not-main-printer-configured/locale/es.yml deleted file mode 100644 index b6fe5f9a0..000000000 --- a/print/templates/email/not-main-printer-configured/locale/es.yml +++ /dev/null @@ -1,3 +0,0 @@ -subject: Configurada impresora no principal -title: Configurada impresora no principal -description: 'Se ha configurado la impresora #{0} {1} en el sector #{2} {3} (la impresora principal de ese sector es la #{4} {5}). Preguntar al trabajador {6}.' diff --git a/print/templates/email/not-main-printer-configured/not-main-printer-configured.html b/print/templates/email/not-main-printer-configured/not-main-printer-configured.html deleted file mode 100644 index 1e9ffed7a..000000000 --- a/print/templates/email/not-main-printer-configured/not-main-printer-configured.html +++ /dev/null @@ -1,8 +0,0 @@ - -
-
-

{{ $t('title') }}

-

-
-
-
diff --git a/print/templates/email/not-main-printer-configured/sql/sector.sql b/print/templates/email/not-main-printer-configured/sql/sector.sql deleted file mode 100644 index 5d54eeeb9..000000000 --- a/print/templates/email/not-main-printer-configured/sql/sector.sql +++ /dev/null @@ -1,3 +0,0 @@ -SELECT id, description, mainPrinterFk - FROM vn.sector - WHERE id = ? From 1e4f778ef97745a9b41439d07cf3b7ca02728eaf Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 9 Nov 2023 13:22:12 +0100 Subject: [PATCH 008/456] refactor(main-labeler): refs #6005 refactor de mainLabeler a backupPrinterFk --- db/dump/fixtures.sql | 14 +++++++++----- .../back/methods/operator/spec/operator.spec.js | 11 +++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 5413e4d03..7a1473f18 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -174,16 +174,20 @@ INSERT INTO `vn`.`warehouse`(`id`, `name`, `code`, `isComparative`, `isInventory (13, 'Inventory', 'inv', 1, 1, 1, 0, 0, 0, 2, 1, 0), (60, 'Algemesi', NULL, 1, 1, 1, 0, 0, 0, 2, 1, 0); +INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `isPreviousPreparedByPacking`, `code`, `backupPrinterFk`) + VALUES + (1, 'First sector', 1, 1, 'FIRST', NULL), + (2, 'Second sector', 2, 0, 'SECOND', NULL); + INSERT INTO `vn`.`printer` (`id`, `name`, `path`, `isLabeler`, `sectorFk`, `ipAddress`) VALUES (1, 'printer1', 'path1', 0, 1 , NULL), (2, 'printer2', 'path2', 1, 1 , NULL), (4, 'printer4', 'path4', 0, NULL, '10.1.10.4'); -INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `isPreviousPreparedByPacking`, `code`, `backupPrinterFk`) - VALUES - (1, 'First sector', 1, 1, 'FIRST', 1), - (2, 'Second sector', 2, 0, 'SECOND', NULL); +UPDATE `vn`.`sector` + SET `backupPrinterFk` = 1 + WHERE `id` = 1; INSERT INTO `vn`.`worker`(`id`, `code`, `firstName`, `lastName`,`bossFk`, `phone`) VALUES @@ -2771,7 +2775,7 @@ INSERT INTO `vn`.`packingSiteConfig` (`shinobiUrl`, `shinobiToken`, `shinobiGrou VALUES ('', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000); INSERT INTO `util`.`notificationConfig` - SET `cleanDays` = 90; + SET `cleanDays` = 90; INSERT INTO `util`.`notification` (`id`, `name`, `description`) VALUES diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index 2d402b0d1..35aecf538 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -3,7 +3,6 @@ const models = require('vn-loopback/server/server').models; describe('Operator', () => { const authorFk = 9; const sectorId = 1; - const mainPrinter = 1; const notificationName = 'backup-printer-selected'; const operator = { workerFk: 1, @@ -23,17 +22,17 @@ describe('Operator', () => { }, options); } - it('should create notification when configured a not main printer in the sector', async() => { + it('should create notification when configured a backup printer in the sector', async() => { const tx = await models.Operator.beginTransaction({}); try { const options = {transaction: tx, accessToken: {userId: authorFk}}; - const notificationQueue = await createOperator(2, options); + const notificationQueue = await createOperator(1, options); const params = JSON.parse(notificationQueue.params); expect(notificationQueue.notificationFk).toEqual(notificationName); expect(notificationQueue.authorFk).toEqual(authorFk); - expect(params.labelerId).toEqual(2); + expect(params.labelerId).toEqual(1); expect(params.sectorId).toEqual(1); expect(params.workerId).toEqual(9); @@ -44,12 +43,12 @@ describe('Operator', () => { } }); - it('should not create notification when configured the main printer in the sector', async() => { + it('should not create notification when configured a non backup printer in the sector', async() => { const tx = await models.Operator.beginTransaction({}); try { const options = {transaction: tx, accessToken: {userId: authorFk}}; - const notificationQueue = await createOperator(mainPrinter, options); + const notificationQueue = await createOperator(2, options); expect(notificationQueue).toEqual(null); From 1b4ce1a0b5780d0454d0e52a15c4786877643450 Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 23 Nov 2023 08:22:24 +0100 Subject: [PATCH 009/456] feat(noSpam): refs #6005 check if exists a previous notification --- back/models/notification.json | 3 ++ .../00-sectorBackUpLabelerFk.sql | 6 ++- db/dump/fixtures.sql | 20 +++++----- .../methods/operator/spec/operator.spec.js | 28 +++++++++++++ modules/worker/back/models/operator.js | 39 +++++++++++++------ 5 files changed, 75 insertions(+), 21 deletions(-) rename db/changes/{234601 => 234801}/00-sectorBackUpLabelerFk.sql (85%) diff --git a/back/models/notification.json b/back/models/notification.json index 56f66bf1d..07702d99d 100644 --- a/back/models/notification.json +++ b/back/models/notification.json @@ -18,6 +18,9 @@ }, "description": { "type": "string" + }, + "delay": { + "type": "number" } }, "relations": { diff --git a/db/changes/234601/00-sectorBackUpLabelerFk.sql b/db/changes/234801/00-sectorBackUpLabelerFk.sql similarity index 85% rename from db/changes/234601/00-sectorBackUpLabelerFk.sql rename to db/changes/234801/00-sectorBackUpLabelerFk.sql index ac512493c..bf7126693 100644 --- a/db/changes/234601/00-sectorBackUpLabelerFk.sql +++ b/db/changes/234801/00-sectorBackUpLabelerFk.sql @@ -1,3 +1,6 @@ +ALTER TABLE `util`.`notification` ADD delay INT NULL + COMMENT 'Minimum Milliseconds Interval to Prevent Spam from Same-Type Notifications'; + ALTER TABLE `vn`.`sector` CHANGE `mainPrinterFk` `backupPrinterFk` tinyint(3) unsigned DEFAULT NULL NULL; ALTER TABLE `util`.`notificationSubscription` DROP FOREIGN KEY `notificationSubscription_ibfk_1`; @@ -16,4 +19,5 @@ DELETE FROM `util`.`notification` INSERT INTO `util`.`notification` SET `id` = 15, `name` = 'backup-printer-selected', - `description` = 'The worker has selected the backup printer for their sector'; + `description` = 'The worker has selected the backup printer for their sector', + `delay` = 600000; diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index b492a7aed..870f56a30 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -2782,17 +2782,19 @@ INSERT INTO `vn`.`packingSiteConfig` (`shinobiUrl`, `shinobiToken`, `shinobiGrou ('', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000); INSERT INTO `util`.`notificationConfig` SET `cleanDays` = 90; - -INSERT INTO `util`.`notification` (`id`, `name`, `description`) + +INSERT IGNORE INTO `util`.`notification` (`id`, `name`, `description`, `delay`) VALUES - (1, 'print-email', 'notification fixture one'), - (2, 'invoice-electronic', 'A electronic invoice has been generated'), - (4, 'supplier-pay-method-update', 'A supplier pay method has been updated'), - (5, 'modified-entry', 'An entry has been modified'), - (6, 'book-entry-deleted', 'accounting entries deleted'); + (1, 'print-email', 'notification fixture one', NULL), + (2, 'invoice-electronic', 'A electronic invoice has been generated', NULL), + (3, 'backup-printer-selected', 'A printer distinct than main has been configured', 600000), + (4, 'supplier-pay-method-update', 'A supplier pay method has been updated', NULL), + (5, 'modified-entry', 'An entry has been modified', NULL), + (6, 'book-entry-deleted', 'accounting entries deleted', NULL); -INSERT IGNORE INTO `util`.`notification` (`id`, `name`, `description`) - VALUES (3, 'backup-printer-selected', 'A printer distinct than main has been configured'); +UPDATE `util`.`notification` + SET `id` = 3 + WHERE `name` = 'backup-printer-selected'; INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) VALUES diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index 35aecf538..1d4a9a84d 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -58,4 +58,32 @@ describe('Operator', () => { throw e; } }); + + it('should not create notification when is already notified', async() => { + const tx = await models.Operator.beginTransaction({}); + + try { + const options = {transaction: tx, accessToken: {userId: authorFk}}; + await models.NotificationQueue.create({ + authorFk: 1, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': 10, 'sectorId': 10, 'workerId': 10}), + created: Date.vnNow(), + }, options); + + const notificationQueue = await createOperator(1, options); + const params = JSON.parse(notificationQueue.params); + + expect(notificationQueue.notificationFk).toEqual(notificationName); + expect(notificationQueue.authorFk).toEqual(1); + expect(params.labelerId).toEqual(10); + expect(params.sectorId).toEqual(10); + expect(params.workerId).toEqual(10); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); }); diff --git a/modules/worker/back/models/operator.js b/modules/worker/back/models/operator.js index f51a6431c..75ee07821 100644 --- a/modules/worker/back/models/operator.js +++ b/modules/worker/back/models/operator.js @@ -3,6 +3,7 @@ module.exports = function(Self) { const instance = ctx.data || ctx.instance; const models = Self.app.models; const options = ctx.options; + const notification = 'backup-printer-selected'; if (!instance?.sectorFk || !instance?.labelerFk) return; @@ -12,17 +13,33 @@ module.exports = function(Self) { if (sector.backupPrinterFk && sector.backupPrinterFk == instance.labelerFk) { const {userId} = ctx.options.accessToken; - await models.NotificationQueue.create({ - notificationFk: 'backup-printer-selected', - authorFk: userId, - params: JSON.stringify( - { - 'labelerId': instance.labelerFk, - 'sectorId': instance.sectorFk, - 'workerId': userId - } - ) - }, options); + const {delay} = await models.Notification.findOne({ + where: {name: notification} + }); + const hasNotified = await models.NotificationQueue.findOne({ + where: { + notificationFk: notification, + and: [ + {params: {like: '%\"labelerId\":' + instance.labelerFk + '%'}}, + {params: {like: '%\"sectorId\":' + instance.sectorFk + '%'}} + ] + }, + order: 'CREATED DESC', + }); + + if (hasNotified?.created - Date.now() > delay || !hasNotified?.created) { + await models.NotificationQueue.create({ + notificationFk: notification, + authorFk: userId, + params: JSON.stringify( + { + 'labelerId': instance.labelerFk, + 'sectorId': instance.sectorFk, + 'workerId': userId + } + ) + }, options); + } } }); }; From a35a79015524ee4889d06c7c72e028285f947c0b Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 23 Nov 2023 08:33:30 +0100 Subject: [PATCH 010/456] remove(getVideo.spec.js): refs #6005 created task to review the spec --- .../methods/boxing/specs/getVideo.spec.js | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 modules/ticket/back/methods/boxing/specs/getVideo.spec.js diff --git a/modules/ticket/back/methods/boxing/specs/getVideo.spec.js b/modules/ticket/back/methods/boxing/specs/getVideo.spec.js deleted file mode 100644 index 8e8cdc5b9..000000000 --- a/modules/ticket/back/methods/boxing/specs/getVideo.spec.js +++ /dev/null @@ -1,40 +0,0 @@ -const models = require('vn-loopback/server/server').models; -const https = require('https'); - -xdescribe('boxing getVideo()', () => { - it('should return data', async() => { - const tx = await models.PackingSiteConfig.beginTransaction({}); - - try { - const options = {transaction: tx}; - - const id = 1; - const video = 'video.mp4'; - - const response = { - pipe: () => {}, - on: () => {}, - end: () => {}, - }; - - const req = { - headers: 'apiHeader', - data: { - pipe: () => {}, - on: () => {}, - } - }; - - spyOn(https, 'request').and.returnValue(response); - - const result = await models.Boxing.getVideo(id, video, req, null, options); - - expect(result[0]).toEqual(response.data.videos[0].filename); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); -}); From 754150d17d4f69eb190ac171aebd9c2b5b79a158 Mon Sep 17 00:00:00 2001 From: pablone Date: Thu, 23 Nov 2023 10:10:09 +0100 Subject: [PATCH 011/456] feat(operator.spec): refs #6005 add spec for delay and fix spec for spam --- .../methods/operator/spec/operator.spec.js | 50 +++++++++++++++---- modules/worker/back/models/operator.js | 8 +-- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index 1d4a9a84d..6a8b02e04 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -3,6 +3,7 @@ const models = require('vn-loopback/server/server').models; describe('Operator', () => { const authorFk = 9; const sectorId = 1; + const labeler = 1; const notificationName = 'backup-printer-selected'; const operator = { workerFk: 1, @@ -17,8 +18,10 @@ describe('Operator', () => { await models.Operator.create(operator, options); return models.NotificationQueue.findOne({ where: { - notificationFk: notificationName - } + notificationFk: notificationName, + authorFk: authorFk, + }, + order: 'created DESC', }, options); } @@ -27,7 +30,7 @@ describe('Operator', () => { try { const options = {transaction: tx, accessToken: {userId: authorFk}}; - const notificationQueue = await createOperator(1, options); + const notificationQueue = await createOperator(labeler, options); const params = JSON.parse(notificationQueue.params); expect(notificationQueue.notificationFk).toEqual(notificationName); @@ -59,7 +62,7 @@ describe('Operator', () => { } }); - it('should not create notification when is already notified', async() => { + it('should not create notification when is already notified by another worker', async() => { const tx = await models.Operator.beginTransaction({}); try { @@ -67,18 +70,45 @@ describe('Operator', () => { await models.NotificationQueue.create({ authorFk: 1, notificationFk: notificationName, - params: JSON.stringify({'labelerId': 10, 'sectorId': 10, 'workerId': 10}), + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 10}), created: Date.vnNow(), }, options); - const notificationQueue = await createOperator(1, options); + const notificationQueue = await createOperator(labeler, options); + + expect(notificationQueue).toEqual(null); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should create notification when delay is null', async() => { + const tx = await models.Operator.beginTransaction({}); + + try { + const options = {transaction: tx, accessToken: {userId: authorFk}}; + + await models.NotificationQueue.create({ + authorFk: 1, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 10}), + created: Date.vnNow(), + }, options); + + const notification = await models.Notification.findOne({where: {name: notificationName}}, options); + await notification.updateAttributes({delay: null}, options); + + const notificationQueue = await createOperator(labeler, options); const params = JSON.parse(notificationQueue.params); expect(notificationQueue.notificationFk).toEqual(notificationName); - expect(notificationQueue.authorFk).toEqual(1); - expect(params.labelerId).toEqual(10); - expect(params.sectorId).toEqual(10); - expect(params.workerId).toEqual(10); + expect(notificationQueue.authorFk).toEqual(authorFk); + expect(params.labelerId).toEqual(1); + expect(params.sectorId).toEqual(1); + expect(params.workerId).toEqual(9); await tx.rollback(); } catch (e) { diff --git a/modules/worker/back/models/operator.js b/modules/worker/back/models/operator.js index 75ee07821..51fd0bfa1 100644 --- a/modules/worker/back/models/operator.js +++ b/modules/worker/back/models/operator.js @@ -15,7 +15,7 @@ module.exports = function(Self) { const {userId} = ctx.options.accessToken; const {delay} = await models.Notification.findOne({ where: {name: notification} - }); + }, options); const hasNotified = await models.NotificationQueue.findOne({ where: { notificationFk: notification, @@ -24,10 +24,10 @@ module.exports = function(Self) { {params: {like: '%\"sectorId\":' + instance.sectorFk + '%'}} ] }, - order: 'CREATED DESC', - }); + order: 'created DESC', + }, options); - if (hasNotified?.created - Date.now() > delay || !hasNotified?.created) { + if (hasNotified?.created - Date.now() > delay || !hasNotified?.created || !delay) { await models.NotificationQueue.create({ notificationFk: notification, authorFk: userId, From c9291197971f1b84a251dee0abf00fe6bcea77cd Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 28 Nov 2023 08:11:42 +0100 Subject: [PATCH 012/456] fix(spec): refs #6005 backupLabeler spec --- .../notification/specs/getList.spec.js | 5 +- .../specs/notificationSubscription.spec.js | 11 ++-- .../234801/00-sectorBackUpLabelerFk.sql | 19 ++++--- db/dump/dumpedFixtures.sql | 26 +++++++++ db/dump/fixtures.sql | 54 +++++++------------ db/export-data.sh | 2 + 6 files changed, 67 insertions(+), 50 deletions(-) diff --git a/back/methods/notification/specs/getList.spec.js b/back/methods/notification/specs/getList.spec.js index 52ac497a5..6c8507986 100644 --- a/back/methods/notification/specs/getList.spec.js +++ b/back/methods/notification/specs/getList.spec.js @@ -2,12 +2,11 @@ const models = require('vn-loopback/server/server').models; describe('NotificationSubscription getList()', () => { it('should return a list of available and active notifications of a user', async() => { - const userId = 9; - const {active, available} = await models.NotificationSubscription.getList(userId); + const {active, available} = await models.NotificationSubscription.getList(100); const notifications = await models.Notification.find({}); const totalAvailable = notifications.length - active.length; - expect(active.length).toEqual(2); + expect(active.length).toEqual(0); expect(available.length).toEqual(totalAvailable); }); }); diff --git a/back/models/specs/notificationSubscription.spec.js b/back/models/specs/notificationSubscription.spec.js index c2adcbc59..1d4b2354c 100644 --- a/back/models/specs/notificationSubscription.spec.js +++ b/back/models/specs/notificationSubscription.spec.js @@ -41,8 +41,7 @@ describe('loopback model NotificationSubscription', () => { try { const options = {transaction: tx, accessToken: {userId: 9}}; - const notificationSubscriptionId = 2; - await models.NotificationSubscription.destroyAll({id: notificationSubscriptionId}, options); + await models.NotificationSubscription.destroyAll({id: 2}, options); await tx.rollback(); } catch (e) { @@ -76,8 +75,7 @@ describe('loopback model NotificationSubscription', () => { try { const options = {transaction: tx, accessToken: {userId: 9}}; - const notificationSubscriptionId = 6; - await models.NotificationSubscription.destroyAll({id: notificationSubscriptionId}, options); + await models.NotificationSubscription.destroyAll({id: 6}, options); await tx.rollback(); } catch (e) { @@ -94,7 +92,7 @@ describe('loopback model NotificationSubscription', () => { try { const options = {transaction: tx, accessToken: {userId: 9}}; - await models.NotificationSubscription.create({notificationFk: 1, userFk: 5}, options); + await models.NotificationSubscription.create({notificationFk: 12, userFk: 5}, options); await tx.rollback(); } catch (e) { @@ -111,8 +109,7 @@ describe('loopback model NotificationSubscription', () => { try { const options = {transaction: tx, accessToken: {userId: 19}}; - const notificationSubscriptionId = 4; - await models.NotificationSubscription.destroyAll({id: notificationSubscriptionId}, options); + await models.NotificationSubscription.destroyAll({id: 4}, options); await tx.rollback(); } catch (e) { diff --git a/db/changes/234801/00-sectorBackUpLabelerFk.sql b/db/changes/234801/00-sectorBackUpLabelerFk.sql index bf7126693..605571fc8 100644 --- a/db/changes/234801/00-sectorBackUpLabelerFk.sql +++ b/db/changes/234801/00-sectorBackUpLabelerFk.sql @@ -9,15 +9,22 @@ ALTER TABLE `util`.`notificationAcl` DROP FOREIGN KEY `notificationAcl_ibfk_1`; ALTER TABLE `util`.`notification` MODIFY COLUMN `id` int(11) auto_increment NOT NULL; -ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`); -ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`name`); -ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`); +ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`name`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; DELETE FROM `util`.`notification` WHERE `name` = 'not-main-printer-configured'; -INSERT INTO `util`.`notification` - SET `id` = 15, - `name` = 'backup-printer-selected', +INSERT INTO `util`.`notification` + SET `name` = 'backup-printer-selected', `description` = 'The worker has selected the backup printer for their sector', `delay` = 600000; + +INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) + SELECT `n`.`id`, `r`.`id` + FROM `util`.`notification` `n` + JOIN `account`.`role` `r` + WHERE `n`.`name` = 'backup-printer-selected' + AND `r`.`name` = 'system' + LIMIT 1; diff --git a/db/dump/dumpedFixtures.sql b/db/dump/dumpedFixtures.sql index 3e46c8e04..3596eeb75 100644 --- a/db/dump/dumpedFixtures.sql +++ b/db/dump/dumpedFixtures.sql @@ -232,6 +232,32 @@ LOCK TABLES `agencyTermConfig` WRITE; /*!40000 ALTER TABLE `agencyTermConfig` DISABLE KEYS */; INSERT INTO `agencyTermConfig` VALUES ('6240000000','4721000015',21.0000000000,'Adquisiciones intracomunitarias de servicios'); /*!40000 ALTER TABLE `agencyTermConfig` ENABLE KEYS */; +UNLOCK TABLES; + +LOCK TABLES `notification` WRITE; +INSERT INTO `util`.`notification` (id, name, description) + VALUES(1, 'vehicle-event-expired', 'scheduled event of a vehicle'), + (2, 'invoice-electronic', 'A electronic invoice has been generated'), + (3, 'supplier-pay-method-update', 'A supplier pay method has been updated'), + (4, 'book-entries-imported-incorrectly', 'accounting entries exported incorrectly'), + (5, 'greuge-wrong', 'A wrong greuge has been created'), + (6, 'not-main-printer-configured', 'A printer distinct than main has been configured'), + (7, 'entry-update-comission', 'entry change comission'), + (8, 'modified-entry', 'An entry has been modified'), + (9, 'book-entry-deleted', 'accounting entries deleted'), + (10, 'modified-collection-volumetry', 'A collection volumetry has been modified'); +UNLOCK TABLES; + +LOCK TABLES `notificationAcl` WRITE; +INSERT INTO `util`.`notificationAcl` (notificationFk, roleFk) + VALUES(1, 57), + (3, 73), + (4, 5), + (6, 108), + (7, 30), + (7, 35), + (8, 15), + (9, 5); UNLOCK TABLES; -- diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 870f56a30..3215e6164 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -2780,49 +2780,35 @@ INSERT INTO `vn`.`packingSite` (`id`, `code`, `hostFk`, `monitorId`) INSERT INTO `vn`.`packingSiteConfig` (`shinobiUrl`, `shinobiToken`, `shinobiGroupKey`, `avgBoxingTime`) VALUES ('', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000); -INSERT INTO `util`.`notificationConfig` - SET `cleanDays` = 90; - -INSERT IGNORE INTO `util`.`notification` (`id`, `name`, `description`, `delay`) - VALUES - (1, 'print-email', 'notification fixture one', NULL), - (2, 'invoice-electronic', 'A electronic invoice has been generated', NULL), - (3, 'backup-printer-selected', 'A printer distinct than main has been configured', 600000), - (4, 'supplier-pay-method-update', 'A supplier pay method has been updated', NULL), - (5, 'modified-entry', 'An entry has been modified', NULL), - (6, 'book-entry-deleted', 'accounting entries deleted', NULL); -UPDATE `util`.`notification` - SET `id` = 3 - WHERE `name` = 'backup-printer-selected'; +INSERT INTO `util`.`notificationConfig` + SET `cleanDays` = 90; -INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) - VALUES - (1, 9), - (1, 1), - (2, 1), - (3, 9), - (4, 1), - (5, 9), - (6, 9); +INSERT IGNORE INTO `util`.`notification` (`name`, `description`, `delay`) + VALUES ('print-email', 'notification fixture one', NULL); -INSERT INTO `util`.`notificationQueue` (`id`, `notificationFk`, `params`, `authorFk`, `status`, `created`) - VALUES - (1, 'print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()), - (2, 'print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()), - (3, 'print-email', null, null, 'pending', util.VN_CURDATE()); +INSERT INTO `util`.`notificationQueue` (`notificationFk`, `params`, `authorFk`, `status`, `created`) + VALUES ('print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()), + ('print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()), + ('print-email', null, null, 'pending', util.VN_CURDATE()); INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`) - VALUES - (1, 1109), - (1, 1110), + VALUES (12, 1109), + (12, 1110), (2, 1110), (4, 1110), (2, 1109), - (1, 9), - (1, 3), - (6, 9); + (12, 9), + (12, 3); +INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) + VALUES (12, 9), + (12, 1), + (4, 1), + (2, 1), + (3, 9), + (5, 9), + (10,1); INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`) VALUES diff --git a/db/export-data.sh b/db/export-data.sh index 97092da4f..96a8754f9 100755 --- a/db/export-data.sh +++ b/db/export-data.sh @@ -16,6 +16,8 @@ TABLES=( config version versionLog + notification + notificationAcl ) dump_tables ${TABLES[@]} From 17501a3c9407b55d07e4013366a9b753109969d0 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 28 Nov 2023 09:13:45 +0100 Subject: [PATCH 013/456] feat: refs #6005 mover sql a la ultima carpeta --- db/changes/{234801 => 235001}/00-sectorBackUpLabelerFk.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename db/changes/{234801 => 235001}/00-sectorBackUpLabelerFk.sql (100%) diff --git a/db/changes/234801/00-sectorBackUpLabelerFk.sql b/db/changes/235001/00-sectorBackUpLabelerFk.sql similarity index 100% rename from db/changes/234801/00-sectorBackUpLabelerFk.sql rename to db/changes/235001/00-sectorBackUpLabelerFk.sql From d5fcfdfd79181a4604da729273cd2763674bc031 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 28 Nov 2023 12:24:54 +0100 Subject: [PATCH 014/456] fix(yml): refs #6005 backUpLabeler yml fix --- print/templates/email/backup-printer-selected/locale/en.yml | 2 +- print/templates/email/backup-printer-selected/locale/es.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/print/templates/email/backup-printer-selected/locale/en.yml b/print/templates/email/backup-printer-selected/locale/en.yml index 917881641..038e16e00 100644 --- a/print/templates/email/backup-printer-selected/locale/en.yml +++ b/print/templates/email/backup-printer-selected/locale/en.yml @@ -1,3 +1,3 @@ subject: Not main printer configured title: Not main printer configured -description: 'The worker #{0} is using the backup printer {1} for their sector {2}.' +description: 'The worker {0} is using the backup printer {1} for their sector {2}.' \ No newline at end of file diff --git a/print/templates/email/backup-printer-selected/locale/es.yml b/print/templates/email/backup-printer-selected/locale/es.yml index a250ba20f..d172f2560 100644 --- a/print/templates/email/backup-printer-selected/locale/es.yml +++ b/print/templates/email/backup-printer-selected/locale/es.yml @@ -1,3 +1,3 @@ -subject: Configurada impresora no principal -title: Configurada impresora no principal -description: 'El trabajador #{0} esta utilizando la impresora de repuesto {1} su sector {2}.' +subject: Seleccionada impresora de repuesto +title: Seleccionada impresora de repuesto +description: 'El trabajador {0} esta utilizando la impresora de repuesto {1} del sector {2}.' From d8cf0590275b46c31e4fc413152bea3ad7c7d6d6 Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 29 Nov 2023 09:10:45 +0100 Subject: [PATCH 015/456] fix: refs #6005 add fixtures for a spec --- back/methods/notification/specs/getList.spec.js | 2 +- db/dump/fixtures.sql | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/back/methods/notification/specs/getList.spec.js b/back/methods/notification/specs/getList.spec.js index 6c8507986..d828abcb7 100644 --- a/back/methods/notification/specs/getList.spec.js +++ b/back/methods/notification/specs/getList.spec.js @@ -6,7 +6,7 @@ describe('NotificationSubscription getList()', () => { const notifications = await models.Notification.find({}); const totalAvailable = notifications.length - active.length; - expect(active.length).toEqual(0); + expect(active.length).toEqual(1); expect(available.length).toEqual(totalAvailable); }); }); diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index d270ca13a..0d967f8e6 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -2799,7 +2799,8 @@ INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`) (4, 1110), (2, 1109), (12, 9), - (12, 3); + (12, 3), + (12, 100); INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) VALUES (12, 9), From f68529960e5ea177a6fb42ae2e4c5eb69e6e944c Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 19 Dec 2023 10:51:18 +0100 Subject: [PATCH 016/456] fix(notification): refs #6005 notification changes --- .vscode/settings.json | 2 +- .../notification/specs/getList.spec.js | 4 +- back/models/notificationQueue.js | 29 +++++++++++ .../specs/notificationSubscription.spec.js | 2 +- db/changes/235001/00-printerChangeIdType.sql | 10 ++++ db/changes/235001/01-printerChangeIdType.sql | 21 ++++++++ ...lerFk.sql => 03-sectorBackUpLabelerFk.sql} | 18 ++----- db/dump/dumpedFixtures.sql | 27 ----------- db/dump/fixtures.sql | 48 +++++++++++-------- db/export-data.sh | 2 - .../methods/operator/spec/operator.spec.js | 10 +++- modules/worker/back/models/operator.js | 38 +++++---------- 12 files changed, 114 insertions(+), 97 deletions(-) create mode 100644 back/models/notificationQueue.js create mode 100644 db/changes/235001/00-printerChangeIdType.sql create mode 100644 db/changes/235001/01-printerChangeIdType.sql rename db/changes/235001/{00-sectorBackUpLabelerFk.sql => 03-sectorBackUpLabelerFk.sql} (65%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 899dfc788..e3897122d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,7 +3,7 @@ // Carácter predeterminado de final de línea. "files.eol": "\n", "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "search.useIgnoreFiles": false, "editor.defaultFormatter": "dbaeumer.vscode-eslint", diff --git a/back/methods/notification/specs/getList.spec.js b/back/methods/notification/specs/getList.spec.js index d828abcb7..8f8c9e5e3 100644 --- a/back/methods/notification/specs/getList.spec.js +++ b/back/methods/notification/specs/getList.spec.js @@ -2,11 +2,11 @@ const models = require('vn-loopback/server/server').models; describe('NotificationSubscription getList()', () => { it('should return a list of available and active notifications of a user', async() => { - const {active, available} = await models.NotificationSubscription.getList(100); + const {active, available} = await models.NotificationSubscription.getList(9); const notifications = await models.Notification.find({}); const totalAvailable = notifications.length - active.length; - expect(active.length).toEqual(1); + expect(active.length).toEqual(2); expect(available.length).toEqual(totalAvailable); }); }); diff --git a/back/models/notificationQueue.js b/back/models/notificationQueue.js new file mode 100644 index 000000000..a22bb6ce3 --- /dev/null +++ b/back/models/notificationQueue.js @@ -0,0 +1,29 @@ +module.exports = Self => { + Self.observe('before save', async ctx => { + const instance = ctx.data || ctx.instance; + const {notificationFk} = instance; + + if (!(notificationFk === 'backup-printer-selected')) return; + const {models} = Self.app; + const params = JSON.parse(instance.params); + const options = ctx.options; + const {delay} = await models.Notification.findOne({ + where: {name: notificationFk} + }, options); + + const hasNotified = await models.NotificationQueue.findOne({ + where: { + notificationFk: notificationFk, + and: [ + {params: {like: '%\"labelerId\":' + params.labelerId + '%'}}, + {params: {like: '%\"sectorId\":' + params.sectorId + '%'}} + ] + }, + order: 'created DESC', + }, options); + + if (hasNotified?.created - Date.now() > delay || !hasNotified?.created || !delay) return; + + throw new Error('Is already Notified'); + }); +}; diff --git a/back/models/specs/notificationSubscription.spec.js b/back/models/specs/notificationSubscription.spec.js index 1d4b2354c..33badfd91 100644 --- a/back/models/specs/notificationSubscription.spec.js +++ b/back/models/specs/notificationSubscription.spec.js @@ -92,7 +92,7 @@ describe('loopback model NotificationSubscription', () => { try { const options = {transaction: tx, accessToken: {userId: 9}}; - await models.NotificationSubscription.create({notificationFk: 12, userFk: 5}, options); + await models.NotificationSubscription.create({notificationFk: 1, userFk: 5}, options); await tx.rollback(); } catch (e) { diff --git a/db/changes/235001/00-printerChangeIdType.sql b/db/changes/235001/00-printerChangeIdType.sql new file mode 100644 index 000000000..759ac7939 --- /dev/null +++ b/db/changes/235001/00-printerChangeIdType.sql @@ -0,0 +1,10 @@ +ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY `packingSite_FK_4`; +ALTER TABLE `vn`.`arcRead` DROP FOREIGN KEY `worker_printer_FK`; +ALTER TABLE `vn`.`host` DROP FOREIGN KEY `configHost_FK`; +ALTER TABLE `vn`.`operator` DROP FOREIGN KEY `operator_FK_5`; +ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY `packingSite_FK_1`; +ALTER TABLE `vn`.`printQueue` DROP FOREIGN KEY `printQueue_printerFk`; +ALTER TABLE `vn`.`sector` DROP FOREIGN KEY `sector_FK_1`; +ALTER TABLE `vn`.`worker` DROP FOREIGN KEY `worker_FK`; + + diff --git a/db/changes/235001/01-printerChangeIdType.sql b/db/changes/235001/01-printerChangeIdType.sql new file mode 100644 index 000000000..3fd7d3798 --- /dev/null +++ b/db/changes/235001/01-printerChangeIdType.sql @@ -0,0 +1,21 @@ +ALTER TABLE `vn`.`printer` MODIFY COLUMN `id` int unsigned auto_increment NOT NULL; + +ALTER TABLE `vn`.`arcRead` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`arcRead` ADD CONSTRAINT `arcRead_FK` FOREIGN KEY (printerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `vn`.`host` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`host` ADD CONSTRAINT `host_FK` FOREIGN KEY (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE `vn`.`operator` MODIFY COLUMN `labelerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`operator` ADD CONSTRAINT `operator_FK_4` FOREIGN KEY (labelerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `vn`.`packingSite` MODIFY COLUMN `printerRfidFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`packingSite` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_1` FOREIGN KEY (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE RESTRICT; +ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_4` FOREIGN KEY (printerRfidFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE `vn`.`printQueue` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`printQueue` ADD CONSTRAINT `printQueue_FK` FOREIGN KEY (id) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE `vn`.`sector` MODIFY COLUMN `mainPrinterFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`sector` ADD CONSTRAINT `sector_FK` FOREIGN KEY (mainPrinterFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/db/changes/235001/00-sectorBackUpLabelerFk.sql b/db/changes/235001/03-sectorBackUpLabelerFk.sql similarity index 65% rename from db/changes/235001/00-sectorBackUpLabelerFk.sql rename to db/changes/235001/03-sectorBackUpLabelerFk.sql index 605571fc8..8ca12e7e4 100644 --- a/db/changes/235001/00-sectorBackUpLabelerFk.sql +++ b/db/changes/235001/03-sectorBackUpLabelerFk.sql @@ -1,7 +1,9 @@ ALTER TABLE `util`.`notification` ADD delay INT NULL COMMENT 'Minimum Milliseconds Interval to Prevent Spam from Same-Type Notifications'; -ALTER TABLE `vn`.`sector` CHANGE `mainPrinterFk` `backupPrinterFk` tinyint(3) unsigned DEFAULT NULL NULL; +ALTER TABLE vn.sector DROP FOREIGN KEY sector_FK; + +ALTER TABLE `vn`.`sector` CHANGE `mainPrinterFk` `backupPrinterFk` int unsigned DEFAULT NULL NULL; ALTER TABLE `util`.`notificationSubscription` DROP FOREIGN KEY `notificationSubscription_ibfk_1`; ALTER TABLE `util`.`notificationQueue` DROP FOREIGN KEY `nnotificationQueue_ibfk_1`; @@ -13,18 +15,4 @@ ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscr ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`name`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -DELETE FROM `util`.`notification` - WHERE `name` = 'not-main-printer-configured'; -INSERT INTO `util`.`notification` - SET `name` = 'backup-printer-selected', - `description` = 'The worker has selected the backup printer for their sector', - `delay` = 600000; - -INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) - SELECT `n`.`id`, `r`.`id` - FROM `util`.`notification` `n` - JOIN `account`.`role` `r` - WHERE `n`.`name` = 'backup-printer-selected' - AND `r`.`name` = 'system' - LIMIT 1; diff --git a/db/dump/dumpedFixtures.sql b/db/dump/dumpedFixtures.sql index 3596eeb75..7e3964c2b 100644 --- a/db/dump/dumpedFixtures.sql +++ b/db/dump/dumpedFixtures.sql @@ -233,33 +233,6 @@ LOCK TABLES `agencyTermConfig` WRITE; INSERT INTO `agencyTermConfig` VALUES ('6240000000','4721000015',21.0000000000,'Adquisiciones intracomunitarias de servicios'); /*!40000 ALTER TABLE `agencyTermConfig` ENABLE KEYS */; UNLOCK TABLES; - -LOCK TABLES `notification` WRITE; -INSERT INTO `util`.`notification` (id, name, description) - VALUES(1, 'vehicle-event-expired', 'scheduled event of a vehicle'), - (2, 'invoice-electronic', 'A electronic invoice has been generated'), - (3, 'supplier-pay-method-update', 'A supplier pay method has been updated'), - (4, 'book-entries-imported-incorrectly', 'accounting entries exported incorrectly'), - (5, 'greuge-wrong', 'A wrong greuge has been created'), - (6, 'not-main-printer-configured', 'A printer distinct than main has been configured'), - (7, 'entry-update-comission', 'entry change comission'), - (8, 'modified-entry', 'An entry has been modified'), - (9, 'book-entry-deleted', 'accounting entries deleted'), - (10, 'modified-collection-volumetry', 'A collection volumetry has been modified'); -UNLOCK TABLES; - -LOCK TABLES `notificationAcl` WRITE; -INSERT INTO `util`.`notificationAcl` (notificationFk, roleFk) - VALUES(1, 57), - (3, 73), - (4, 5), - (6, 108), - (7, 30), - (7, 35), - (8, 15), - (9, 5); -UNLOCK TABLES; - -- -- Dumping data for table `alertLevel` -- diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index f95f7aef6..7dd9032a9 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -2788,32 +2788,40 @@ INSERT INTO `vn`.`packingSiteConfig` (`shinobiUrl`, `shinobiToken`, `shinobiGrou INSERT INTO `util`.`notificationConfig` SET `cleanDays` = 90; -INSERT IGNORE INTO `util`.`notification` (`name`, `description`, `delay`) - VALUES ('print-email', 'notification fixture one', NULL); +INSERT INTO `util`.`notification` (`id`, `name`, `description`, `delay`) + VALUES (1, 'print-email', 'notification fixture one', NULL), + (2, 'invoice-electronic', 'A electronic invoice has been generated', NULL), + (3, 'backup-printer-selected', 'A printer distinct than main has been configured', 600000), + (4, 'supplier-pay-method-update', 'A supplier pay method has been updated', NULL), + (5, 'modified-entry', 'An entry has been modified', NULL), + (6, 'book-entry-deleted', 'accounting entries deleted', NULL); -INSERT INTO `util`.`notificationQueue` (`notificationFk`, `params`, `authorFk`, `status`, `created`) - VALUES ('print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()), - ('print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()), - ('print-email', null, null, 'pending', util.VN_CURDATE()); +INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) + VALUES + (1, 9), + (1, 1), + (2, 1), + (3, 9), + (4, 1), + (5, 9), + (6, 9); + +INSERT INTO `util`.`notificationQueue` (`id`, `notificationFk`, `params`, `authorFk`, `status`, `created`) + VALUES + (1, 'print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()), + (2, 'print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()), + (3, 'print-email', null, null, 'pending', util.VN_CURDATE()); INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`) - VALUES (12, 1109), - (12, 1110), + VALUES + (1, 1109), + (1, 1110), (2, 1110), (4, 1110), (2, 1109), - (12, 9), - (12, 3), - (12, 100); - -INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) - VALUES (12, 9), - (12, 1), - (4, 1), - (2, 1), - (3, 9), - (5, 9), - (10,1); + (1, 9), + (1, 3), + (6, 9); INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`) VALUES diff --git a/db/export-data.sh b/db/export-data.sh index 96a8754f9..97092da4f 100755 --- a/db/export-data.sh +++ b/db/export-data.sh @@ -16,8 +16,6 @@ TABLES=( config version versionLog - notification - notificationAcl ) dump_tables ${TABLES[@]} diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index 6a8b02e04..f57322f49 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -74,9 +74,15 @@ describe('Operator', () => { created: Date.vnNow(), }, options); - const notificationQueue = await createOperator(labeler, options); + let error; - expect(notificationQueue).toEqual(null); + try { + await createOperator(labeler, options); + } catch (e) { + error = e; + } + + expect(error.message).toEqual('Is already Notified'); await tx.rollback(); } catch (e) { diff --git a/modules/worker/back/models/operator.js b/modules/worker/back/models/operator.js index 51fd0bfa1..074179806 100644 --- a/modules/worker/back/models/operator.js +++ b/modules/worker/back/models/operator.js @@ -4,6 +4,7 @@ module.exports = function(Self) { const models = Self.app.models; const options = ctx.options; const notification = 'backup-printer-selected'; + const {userId} = ctx.options.accessToken; if (!instance?.sectorFk || !instance?.labelerFk) return; @@ -12,34 +13,17 @@ module.exports = function(Self) { }, options); if (sector.backupPrinterFk && sector.backupPrinterFk == instance.labelerFk) { - const {userId} = ctx.options.accessToken; - const {delay} = await models.Notification.findOne({ - where: {name: notification} + await models.NotificationQueue.create({ + notificationFk: notification, + authorFk: userId, + params: JSON.stringify( + { + 'labelerId': instance.labelerFk, + 'sectorId': instance.sectorFk, + 'workerId': userId + } + ) }, options); - const hasNotified = await models.NotificationQueue.findOne({ - where: { - notificationFk: notification, - and: [ - {params: {like: '%\"labelerId\":' + instance.labelerFk + '%'}}, - {params: {like: '%\"sectorId\":' + instance.sectorFk + '%'}} - ] - }, - order: 'created DESC', - }, options); - - if (hasNotified?.created - Date.now() > delay || !hasNotified?.created || !delay) { - await models.NotificationQueue.create({ - notificationFk: notification, - authorFk: userId, - params: JSON.stringify( - { - 'labelerId': instance.labelerFk, - 'sectorId': instance.sectorFk, - 'workerId': userId - } - ) - }, options); - } } }); }; From 88739542fec47a58c33e647d831a8ac6dec6cca1 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 19 Dec 2023 14:07:46 +0100 Subject: [PATCH 017/456] move(version): refs #6005 move backupLabeler --- db/changes/{235001 => 235201}/00-printerChangeIdType.sql | 0 db/changes/{235001 => 235201}/01-printerChangeIdType.sql | 0 db/changes/{235001 => 235201}/03-sectorBackUpLabelerFk.sql | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename db/changes/{235001 => 235201}/00-printerChangeIdType.sql (100%) rename db/changes/{235001 => 235201}/01-printerChangeIdType.sql (100%) rename db/changes/{235001 => 235201}/03-sectorBackUpLabelerFk.sql (100%) diff --git a/db/changes/235001/00-printerChangeIdType.sql b/db/changes/235201/00-printerChangeIdType.sql similarity index 100% rename from db/changes/235001/00-printerChangeIdType.sql rename to db/changes/235201/00-printerChangeIdType.sql diff --git a/db/changes/235001/01-printerChangeIdType.sql b/db/changes/235201/01-printerChangeIdType.sql similarity index 100% rename from db/changes/235001/01-printerChangeIdType.sql rename to db/changes/235201/01-printerChangeIdType.sql diff --git a/db/changes/235001/03-sectorBackUpLabelerFk.sql b/db/changes/235201/03-sectorBackUpLabelerFk.sql similarity index 100% rename from db/changes/235001/03-sectorBackUpLabelerFk.sql rename to db/changes/235201/03-sectorBackUpLabelerFk.sql From dc1ef34abacf790b0a4b6e49e465550775e12de7 Mon Sep 17 00:00:00 2001 From: Jbreso Date: Wed, 31 Jan 2024 09:54:47 +0100 Subject: [PATCH 018/456] feat: refs #6493 refactorizar procedimientos vn2008 parte2 --- .../vn/procedures/available_traslate.sql | 123 +++++++++++ db/routines/vn/procedures/balance_create.sql | 204 ++++++++++++++++++ db/routines/vn/procedures/entry_recalc.sql | 2 +- .../procedures/article_multiple_buy.sql | 6 - .../procedures/article_multiple_buy_date.sql | 9 - db/routines/vn2008/procedures/buy_tarifas.sql | 6 - .../vn2008/procedures/buy_tarifas_entry.sql | 11 - db/routines/vn2008/procedures/traslado.sql | 4 +- .../10859-pinkGerbera/00-firstScript.sql | 15 ++ 9 files changed, 345 insertions(+), 35 deletions(-) create mode 100644 db/routines/vn/procedures/available_traslate.sql create mode 100644 db/routines/vn/procedures/balance_create.sql delete mode 100644 db/routines/vn2008/procedures/article_multiple_buy.sql delete mode 100644 db/routines/vn2008/procedures/article_multiple_buy_date.sql delete mode 100644 db/routines/vn2008/procedures/buy_tarifas.sql delete mode 100644 db/routines/vn2008/procedures/buy_tarifas_entry.sql create mode 100644 db/versions/10859-pinkGerbera/00-firstScript.sql diff --git a/db/routines/vn/procedures/available_traslate.sql b/db/routines/vn/procedures/available_traslate.sql new file mode 100644 index 000000000..44b76d0c2 --- /dev/null +++ b/db/routines/vn/procedures/available_traslate.sql @@ -0,0 +1,123 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`available_traslate`( + vWarehouseLanding INT, + vDated DATE, + vWarehouseShipment INT) +proc: BEGIN + DECLARE vDatedFrom DATE; + DECLARE vDatedTo DATETIME; + DECLARE vDatedReserve DATETIME; + DECLARE vDatedInventory DATE; + + IF vDated < util.VN_CURDATE() THEN + LEAVE proc; + END IF; + + CALL item_getStock (vWarehouseLanding, vDated, NULL); + + + -- Calcula algunos parámetros necesarios + SET vDatedFrom = TIMESTAMP(vDated, '00:00:00'); + SET vDatedTo = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDated), '23:59:59'); + SELECT FechaInventario INTO vDatedInventory FROM tblContadores; + SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vDatedReserve + FROM hedera.orderConfig; + + -- Calcula el ultimo dia de vida para cada producto + CREATE OR REPLACE TEMPORARY TABLE tItemRange + (PRIMARY KEY (itemFk)) + ENGINE = MEMORY + SELECT c.itemFk, MAX(t.landed) dated + FROM buy c + JOIN entry e ON c.entryFk = e.id + JOIN travel t ON t.id = e.travelFk + JOIN warehouse w ON w.id = t.warehouseInFk + WHERE t.landed BETWEEN vDatedInventory AND vDatedFrom + AND t.warehouseInFk = vWarehouseLanding + AND NOT e.isExcludedFromAvailable + AND NOT e.isRaid + GROUP BY c.itemFk; + + -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior + CALL buyUltimate(vWarehouseShipment, util.VN_CURDATE()); + + INSERT INTO tItemRange + SELECT t.itemFk, tr.landed + FROM tmp.buyUltimate t + JOIN buy b ON b.id = t.buyFk + JOIN entry e ON e.id = b.entryFk + JOIN travel tr ON tr.id = e.travelFk + LEFT JOIN tItemRange i ON t.itemFk = i.itemFk + WHERE t.warehouseFk = vWarehouseShipment + AND NOT e.isRaid + ON DUPLICATE KEY UPDATE tItemRange.dated = GREATEST(tItemRange.dated, tr.landed); + + CREATE OR REPLACE TEMPORARY TABLE tItemRangeLive + (PRIMARY KEY (itemFk)) + ENGINE = MEMORY + SELECT ir.itemFk, TIMESTAMP(TIMESTAMPADD(DAY, it.life, ir.dated), '23:59:59') dated + FROM tItemRange ir + JOIN item i ON i.id = ir.itemFk + JOIN itemType it ON it.id = i.typeFk + HAVING dated >= vDatedFrom OR dated IS NULL; + + -- Calcula el ATP + CREATE OR REPLACE TEMPORARY TABLE tmp.itemCalc + (INDEX (itemFk,warehouseFk)) + ENGINE = MEMORY + SELECT i.item_id itemFk, vWarehouseLanding warehouseFk, i.dat dated, i.amount quantity + FROM vn2008.item_out i + JOIN tItemRangeLive ir ON ir.itemFK = i.item_id + WHERE i.dat >= vDatedFrom + AND (ir.dated IS NULL OR i.dat <= ir.dated) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT b.itemFk, vWarehouseLanding, t.landed, b.quantity + FROM buy b + JOIN entry e ON b.entryFk = e.id + JOIN travel t ON t.id = e.travelFk + JOIN tItemRangeLive ir ON ir.itemFk = b.itemFk + WHERE NOT e.isExcludedFromAvailable + AND b.quantity <> 0 + AND NOT e.isRaid + AND t.warehouseInFk = vWarehouseLanding + AND t.landed >= vDatedFrom + AND (ir.dated IS NULL OR t.landed <= ir.dated) + UNION ALL + SELECT i.item_id, vWarehouseLanding, i.dat, i.amount + FROM vn2008.item_entry_out i + JOIN tItemRangeLive ir ON ir.itemFk = i.item_id + WHERE i.dat >= vDatedFrom + AND (ir.dated IS NULL OR i.dat <= ir.dated) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT r.item_id, vWarehouseLanding, r.shipment, -r.amount + FROM hedera.order_row r + JOIN hedera.`order` o ON o.id = r.order_id + JOIN tItemRangeLive ir ON ir.itemFk = r.item_id + WHERE r.shipment >= vDatedFrom + AND (ir.dated IS NULL OR r.shipment <= ir.dated) + AND r.warehouse_id = vWarehouseLanding + AND r.created >= vDatedReserve + AND NOT o.confirmed; + + CALL item_getAtp(vDated); + + CREATE OR REPLACE TEMPORARY TABLE availableTraslate + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT t.item_id, SUM(stock) available + FROM ( + SELECT ti.itemFk item_id, stock + FROM tmp.itemList ti + JOIN tItemRange ir ON ir.itemFk = ti.itemFk + UNION ALL + SELECT itemFk, quantity + FROM tmp.itemAtp + ) t + GROUP BY t.item_id + HAVING available <> 0; + + DROP TEMPORARY TABLE tmp.itemList, tItemRange, tItemRangeLive; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/balance_create.sql b/db/routines/vn/procedures/balance_create.sql new file mode 100644 index 000000000..9c22a4fd4 --- /dev/null +++ b/db/routines/vn/procedures/balance_create.sql @@ -0,0 +1,204 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`balance_create`( + IN vStartingMonth INT, + IN vEndingMonth INT, + IN vCompany INT, + IN vIsConsolidated BOOLEAN, + IN vInterGroupSalesIncluded BOOLEAN) +BEGIN + DECLARE intGAP INT DEFAULT 7; + DECLARE vYears INT DEFAULT 2; + DECLARE vYear TEXT; + DECLARE vOneYearAgo TEXT; + DECLARE vTwoYearsAgo TEXT; + DECLARE vQuery TEXT; + DECLARE vConsolidatedGroup INT; + DECLARE vStartingDate DATE DEFAULT '2020-01-01'; + DECLARE vCurYear INT DEFAULT YEAR(util.VN_CURDATE()); + DECLARE vStartingYear INT DEFAULT vCurYear - 2; + DECLARE vTable TEXT; + + SET vTable = util.quoteIdentifier('balance_nest_tree'); + SET vYear = util.quoteIdentifier(vCurYear); + SET vOneYearAgo = util.quoteIdentifier(vCurYear-1); + SET vTwoYearsAgo = util.quoteIdentifier(vCurYear-2); + + -- Solicitamos la tabla tmp.nest, como base para el balance + DROP TEMPORARY TABLE IF EXISTS tmp.nest; + + EXECUTE IMMEDIATE CONCAT( + 'CREATE TEMPORARY TABLE tmp.nest + SELECT node.id + ,CONCAT( REPEAT(REPEAT(" ",?), COUNT(parent.id) - 1), node.name) AS name + ,node.lft + ,node.rgt + ,COUNT(parent.id) - 1 as depth + ,cast((node.rgt - node.lft - 1) / 2 as DECIMAL) as sons + FROM ', vTable, ' AS node, + ', vTable, ' AS parent + WHERE node.lft BETWEEN parent.lft AND parent.rgt + GROUP BY node.id + ORDER BY node.lft') + USING intGAP; + + CREATE OR REPLACE TEMPORARY TABLE tmp.balance + SELECT * FROM tmp.nest; + + DROP TEMPORARY TABLE IF EXISTS tmp.empresas_receptoras; + DROP TEMPORARY TABLE IF EXISTS tmp.empresas_emisoras; + + SELECT companyGroupFk INTO vConsolidatedGroup + FROM company + WHERE id = vCompany; + + CREATE OR REPLACE TEMPORARY TABLE tmp.empresas_receptoras + SELECT id empresa_id + FROM company + WHERE id = vCompany + OR companyGroupFk = IF(vIsConsolidated, vConsolidatedGroup, NULL); + + CREATE OR REPLACE TEMPORARY TABLE tmp.empresas_emisoras + SELECT id empresa_id FROM supplier p; + + IF vInterGroupSalesIncluded = FALSE THEN + + DELETE ee.* + FROM tmp.empresas_emisoras ee + JOIN company e on e.id = ee.empresa_id + WHERE e.companyGroupFk = vConsolidatedGroup; + + END IF; + + -- Se calculan las facturas que intervienen, para luego poder servir el desglose desde aqui + CREATE OR REPLACE TEMPORARY TABLE tmp.balance_desglose + SELECT er.empresa_id receptora_id, + ee.empresa_id emisora_id, + year(IFNULL(r.bookEntried,IFNULL(r.booked, r.issued))) `year`, + month(IFNULL(r.bookEntried,IFNULL(r.booked, r.issued))) `month`, + expenseFk Id_Gasto, + SUM(bi) importe + FROM invoiceIn r + JOIN invoiceInTax ri on ri.invoiceInFk = r.id + JOIN tmp.empresas_receptoras er on er.empresa_id = r.companyFk + JOIN tmp.empresas_emisoras ee ON ee.empresa_id = r.supplierFk + WHERE IFNULL(r.bookEntried,IFNULL(r.booked, r.issued)) >= vStartingDate + AND r.isBooked + GROUP BY Id_Gasto, year, month, emisora_id, receptora_id; + + INSERT INTO tmp.balance_desglose( + receptora_id, + emisora_id, + year, + month, + Id_Gasto, + importe) + SELECT gr.empresa_id, + gr.empresa_id, + year, + month, + Id_Gasto, + SUM(importe) + FROM vn2008.gastos_resumen gr + JOIN tmp.empresas_receptoras er on gr.empresa_id = er.empresa_id + WHERE year >= vStartingYear + AND month BETWEEN vStartingMonth AND vEndingMonth + GROUP BY Id_Gasto, year, month, gr.empresa_id; + + DELETE FROM tmp.balance_desglose + WHERE month < vStartingMonth + OR month > vEndingMonth; + + -- Ahora el balance + EXECUTE IMMEDIATE CONCAT( + 'ALTER TABLE tmp.balance + ADD COLUMN ', vTwoYearsAgo ,' INT(10) NULL , + ADD COLUMN ', vOneYearAgo ,' INT(10) NULL , + ADD COLUMN ', vYear,' INT(10) NULL , + ADD COLUMN Id_Gasto VARCHAR(10) NULL, + ADD COLUMN Gasto VARCHAR(45) NULL'); + + -- Añadimos los gastos, para facilitar el formulario + UPDATE tmp.balance b + JOIN vn2008.balance_nest_tree bnt on bnt.id = b.id + JOIN (SELECT id, name + FROM expense + GROUP BY id) g ON g.id = bnt.Id_Gasto COLLATE utf8_general_ci + SET b.Id_Gasto = g.id COLLATE utf8_general_ci + , b.Gasto = g.id COLLATE utf8_general_ci ; + + -- Rellenamos los valores de primer nivel, los que corresponden a los gastos simples + WHILE vYears >= 0 DO + SET vQuery = CONCAT( + 'UPDATE tmp.balance b + JOIN + (SELECT Id_Gasto, SUM(Importe) as Importe + FROM tmp.balance_desglose + WHERE year = ? + GROUP BY Id_Gasto + ) sub on sub.Id_Gasto = b.Id_Gasto COLLATE utf8_general_ci + SET ', util.quoteIdentifier(vCurYear - vYears), ' = - Importe'); + + EXECUTE IMMEDIATE vQuery + USING vCurYear - vYears; + + SET vYears = vYears - 1; + END WHILE; + + -- Añadimos las ventas + EXECUTE IMMEDIATE CONCAT( + 'UPDATE tmp.balance b + JOIN ( + SELECT SUM(IF(year = ?, venta, 0)) y2, + SUM(IF(year = ?, venta, 0)) y1, + SUM(IF(year = ?, venta, 0)) y0, + c.Gasto + FROM bs.ventas_contables c + JOIN tmp.empresas_receptoras er on er.empresa_id = c.empresa_id + WHERE month BETWEEN ? AND ? + GROUP BY c.Gasto + ) sub ON sub.Gasto = b.Id_Gasto COLLATE utf8_general_ci + SET b.', vTwoYearsAgo, '= IFNULL(b.', vTwoYearsAgo, ', 0) + sub.y2, + b.', vOneYearAgo, '= IFNULL(b.', vOneYearAgo, ', 0) + sub.y1, + b.', vYear, '= IFNULL(b.', vYear, ', 0) + sub.y0') + USING vCurYear-2, + vCurYear-1, + vCurYear, + vStartingMonth, + vEndingMonth; + + -- Ventas intra grupo + IF NOT vInterGroupSalesIncluded THEN + + SELECT lft, rgt INTO @grupoLft, @grupoRgt + FROM tmp.balance b + WHERE TRIM(b.`name`) = 'Grupo'; + + DELETE + FROM tmp.balance + WHERE lft BETWEEN @grupoLft AND @grupoRgt; + + END IF; + + -- Rellenamos el valor de los padres con la suma de los hijos + CREATE OR REPLACE TEMPORARY TABLE tmp.balance_aux + SELECT * FROM tmp.balance; + + EXECUTE IMMEDIATE + CONCAT('UPDATE tmp.balance b + JOIN ( + SELECT b1.id, + b1.name, + SUM(b2.', vYear,') thisYear, + SUM(b2.', vOneYearAgo,') oneYearAgo, + SUM(b2.', vTwoYearsAgo,') twoYearsAgo + FROM tmp.nest b1 + JOIN tmp.balance_aux b2 on b2.lft BETWEEN b1.lft and b1.rgt + GROUP BY b1.id)sub ON sub.id = b.id + SET b.', vYear, ' = thisYear, + b.', vOneYearAgo, ' = oneYearAgo, + b.', vTwoYearsAgo, ' = twoYearsAgo'); + + SELECT *, CONCAT('',ifnull(Id_Gasto,'')) newgasto + FROM tmp.balance; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/entry_recalc.sql b/db/routines/vn/procedures/entry_recalc.sql index 2410d380d..b426a9b5b 100644 --- a/db/routines/vn/procedures/entry_recalc.sql +++ b/db/routines/vn/procedures/entry_recalc.sql @@ -26,7 +26,7 @@ BEGIN LEAVE l; END IF; - CALL vn2008.buy_tarifas_entry(vEntryFk); + CALL buy_recalcPricesByEntry(vEntryFk); END LOOP; CLOSE vCur; diff --git a/db/routines/vn2008/procedures/article_multiple_buy.sql b/db/routines/vn2008/procedures/article_multiple_buy.sql deleted file mode 100644 index 5b0d402c5..000000000 --- a/db/routines/vn2008/procedures/article_multiple_buy.sql +++ /dev/null @@ -1,6 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`article_multiple_buy`(v_date DATETIME, wh INT) -BEGIN - CALL vn.item_multipleBuy(v_date, wh); -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/article_multiple_buy_date.sql b/db/routines/vn2008/procedures/article_multiple_buy_date.sql deleted file mode 100644 index 7b197cb01..000000000 --- a/db/routines/vn2008/procedures/article_multiple_buy_date.sql +++ /dev/null @@ -1,9 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`article_multiple_buy_date`( - IN vDated DATETIME, - IN vWarehouseFk TINYINT(3) -) -BEGIN - CALL vn.item_multipleBuyByDate(vDated, vWarehouseFk); -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/buy_tarifas.sql b/db/routines/vn2008/procedures/buy_tarifas.sql deleted file mode 100644 index c6e8dff90..000000000 --- a/db/routines/vn2008/procedures/buy_tarifas.sql +++ /dev/null @@ -1,6 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`buy_tarifas`(vBuyFk INT) -BEGIN - CALL vn.buy_recalcPricesByBuy(vBuyFk); -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/buy_tarifas_entry.sql b/db/routines/vn2008/procedures/buy_tarifas_entry.sql deleted file mode 100644 index 3fc0739e0..000000000 --- a/db/routines/vn2008/procedures/buy_tarifas_entry.sql +++ /dev/null @@ -1,11 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`buy_tarifas_entry`(IN vEntryFk INT(11)) -BEGIN -/** - * Recalcula los precios de una entrada - * - * @param vEntryFk - */ - CALL vn.buy_recalcPricesByEntry(vEntryFk); -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/traslado.sql b/db/routines/vn2008/procedures/traslado.sql index 9c1e5efe7..0e302e156 100644 --- a/db/routines/vn2008/procedures/traslado.sql +++ b/db/routines/vn2008/procedures/traslado.sql @@ -61,7 +61,7 @@ BEGIN AND v.`visible` ON DUPLICATE KEY UPDATE visibleLanding = v.`visible`; - CALL availableTraslate(warehouseShipment, dateShipment, NULL); + CALL vn.available_traslate(warehouseShipment, dateShipment, NULL); INSERT INTO tmp.item(itemFk, available) SELECT a.item_id, a.available @@ -69,7 +69,7 @@ BEGIN WHERE a.available ON DUPLICATE KEY UPDATE available = a.available; - CALL availableTraslate(warehouseLanding, dateLanding, warehouseShipment); + CALL vn.available_traslate(warehouseLanding, dateLanding, warehouseShipment); INSERT INTO tmp.item(itemFk, availableLanding) SELECT a.item_id, a.available diff --git a/db/versions/10859-pinkGerbera/00-firstScript.sql b/db/versions/10859-pinkGerbera/00-firstScript.sql new file mode 100644 index 000000000..8fcadf605 --- /dev/null +++ b/db/versions/10859-pinkGerbera/00-firstScript.sql @@ -0,0 +1,15 @@ +CREATE OR REPLACE PROCEDURE `vn`.`balance_create`() BEGIN END; +CREATE OR REPLACE PROCEDURE `vn`.`buy_recalcPricesByEntry`() BEGIN END; +CREATE OR REPLACE PROCEDURE `vn`.`buy_recalcPricesByBuy`() BEGIN END; + +GRANT EXECUTE ON PROCEDURE vn.balance_create TO `financialBoss`; +GRANT EXECUTE ON PROCEDURE vn.balance_create TO `hrBoss`; + +GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByEntry TO `buyer`; +GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByEntry TO `claimManager`; +GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByEntry TO `employee`; + +GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByBuy TO `buyer`; +GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByBuy TO `entryEditor`; +GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByBuy TO `claimManager`; +GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByBuy TO `employee`; \ No newline at end of file From 01512c7d36f2cdce1fa36010ecd79460316626d5 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 5 Feb 2024 13:52:28 +0100 Subject: [PATCH 019/456] feat: refs #6777 change dependecies vn2008 to vn --- .../bi/procedures/Greuge_Evolution_Add.sql | 10 ++-- .../bi/procedures/analisis_ventas_update.sql | 52 +++++++++---------- .../bi/procedures/claim_ratio_routine.sql | 24 ++++----- db/routines/bi/procedures/comparativa_add.sql | 10 ++-- .../bi/procedures/comparativa_add_manual.sql | 10 ++-- .../bs/procedures/comercialesCompleto.sql | 18 +++---- .../bs/procedures/manaCustomerUpdate.sql | 8 +-- .../bs/procedures/ventas_contables_add.sql | 20 +++---- .../ventas_contables_por_cliente.sql | 30 +++++------ .../vn/functions/getAlert3StateTest.sql | 14 ++--- .../vn/functions/isPalletHomogeneus.sql | 6 +-- .../vn/functions/ticketPositionInPath.sql | 6 +-- .../vn/procedures/invoiceFromAddress.sql | 11 ++-- .../vn2008/procedures/availableTraslate.sql | 2 +- db/routines/vn2008/procedures/clean.sql | 12 ++--- .../procedures/confection_control_source.sql | 26 +++++----- .../vn2008/procedures/historico_multiple.sql | 2 +- db/routines/vn2008/views/Tickets_state.sql | 7 --- db/routines/vn2008/views/Tickets_turno.sql | 6 --- 19 files changed, 132 insertions(+), 142 deletions(-) delete mode 100644 db/routines/vn2008/views/Tickets_state.sql delete mode 100644 db/routines/vn2008/views/Tickets_turno.sql diff --git a/db/routines/bi/procedures/Greuge_Evolution_Add.sql b/db/routines/bi/procedures/Greuge_Evolution_Add.sql index 83033cbf8..36491cbab 100644 --- a/db/routines/bi/procedures/Greuge_Evolution_Add.sql +++ b/db/routines/bi/procedures/Greuge_Evolution_Add.sql @@ -92,12 +92,12 @@ BEGIN UPDATE bi.Greuge_Evolution ge JOIN ( SELECT cs.Id_Cliente, sum(Valor * Cantidad) as Importe - FROM vn2008.Tickets t - JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna - JOIN vn2008.Movimientos m on m.Id_Ticket = t.Id_Ticket + FROM vn.ticket t + JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk + JOIN vn2008.Movimientos m on m.Id_Ticket = t.id JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento - WHERE t.Fecha >= datFEC - AND t.Fecha < datFEC_TOMORROW + WHERE t.shipped >= datFEC + AND t.shipped < datFEC_TOMORROW AND mc.Id_Componente = 17 -- Recobro GROUP BY cs.Id_Cliente ) sub using(Id_Cliente) diff --git a/db/routines/bi/procedures/analisis_ventas_update.sql b/db/routines/bi/procedures/analisis_ventas_update.sql index 4f6a448ed..228660d07 100644 --- a/db/routines/bi/procedures/analisis_ventas_update.sql +++ b/db/routines/bi/procedures/analisis_ventas_update.sql @@ -10,18 +10,18 @@ BEGIN OR (Año = YEAR(vLastMonth) AND Mes >= MONTH(vLastMonth)); INSERT INTO analisis_ventas ( - Familia, - Reino, - Comercial, - Comprador, - Provincia, - almacen, - Año, - Mes, - Semana, - Vista, - Importe - ) + Familia, + Reino, + Comercial, + Comprador, + Provincia, + almacen, + Año, + Mes, + Semana, + Vista, + Importe + ) SELECT tp.Tipo AS Familia, r.reino AS Reino, @@ -35,19 +35,19 @@ BEGIN dm.description AS Vista, bt.importe AS Importe FROM bs.ventas bt - LEFT JOIN vn2008.Tipos tp ON tp.tipo_id = bt.tipo_id - LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id - LEFT JOIN vn2008.Clientes c on c.Id_Cliente = bt.Id_Cliente - LEFT JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = c.Id_Trabajador - LEFT JOIN vn2008.Trabajadores tr2 ON tr2.Id_Trabajador = tp.Id_Trabajador - JOIN vn2008.time tm ON tm.date = bt.fecha - JOIN vn2008.Movimientos m ON m.Id_Movimiento = bt.Id_Movimiento - LEFT JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket - JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia - LEFT JOIN vn.deliveryMethod dm ON dm.id = a.Vista - LEFT JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna - LEFT JOIN vn2008.province p ON p.province_id = cs.province_id - LEFT JOIN vn.warehouse w ON w.id = t.warehouse_id - WHERE bt.fecha >= vLastMonth AND r.mercancia; + LEFT JOIN vn2008.Tipos tp ON tp.tipo_id = bt.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + LEFT JOIN vn2008.Clientes c on c.Id_Cliente = bt.Id_Cliente + LEFT JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = c.Id_Trabajador + LEFT JOIN vn2008.Trabajadores tr2 ON tr2.Id_Trabajador = tp.Id_Trabajador + JOIN vn2008.time tm ON tm.date = bt.fecha + JOIN vn2008.Movimientos m ON m.Id_Movimiento = bt.Id_Movimiento + LEFT JOIN vn.ticket t ON t.id = m.Id_Ticket + JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk + LEFT JOIN vn.deliveryMethod dm ON dm.id = a.Vista + LEFT JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk + LEFT JOIN vn2008.province p ON p.province_id = cs.province_id + LEFT JOIN vn.warehouse w ON w.id = t.warehouseFk + WHERE bt.fecha >= vLastMonth AND r.mercancia; END$$ DELIMITER ; diff --git a/db/routines/bi/procedures/claim_ratio_routine.sql b/db/routines/bi/procedures/claim_ratio_routine.sql index 4616bcb9e..dce098e2d 100644 --- a/db/routines/bi/procedures/claim_ratio_routine.sql +++ b/db/routines/bi/procedures/claim_ratio_routine.sql @@ -59,18 +59,18 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; CREATE TEMPORARY TABLE tmp.ticket_list (PRIMARY KEY (Id_Ticket)) - SELECT DISTINCT t.Id_Ticket + SELECT DISTINCT t.id FROM vn2008.Movimientos_componentes mc JOIN vn2008.Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento - JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket - JOIN vn2008.Tickets_state ts ON ts.Id_Ticket = t.Id_Ticket - JOIN vn.ticketTracking tt ON tt.id = ts.inter_id - JOIN vn2008.state s ON s.id = tt.stateFk + JOIN vn.ticket t ON t.id = m.Id_Ticket + JOIN vn.ticketLastState ts ON ts.ticketFk = t.id + JOIN vn.ticketTracking tt ON tt.id = ts.ticketTrackingFk + JOIN vn.state s ON s.id = tt.stateFk WHERE mc.Id_Componente = 17 AND mc.greuge = 0 - AND t.Fecha >= '2016-10-01' - AND t.Fecha < util.VN_CURDATE() - AND s.alert_level >= 3; + AND t.shipped >= '2016-10-01' + AND t.shipped < util.VN_CURDATE() + AND s.alertLevel >= 3; DELETE g.* FROM vn2008.Greuges g @@ -82,15 +82,15 @@ BEGIN SELECT Id_Cliente ,concat('recobro ', m.Id_Ticket), - round(SUM(mc.Valor*Cantidad),2) AS dif - ,date(t.Fecha) + ,date(t.shipped) , 2 ,tt.Id_Ticket FROM vn2008.Movimientos m - JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket - JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.Id_Ticket + JOIN vn.ticket t ON t.id = m.Id_Ticket + JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.id JOIN vn2008.Movimientos_componentes mc ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente = 17 - GROUP BY t.Id_Ticket + GROUP BY t.id HAVING ABS(dif) > 1; UPDATE vn2008.Movimientos_componentes mc diff --git a/db/routines/bi/procedures/comparativa_add.sql b/db/routines/bi/procedures/comparativa_add.sql index 4297c8aff..ac06798db 100644 --- a/db/routines/bi/procedures/comparativa_add.sql +++ b/db/routines/bi/procedures/comparativa_add.sql @@ -15,17 +15,17 @@ BEGIN IF lastCOMP < vMaxPeriod - 3 AND vMaxWeek > 3 THEN REPLACE vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price) - SELECT tm.period as Periodo, m.Id_Article, t.warehouse_id, sum(m.Cantidad), sum(v.importe) + SELECT tm.period as Periodo, m.Id_Article, t.warehouseFk, sum(m.Cantidad), sum(v.importe) FROM bs.ventas v JOIN vn2008.time tm ON tm.date = v.fecha JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id JOIN vn2008.reinos r ON r.id = tp.reino_id - JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket + JOIN vn.ticket t ON t.id = m.Id_Ticket WHERE tm.period BETWEEN lastCOMP AND vMaxPeriod - 3 - AND t.Id_Cliente NOT IN(400,200) - AND t.warehouse_id NOT IN (0,13) - GROUP BY m.Id_Article, Periodo, t.warehouse_id; + AND t.clientFk NOT IN(400,200) + AND t.warehouseFk NOT IN (0,13) + GROUP BY m.Id_Article, Periodo, t.warehouseFk; END IF; END$$ diff --git a/db/routines/bi/procedures/comparativa_add_manual.sql b/db/routines/bi/procedures/comparativa_add_manual.sql index 281e15b23..2b05b1277 100644 --- a/db/routines/bi/procedures/comparativa_add_manual.sql +++ b/db/routines/bi/procedures/comparativa_add_manual.sql @@ -25,16 +25,16 @@ BEGIN WHERE Periodo BETWEEN periodStart AND periodEnd; INSERT INTO vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price) - SELECT tm.period as Periodo, m.Id_Article, t.warehouse_id, sum(m.Cantidad), sum(v.importe) + SELECT tm.period as Periodo, m.Id_Article, t.warehouseFk, sum(m.Cantidad), sum(v.importe) FROM bs.ventas v JOIN vn2008.time tm ON tm.date = v.fecha JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id JOIN vn2008.reinos r ON r.id = tp.reino_id - JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket + JOIN vn.ticket t ON t.id = m.Id_Ticket WHERE tm.period BETWEEN periodStart AND periodEnd - AND t.Id_Cliente NOT IN(400,200) - AND t.warehouse_id NOT IN (0,13) - GROUP BY m.Id_Article, Periodo, t.warehouse_id; + AND t.clientFk NOT IN(400,200) + AND t.warehouseFk NOT IN (0,13) + GROUP BY m.Id_Article, Periodo, t.warehouseFk; END$$ DELIMITER ; diff --git a/db/routines/bs/procedures/comercialesCompleto.sql b/db/routines/bs/procedures/comercialesCompleto.sql index 323d5cd00..8f519b6ca 100644 --- a/db/routines/bs/procedures/comercialesCompleto.sql +++ b/db/routines/bs/procedures/comercialesCompleto.sql @@ -70,23 +70,23 @@ BEGIN AND (v.fecha BETWEEN TIMESTAMPADD(DAY, - DAY(vDate) + 1, vDate) AND TIMESTAMPADD(DAY, - 1, vDate)) GROUP BY Id_Cliente) mes_actual ON mes_actual.Id_Cliente = c.Id_Cliente LEFT JOIN - (SELECT t.Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur - FROM vn2008.Tickets t - JOIN vn2008.Clientes c ON c.Id_Cliente = t.Id_Cliente - JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket + (SELECT t.clientFk, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur + FROM vn.ticket t + JOIN vn2008.Clientes c ON c.Id_Cliente = t.clientFk + JOIN vn2008.Movimientos m ON m.Id_Ticket = t.id LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador WHERE (c.Id_Trabajador = vWorker OR tr.boss = vWorker) - AND t.Fecha BETWEEN vDate AND util.dayEnd(LAST_DAY(vDate)) + AND t.shipped BETWEEN vDate AND util.dayEnd(LAST_DAY(vDate)) GROUP BY Id_Cliente) f ON c.Id_Cliente = f.Id_Cliente LEFT JOIN - (SELECT MAX(t.Fecha) LastTicket, c.Id_Cliente - FROM vn2008.Tickets t - JOIN vn2008.Clientes c ON c.Id_cliente = t.Id_Cliente + (SELECT MAX(t.shipped) LastTicket, c.Id_Cliente + FROM vn.ticket t + JOIN vn2008.Clientes c ON c.Id_cliente = t.clientFk LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador WHERE (c.Id_Trabajador = vWorker OR tr.boss = vWorker) - GROUP BY t.Id_Cliente) LastTicket ON LastTicket.Id_Cliente = c.Id_Cliente + GROUP BY t.clientFk) LastTicket ON LastTicket.Id_Cliente = c.Id_Cliente LEFT JOIN ( SELECT SUM(importe) peso, c.Id_Cliente diff --git a/db/routines/bs/procedures/manaCustomerUpdate.sql b/db/routines/bs/procedures/manaCustomerUpdate.sql index 1e9cb8429..7a4ee6dba 100644 --- a/db/routines/bs/procedures/manaCustomerUpdate.sql +++ b/db/routines/bs/procedures/manaCustomerUpdate.sql @@ -68,13 +68,13 @@ BEGIN FROM ( SELECT cs.Id_Cliente, Cantidad * Valor as mana - FROM vn2008.Tickets t + FROM vn.ticket t JOIN vn2008.Consignatarios cs using(Id_Consigna) - JOIN vn2008.Movimientos m on m.Id_Ticket = t.Id_Ticket + JOIN vn2008.Movimientos m on m.Id_Ticket = t.id JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento WHERE Id_Componente IN (vManaAutoId, vManaId, vClaimManaId) - AND t.Fecha > vFromDated - AND date(t.Fecha) <= vToDated + AND t.shipped > vFromDated + AND date(t.shipped) <= vToDated UNION ALL SELECT r.Id_Cliente, - Entregado FROM vn2008.Recibos r diff --git a/db/routines/bs/procedures/ventas_contables_add.sql b/db/routines/bs/procedures/ventas_contables_add.sql index d8e963e3e..554972e4c 100644 --- a/db/routines/bs/procedures/ventas_contables_add.sql +++ b/db/routines/bs/procedures/ventas_contables_add.sql @@ -19,11 +19,11 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; CREATE TEMPORARY TABLE tmp.ticket_list - (PRIMARY KEY (Id_Ticket)) + (PRIMARY KEY (id)) ENGINE = MEMORY - SELECT Id_Ticket - FROM vn2008.Tickets t - JOIN vn2008.Facturas f ON f.Id_Factura = t.Factura + SELECT id + FROM vn.ticket t + JOIN vn2008.Facturas f ON f.Id_Factura = t.refFk WHERE year(f.Fecha) = vYear AND month(f.Fecha) = vMonth; @@ -46,7 +46,7 @@ BEGIN ) as grupo , tp.reino_id , a.tipo_id - , t.empresa_id + , t.companyFk , 7000000000 + IF(e.empresa_grupo = e2.empresa_grupo ,1 @@ -54,12 +54,12 @@ BEGIN ) * 1000000 + tp.reino_id * 10000 as Gasto FROM vn2008.Movimientos m - JOIN vn2008.Tickets t on t.Id_Ticket = m.Id_Ticket - JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna + JOIN vn.ticket t on t.id = m.Id_Ticket + JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente - JOIN tmp.ticket_list tt on tt.Id_Ticket = t.Id_Ticket + JOIN tmp.ticket_list tt on tt.id = t.id JOIN vn2008.Articles a on m.Id_Article = a.Id_Article - JOIN vn2008.empresa e on e.id = t.empresa_id + JOIN vn2008.empresa e on e.id = t.companyFk LEFT JOIN vn2008.empresa e2 on e2.Id_Cliente = c.Id_Cliente JOIN vn2008.Tipos tp on tp.tipo_id = a.tipo_id WHERE Cantidad <> 0 @@ -92,7 +92,7 @@ BEGIN JOIN vn.ticket t ON ts.ticketFk = t.id JOIN vn.address a on a.id = t.addressFk JOIN vn.client cl on cl.id = a.clientFk - JOIN tmp.ticket_list tt on tt.Id_Ticket = t.id + JOIN tmp.ticket_list tt on tt.id = t.id JOIN vn.company c on c.id = t.companyFk LEFT JOIN vn.company c2 on c2.clientFk = cl.id GROUP BY grupo, t.companyFk ; diff --git a/db/routines/bs/procedures/ventas_contables_por_cliente.sql b/db/routines/bs/procedures/ventas_contables_por_cliente.sql index 9f1399025..26da1b870 100644 --- a/db/routines/bs/procedures/ventas_contables_por_cliente.sql +++ b/db/routines/bs/procedures/ventas_contables_por_cliente.sql @@ -10,38 +10,38 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; CREATE TEMPORARY TABLE tmp.ticket_list - (PRIMARY KEY (Id_Ticket)) - SELECT Id_Ticket - FROM vn2008.Tickets t - JOIN vn2008.Facturas f ON f.Id_Factura = t.Factura - WHERE year(f.Fecha) = vYear - AND month(f.Fecha) = vMonth; - + (PRIMARY KEY (id)) + SELECT id + FROM vn.ticket t + JOIN vn2008.Facturas f ON f.Id_Factura = t.refFk + WHERE year(f.shipped) = vYear + AND month(f.shipped) = vMonth; + SELECT vYear Año, vMonth Mes, - t.Id_Cliente, + t.clientFk, round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) Venta, IF(e.empresa_grupo = e2.empresa_grupo, 1, IF(e2.empresa_grupo,2,0)) AS grupo, - t.empresa_id empresa + t.companyFk empresa FROM vn2008.Movimientos m - JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket - JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna + JOIN vn.ticket t ON t.id = m.Id_Ticket + JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk JOIN vn2008.Clientes c ON c.Id_Cliente = cs.Id_Cliente - JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.Id_Ticket + JOIN tmp.ticket_list tt ON tt.id = t.id JOIN vn2008.Articles a ON m.Id_Article = a.Id_Article - JOIN vn2008.empresa e ON e.id = t.empresa_id + JOIN vn2008.empresa e ON e.id = t.companyFk LEFT JOIN vn2008.empresa e2 ON e2.Id_Cliente = c.Id_Cliente JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id WHERE Cantidad <> 0 AND Preu <> 0 AND m.Descuento <> 100 AND a.tipo_id != 188 - GROUP BY t.Id_Cliente, grupo,t.empresa_id; + GROUP BY t.clientFk, grupo,t.companyFk; DROP TEMPORARY TABLE tmp.ticket_list; - + END$$ DELIMITER ; diff --git a/db/routines/vn/functions/getAlert3StateTest.sql b/db/routines/vn/functions/getAlert3StateTest.sql index 6a14d80d4..beba0948c 100644 --- a/db/routines/vn/functions/getAlert3StateTest.sql +++ b/db/routines/vn/functions/getAlert3StateTest.sql @@ -11,9 +11,9 @@ BEGIN SELECT a.Vista INTO vDeliveryType - FROM vn2008.Tickets t - JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia - WHERE Id_Ticket = vTicket; + FROM ticket t + JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk + WHERE id = vTicket; CASE vDeliveryType WHEN 1 THEN -- AGENCIAS @@ -23,11 +23,11 @@ BEGIN SET vCode = 'ON_DELIVERY'; ELSE -- MERCADO, OTROS - SELECT t.warehouse_id <> w.warehouse_id INTO isWaitingForPickUp - FROM vn2008.Tickets t + SELECT t.warehouseFk <> w.warehouse_id INTO isWaitingForPickUp + FROM ticket t LEFT JOIN vn2008.warehouse_pickup w - ON w.agency_id = t.Id_Agencia AND w.warehouse_id = t.warehouse_id - WHERE t.Id_Ticket = vTicket; + ON w.agency_id = t.agencyModeFk AND w.warehouse_id = t.warehouseFk + WHERE t.id = vTicket; IF isWaitingForPickUp THEN SET vCode = 'WAITING_FOR_PICKUP'; diff --git a/db/routines/vn/functions/isPalletHomogeneus.sql b/db/routines/vn/functions/isPalletHomogeneus.sql index 39c6461ae..05c20a71b 100644 --- a/db/routines/vn/functions/isPalletHomogeneus.sql +++ b/db/routines/vn/functions/isPalletHomogeneus.sql @@ -14,12 +14,12 @@ BEGIN SELECT COUNT(*) INTO vDistinctRoutesInThePallet FROM ( - SELECT DISTINCT t.Id_Ruta + SELECT DISTINCT t.routeFk FROM vn2008.scan_line sl JOIN vn2008.expeditions e ON e.expeditions_id = sl.code - JOIN vn2008.Tickets t ON t.Id_Ticket = e.ticket_id + JOIN ticket t ON t.id = e.ticket_id WHERE sl.scan_id = vScanId - AND t.Id_Ruta + AND t.routeFk ) t1; RETURN vDistinctRoutesInThePallet = 1; diff --git a/db/routines/vn/functions/ticketPositionInPath.sql b/db/routines/vn/functions/ticketPositionInPath.sql index 9bd2c110e..9a3bb4a0e 100644 --- a/db/routines/vn/functions/ticketPositionInPath.sql +++ b/db/routines/vn/functions/ticketPositionInPath.sql @@ -28,10 +28,10 @@ SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0) SELECT (ag.`name` = 'VN_VALENCIA') INTO vIsValenciaPath - FROM vn2008.Rutas r - JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia + FROM `route` r + JOIN vn2008.Agencias a on a.Id_Agencia = r.agencyModeFk JOIN vn2008.agency ag on ag.agency_id = a.agency_id - WHERE r.Id_Ruta = vMyPath; + WHERE r.id = vMyPath; IF vIsValenciaPath THEN -- Rutas Valencia diff --git a/db/routines/vn/procedures/invoiceFromAddress.sql b/db/routines/vn/procedures/invoiceFromAddress.sql index bde7afd8c..bea49e747 100644 --- a/db/routines/vn/procedures/invoiceFromAddress.sql +++ b/db/routines/vn/procedures/invoiceFromAddress.sql @@ -10,10 +10,13 @@ BEGIN CREATE TEMPORARY TABLE `tmp.``ticketToInvoice` (PRIMARY KEY (`id`)) - ENGINE = MEMORY - SELECT Id_Ticket id FROM vn2008.Tickets WHERE (Fecha BETWEEN vMinDateTicket - AND vMaxTicketDate) AND Id_Consigna = vAddress - AND Factura IS NULL AND empresa_id = vCompany; + ENGINE = MEMORY + SELECT id id + FROM ticket + WHERE (shipped BETWEEN vMinDateTicket AND vMaxTicketDate) + AND addressFk = vAddress + AND refFk IS NULL + AND companyFk = vCompany; END$$ DELIMITER ; diff --git a/db/routines/vn2008/procedures/availableTraslate.sql b/db/routines/vn2008/procedures/availableTraslate.sql index 6328560c8..399302d7b 100644 --- a/db/routines/vn2008/procedures/availableTraslate.sql +++ b/db/routines/vn2008/procedures/availableTraslate.sql @@ -18,7 +18,7 @@ proc: BEGIN -- Calcula algunos parámetros necesarios SET vDatedFrom = TIMESTAMP(vDated, '00:00:00'); SET vDatedTo = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDated), '23:59:59'); - SELECT FechaInventario INTO vDatedInventory FROM tblContadores; + SELECT inventoried INTO vDatedInventory FROM vn.config; SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vDatedReserve FROM hedera.orderConfig; diff --git a/db/routines/vn2008/procedures/clean.sql b/db/routines/vn2008/procedures/clean.sql index bd8a324c6..dba4799d9 100644 --- a/db/routines/vn2008/procedures/clean.sql +++ b/db/routines/vn2008/procedures/clean.sql @@ -34,8 +34,8 @@ proc: BEGIN WHERE t.Fecha < vDate; DELETE tobs - FROM ticket_observation tobs - JOIN Tickets t ON tobs.Id_Ticket = t.Id_Ticket + FROM ticketObservation tobs + JOIN Tickets t ON tobs.ticketFk = t.Id_Ticket WHERE t.Fecha < vDate; DELETE tobs @@ -45,10 +45,10 @@ proc: BEGIN DELETE FROM Remesas WHERE `Fecha Remesa` < vDate18; - DELETE tt.* - FROM Tickets_turno tt - LEFT JOIN Movimientos m USING(Id_Ticket) - WHERE m.Id_Article IS NULL; + DELETE tw.* + FROM vn.ticketWeekly tw + LEFT JOIN vn.sale s USING(ticketFk) + WHERE s.Id_Article IS NULL; DELETE FROM cl_main WHERE Fecha < vDate18; DELETE FROM hedera.`order` WHERE date_send < vDate18; diff --git a/db/routines/vn2008/procedures/confection_control_source.sql b/db/routines/vn2008/procedures/confection_control_source.sql index 77b4df5f3..2951e9c38 100644 --- a/db/routines/vn2008/procedures/confection_control_source.sql +++ b/db/routines/vn2008/procedures/confection_control_source.sql @@ -11,33 +11,33 @@ BEGIN CREATE TEMPORARY TABLE tmp.production_buffer ENGINE = MEMORY SELECT - date(t.Fecha) as Fecha, - hour(t.Fecha) as Hora, - hour(t.Fecha) as Departure, - t.Id_Ticket, + date(t.shipped) as Fecha, + hour(t.shipped) as Hora, + hour(t.shipped) as Departure, + t.id, m.Id_Movimiento, m.Cantidad, m.Concepte, ABS(m.Reservado) Reservado, i.Categoria, tp.Tipo, - t.Alias as Cliente, + t.nickname as Cliente, wh.name as Almacen, - t.warehouse_id, + t.warehouseFk, cs.province_id, a.agency_id, ct.description as Taller, stock.visible, stock.available - FROM vn2008.Tickets t - JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia - JOIN vn.warehouse wh ON wh.id = t.warehouse_id - JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket + FROM vn.ticket t + JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk + JOIN vn.warehouse wh ON wh.id = t.warehouseFk + JOIN vn2008.Movimientos m ON m.Id_Ticket = t.id JOIN vn2008.Articles i ON i.Id_Article = m.Id_Article JOIN vn2008.Tipos tp ON tp.tipo_id = i.tipo_id JOIN vn.confectionType ct ON ct.id = tp.confeccion - JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna - LEFT JOIN vn.ticketState tls on tls.ticketFk = t.Id_Ticket + JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk + LEFT JOIN vn.ticketState tls on tls.ticketFk = t.id LEFT JOIN ( SELECT item_id, sum(visible) visible, sum(available) available @@ -61,7 +61,7 @@ BEGIN WHERE tp.confeccion AND tls.alertLevel < maxAlertLevel AND wh.hasConfectionTeam - AND t.Fecha BETWEEN vDated AND vEndingDate + AND t.shipped BETWEEN vDated AND vEndingDate AND m.Cantidad > 0; -- Entradas diff --git a/db/routines/vn2008/procedures/historico_multiple.sql b/db/routines/vn2008/procedures/historico_multiple.sql index ae4045a34..c68fbf2ad 100644 --- a/db/routines/vn2008/procedures/historico_multiple.sql +++ b/db/routines/vn2008/procedures/historico_multiple.sql @@ -4,7 +4,7 @@ BEGIN DECLARE vDateInventory DATETIME; - SELECT Fechainventario INTO vDateInventory FROM tblContadores; + SELECT inventoried INTO vDateInventory FROM vn.config; SET @a = 0; diff --git a/db/routines/vn2008/views/Tickets_state.sql b/db/routines/vn2008/views/Tickets_state.sql deleted file mode 100644 index be59a750f..000000000 --- a/db/routines/vn2008/views/Tickets_state.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE OR REPLACE DEFINER=`root`@`localhost` - SQL SECURITY DEFINER - VIEW `vn2008`.`Tickets_state` -AS SELECT `t`.`ticketFk` AS `Id_Ticket`, - `t`.`ticketTrackingFk` AS `inter_id`, - `t`.`name` AS `state_name` -FROM `vn`.`ticketLastState` `t` diff --git a/db/routines/vn2008/views/Tickets_turno.sql b/db/routines/vn2008/views/Tickets_turno.sql deleted file mode 100644 index 28bc2d55f..000000000 --- a/db/routines/vn2008/views/Tickets_turno.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE OR REPLACE DEFINER=`root`@`localhost` - SQL SECURITY DEFINER - VIEW `vn2008`.`Tickets_turno` -AS SELECT `tw`.`ticketFk` AS `Id_Ticket`, - `tw`.`weekDay` AS `weekDay` -FROM `vn`.`ticketWeekly` `tw` From 350088614991bee0909b1ba54af10b14ff72ff6d Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 6 Feb 2024 08:37:28 +0100 Subject: [PATCH 020/456] feat: refs #6777 tabulacion --- .../procedures/confection_control_source.sql | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/db/routines/vn2008/procedures/confection_control_source.sql b/db/routines/vn2008/procedures/confection_control_source.sql index 2951e9c38..6833cd29d 100644 --- a/db/routines/vn2008/procedures/confection_control_source.sql +++ b/db/routines/vn2008/procedures/confection_control_source.sql @@ -15,31 +15,31 @@ BEGIN hour(t.shipped) as Hora, hour(t.shipped) as Departure, t.id, - m.Id_Movimiento, + m.Id_Movimiento, m.Cantidad, m.Concepte, - ABS(m.Reservado) Reservado, + ABS(m.Reservado) Reservado, i.Categoria, - tp.Tipo, + tp.Tipo, t.nickname as Cliente, wh.name as Almacen, t.warehouseFk, cs.province_id, a.agency_id, - ct.description as Taller, - stock.visible, - stock.available + ct.description as Taller, + stock.visible, + stock.available FROM vn.ticket t JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk JOIN vn.warehouse wh ON wh.id = t.warehouseFk JOIN vn2008.Movimientos m ON m.Id_Ticket = t.id - JOIN vn2008.Articles i ON i.Id_Article = m.Id_Article + JOIN vn2008.Articles i ON i.Id_Article = m.Id_Article JOIN vn2008.Tipos tp ON tp.tipo_id = i.tipo_id - JOIN vn.confectionType ct ON ct.id = tp.confeccion + JOIN vn.confectionType ct ON ct.id = tp.confeccion JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk LEFT JOIN vn.ticketState tls on tls.ticketFk = t.id - LEFT JOIN - ( + LEFT JOIN + ( SELECT item_id, sum(visible) visible, sum(available) available FROM ( @@ -57,12 +57,12 @@ BEGIN where cc.cache_id IN (2,8) and cc.params IN ("1","44") ) sub GROUP BY item_id - ) stock ON stock.item_id = m.Id_Article + ) stock ON stock.item_id = m.Id_Article WHERE tp.confeccion AND tls.alertLevel < maxAlertLevel AND wh.hasConfectionTeam AND t.shipped BETWEEN vDated AND vEndingDate - AND m.Cantidad > 0; + AND m.Cantidad > 0; -- Entradas @@ -74,9 +74,9 @@ BEGIN Categoria, Cliente, Almacen, - Taller + Taller ) - SELECT + SELECT tr.shipment AS Fecha, e.Id_Entrada AS Id_Ticket, c.Cantidad, @@ -96,10 +96,7 @@ BEGIN WHERE who.hasConfectionTeam AND tp.confeccion AND tr.shipment BETWEEN vDated AND vEndingDate; - - - SELECT * FROM tmp.production_buffer; - + SELECT * FROM tmp.production_buffer; END$$ DELIMITER ; From c598e62d1ecc50e77ef0662840ca1afff3d5acdc Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 6 Feb 2024 14:03:33 +0100 Subject: [PATCH 021/456] feat: refs #6777 change dependencies vn2008 to vn part7 --- db/routines/bi/views/v_ventas_contables.sql | 10 +- db/routines/vn/views/ticketMRW.sql | 16 +-- .../procedures/ListaTicketsEncajados.sql | 36 ++--- db/routines/vn2008/procedures/clean.sql | 19 +-- .../procedures/customerDebtEvolution.sql | 32 ++--- .../emailYesterdayPurchasesByConsigna.sql | 16 +-- .../vn2008/procedures/embalajes_stocks.sql | 74 +++++----- .../procedures/embalajes_stocks_detalle.sql | 135 +++++++++--------- .../vn2008/procedures/historico_absoluto.sql | 20 +-- .../vn2008/procedures/historico_multiple.sql | 12 +- .../vn2008/procedures/preOrdenarRuta.sql | 24 ++-- .../vn2008/procedures/prepare_ticket_list.sql | 12 +- .../vn2008/procedures/risk_vs_client_list.sql | 10 +- db/routines/vn2008/views/item_out.sql | 8 +- 14 files changed, 213 insertions(+), 211 deletions(-) diff --git a/db/routines/bi/views/v_ventas_contables.sql b/db/routines/bi/views/v_ventas_contables.sql index 373fcdd3f..82bbeeaac 100644 --- a/db/routines/bi/views/v_ventas_contables.sql +++ b/db/routines/bi/views/v_ventas_contables.sql @@ -11,13 +11,13 @@ AS SELECT `time`.`year` AS `year`, FROM ( ( ( - `vn2008`.`Tickets` `t` - JOIN `bi`.`f_tvc` ON(`t`.`Id_Ticket` = `bi`.`f_tvc`.`Id_Ticket`) + `vn`.`ticket` `t` + JOIN `bi`.`f_tvc` ON(`t`.`id` = `bi`.`f_tvc`.`Id_Ticket`) ) - JOIN `vn2008`.`Movimientos` `m` ON(`t`.`Id_Ticket` = `m`.`Id_Ticket`) + JOIN `vn2008`.`Movimientos` `m` ON(`t`.`id` = `m`.`Id_Ticket`) ) - JOIN `vn2008`.`time` ON(`time`.`date` = cast(`t`.`Fecha` AS date)) + JOIN `vn2008`.`time` ON(`time`.`date` = cast(`t`.`shipped` AS date)) ) -WHERE `t`.`Fecha` >= '2014-01-01' +WHERE `t`.`shipped` >= '2014-01-01' GROUP BY `time`.`year`, `time`.`month` diff --git a/db/routines/vn/views/ticketMRW.sql b/db/routines/vn/views/ticketMRW.sql index d612c8742..2677b41e7 100644 --- a/db/routines/vn/views/ticketMRW.sql +++ b/db/routines/vn/views/ticketMRW.sql @@ -1,8 +1,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn`.`ticketMRW` -AS SELECT `Tickets`.`Id_Agencia` AS `id_Agencia`, - `Tickets`.`empresa_id` AS `empresa_id`, +AS SELECT `ticket`.`agencyModeFk` AS `id_Agencia`, + `ticket`.`companyFk` AS `empresa_id`, `Consignatarios`.`consignatario` AS `Consignatario`, `Consignatarios`.`domicilio` AS `DOMICILIO`, `Consignatarios`.`poblacion` AS `POBLACION`, @@ -19,13 +19,13 @@ AS SELECT `Tickets`.`Id_Agencia` AS `id_Agencia`, 0 ) AS `movil`, `Clientes`.`if` AS `IF`, - `Tickets`.`Id_Ticket` AS `Id_Ticket`, - `Tickets`.`warehouse_id` AS `warehouse_id`, + `ticket`.`id` AS `Id_Ticket`, + `ticket`.`warehouseFk` AS `warehouse_id`, `Consignatarios`.`id_consigna` AS `Id_Consigna`, `Paises`.`Codigo` AS `CodigoPais`, - `Tickets`.`Fecha` AS `Fecha`, + `ticket`.`shipped` AS `Fecha`, `province`.`province_id` AS `province_id`, - `Tickets`.`landing` AS `landing` + `ticket`.`landed` AS `landing` FROM ( ( ( @@ -35,8 +35,8 @@ FROM ( `Clientes`.`id_cliente` = `Consignatarios`.`Id_cliente` ) ) - JOIN `vn2008`.`Tickets` ON( - `Consignatarios`.`id_consigna` = `Tickets`.`Id_Consigna` + JOIN `vn`.`ticket` ON( + `Consignatarios`.`id_consigna` = `ticket`.`addressFk` ) ) JOIN `vn2008`.`province` ON( diff --git a/db/routines/vn2008/procedures/ListaTicketsEncajados.sql b/db/routines/vn2008/procedures/ListaTicketsEncajados.sql index 3d3318c63..e220cd9ad 100644 --- a/db/routines/vn2008/procedures/ListaTicketsEncajados.sql +++ b/db/routines/vn2008/procedures/ListaTicketsEncajados.sql @@ -2,24 +2,24 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`ListaTicketsEncajados`(IN intId_Trabajador int) BEGIN -SELECT Agencia, - Consignatario, - ti.Id_Ticket, - ts.userFk Id_Trabajador, - IFNULL(ncajas,0) AS ncajas, - IFNULL(nbultos,0) AS nbultos, - IFNULL(notros,0) AS notros, - ts.code AS Estado - FROM Tickets ti - INNER JOIN Consignatarios ON ti.Id_Consigna = Consignatarios.Id_consigna - INNER JOIN Agencias ON ti.Id_Agencia = Agencias.Id_Agencia - LEFT JOIN (SELECT Ticket_Id,count(*) AS ncajas FROM expeditions WHERE Id_Article=94 GROUP BY ticket_id) sub1 ON ti.Id_Ticket=sub1.Ticket_Id - LEFT JOIN (SELECT Ticket_Id,count(*) AS nbultos FROM expeditions WHERE Id_Article IS NULL GROUP BY ticket_id) sub2 ON ti.Id_Ticket=sub2.Ticket_Id - LEFT JOIN (SELECT Ticket_Id,count(*) AS notros FROM expeditions WHERE Id_Article >0 GROUP BY ticket_id) sub3 ON ti.Id_Ticket=sub3.Ticket_Id - INNER JOIN vn.ticketState ts ON ti.Id_ticket = ts.ticketFk - WHERE ti.Fecha=util.VN_CURDATE() AND - ts.userFk=intId_Trabajador - GROUP BY ti.Id_Ticket; + SELECT Agencia, + Consignatario, + ti.id Id_Ticket, + ts.userFk Id_Trabajador, + IFNULL(ncajas,0) AS ncajas, + IFNULL(nbultos,0) AS nbultos, + IFNULL(notros,0) AS notros, + ts.code AS Estado + FROM Tickets ti + INNER JOIN Consignatarios ON ti.addressFk = Consignatarios.Id_consigna + INNER JOIN Agencias ON ti.agencyModeFk = Agencias.Id_Agencia + LEFT JOIN (SELECT Ticket_Id,count(*) AS ncajas FROM expeditions WHERE Id_Article=94 GROUP BY ticket_id) sub1 ON ti.id=sub1.Ticket_Id + LEFT JOIN (SELECT Ticket_Id,count(*) AS nbultos FROM expeditions WHERE Id_Article IS NULL GROUP BY ticket_id) sub2 ON ti.id=sub2.Ticket_Id + LEFT JOIN (SELECT Ticket_Id,count(*) AS notros FROM expeditions WHERE Id_Article >0 GROUP BY ticket_id) sub3 ON ti.id=sub3.Ticket_Id + INNER JOIN vn.ticketState ts ON ti.id = ts.ticketFk + WHERE ti.shipped=util.VN_CURDATE() AND + ts.userFk=intId_Trabajador + GROUP BY ti.id; END$$ DELIMITER ; diff --git a/db/routines/vn2008/procedures/clean.sql b/db/routines/vn2008/procedures/clean.sql index dba4799d9..00279c090 100644 --- a/db/routines/vn2008/procedures/clean.sql +++ b/db/routines/vn2008/procedures/clean.sql @@ -30,18 +30,19 @@ proc: BEGIN DELETE ts FROM Tickets_stack ts - JOIN Tickets t ON ts.Id_Ticket = t.Id_Ticket - WHERE t.Fecha < vDate; + JOIN vn.ticket t ON ts.Id_Ticket = t.id + WHERE t.shipped < vDate; DELETE tobs FROM ticketObservation tobs - JOIN Tickets t ON tobs.ticketFk = t.Id_Ticket - WHERE t.Fecha < vDate; + JOIN vn.ticket t ON tobs.ticketFk = t.id + WHERE t.shipped < vDate; DELETE tobs FROM movement_label tobs JOIN Movimientos m ON tobs.Id_Movimiento = m.Id_Movimiento - JOIN Tickets t ON m.Id_Ticket = t.Id_Ticket WHERE t.Fecha < vDate; + JOIN vn.ticket t ON m.Id_Ticket = t.id + WHERE t.shipped < vDate; DELETE FROM Remesas WHERE `Fecha Remesa` < vDate18; @@ -92,9 +93,9 @@ proc: BEGIN END IF; -- Tickets Nulos PAK 11/10/2016 - UPDATE Tickets - SET empresa_id = 965 - WHERE Id_Cliente = 31 - AND empresa_id != 965; + UPDATE vn.ticket + SET companyFk = 965 + WHERE clientFk = 31 + AND companyFk != 965; END$$ DELIMITER ; diff --git a/db/routines/vn2008/procedures/customerDebtEvolution.sql b/db/routines/vn2008/procedures/customerDebtEvolution.sql index e5d23f0ef..f6f81e2b0 100644 --- a/db/routines/vn2008/procedures/customerDebtEvolution.sql +++ b/db/routines/vn2008/procedures/customerDebtEvolution.sql @@ -13,28 +13,28 @@ SELECT * FROM LEFT JOIN (SELECT Euros, date(Fecha) as Fecha FROM ( - SELECT Fechacobro as Fecha, Entregado as Euros + SELECT Fechacobro as Fecha, Entregado as Euros FROM Recibos WHERE Id_Cliente = vCustomer - AND Fechacobro >= '2017-01-01' - UNION ALL - SELECT vn.getDueDate(f.Fecha,c.Vencimiento), - Importe + AND Fechacobro >= '2017-01-01' + UNION ALL + SELECT vn.getDueDate(f.Fecha,c.Vencimiento), - Importe FROM Facturas f - JOIN Clientes c ON f.Id_Cliente = c.Id_Cliente + JOIN Clientes c ON f.Id_Cliente = c.Id_Cliente WHERE f.Id_Cliente = vCustomer - AND Fecha >= '2017-01-01' - UNION ALL - SELECT '2016-12-31', Debt + AND Fecha >= '2017-01-01' + UNION ALL + SELECT '2016-12-31', Debt FROM bi.customerDebtInventory WHERE Id_Cliente = vCustomer - UNION ALL - SELECT Fecha, - SUM(Cantidad * Preu * (100 - Descuento ) * 1.10 / 100) - FROM Tickets t - JOIN Movimientos m on m.Id_Ticket = t.Id_Ticket - WHERE Id_Cliente = vCustomer - AND Factura IS NULL - AND Fecha >= '2017-01-01' - GROUP BY Fecha + UNION ALL + SELECT t.shipped, - SUM(m.Cantidad * m.Preu * (100 - m.Descuento ) * 1.10 / 100) + FROM vn.ticket t + JOIN Movimientos m on m.Id_Ticket = t.id + WHERE t.clientFk = vCustomer + AND t.refFk IS NULL + AND t.shipped >= '2017-01-01' + GROUP BY t.shipped ) sub2 ORDER BY Fecha )sub ON time.date = sub.Fecha diff --git a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql b/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql index 439eba5ad..2a753157d 100644 --- a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql +++ b/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql @@ -14,8 +14,8 @@ BEGIN DECLARE txt TEXT; DECLARE rs CURSOR FOR - SELECT t.Id_Ticket, Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION - FROM Tickets t + SELECT t.id, Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION + FROM vn.ticket t JOIN Consignatarios cs ON t.Id_Consigna = cs.Id_Consigna JOIN ( SELECT `Movimientos`.`Id_Ticket` AS `Id_Ticket`, @@ -24,15 +24,15 @@ BEGIN ) AS `amount` FROM ( `vn2008`.`Movimientos` - JOIN `vn2008`.`Tickets` ON( - `Movimientos`.`Id_Ticket` = `Tickets`.`Id_Ticket` + JOIN `vn`.`ticket` ON( + `Movimientos`.`Id_Ticket` = `ticket`.`id` ) ) - WHERE `Tickets`.`Fecha` >= `util`.`VN_CURDATE`() + INTERVAL -6 MONTH + WHERE `ticket`.`shipped` >= `util`.`VN_CURDATE`() + INTERVAL -6 MONTH GROUP BY `Movimientos`.`Id_Ticket` - ) v ON v.Id_Ticket = t.Id_Ticket - WHERE t.Fecha BETWEEN v_Date AND util.dayEnd(v_Date) - AND t.Id_Cliente = v_Client_Id; + ) v ON v.Id_Ticket = t.id + WHERE t.shipped BETWEEN v_Date AND util.dayEnd(v_Date) + AND t.clientFk = v_Client_Id; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; diff --git a/db/routines/vn2008/procedures/embalajes_stocks.sql b/db/routines/vn2008/procedures/embalajes_stocks.sql index b20e44c79..f6b0d9b9a 100644 --- a/db/routines/vn2008/procedures/embalajes_stocks.sql +++ b/db/routines/vn2008/procedures/embalajes_stocks.sql @@ -2,50 +2,50 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`embalajes_stocks`(IN idPEOPLE INT, IN bolCLIENT BOOLEAN) BEGIN -if bolCLIENT then + IF bolCLIENT THEN - select m.Id_Article, Article, - cast(sum(m.Cantidad) as decimal) as Saldo - from Movimientos m - join Articles a on m.Id_Article = a.Id_Article - join Tipos tp on tp.tipo_id = a.tipo_id - join Tickets t using(Id_Ticket) - join Consignatarios cs using(Id_Consigna) - where cs.Id_Cliente = idPEOPLE - and Tipo = 'Contenedores' - and t.Fecha > '2010-01-01' - group by m.Id_Article; + SELECT m.Id_Article, Article, - cast(sum(m.Cantidad) as decimal) Saldo + FROM Movimientos m + JOIN Articles a ON m.Id_Article = a.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + JOIN ticket t ON t.id = m.Id_Ticket + JOIN Consignatarios cs using(Id_Consigna) + WHERE cs.Id_Cliente = idPEOPLE + AND Tipo = 'Contenedores' + AND t.shipped > '2010-01-01' + GROUP BY m.Id_Article; -else + ELSE -select Id_Article, Article, sum(Cantidad) as Saldo -from -(select Id_Article, Cantidad -from Compres c -join Articles a using(Id_Article) -join Tipos tp using(tipo_id) -join Entradas e using(Id_Entrada) -join travel tr on tr.id = travel_id -where Id_Proveedor = idPEOPLE -and landing >= '2010-01-01' -and reino_id = 6 + SELECT Id_Article, Article, sum(Cantidad) Saldo + FROM + (SELECT Id_Article, Cantidad + FROM Compres c + JOIN Articles a using(Id_Article) + JOIN Tipos tp using(tipo_id) + JOIN Entradas e using(Id_Entrada) + JOIN travel tr ON tr.id = travel_id + WHERE Id_Proveedor = idPEOPLE + AND landing >= '2010-01-01' + AND reino_id = 6 -union all + union all -select Id_Article, - Cantidad -from Movimientos m -join Articles a using(Id_Article) -join Tipos tp using(tipo_id) -join Tickets t using(Id_Ticket) -join Consignatarios cs using(Id_Consigna) -join proveedores_clientes pc on pc.Id_Cliente = cs.Id_Cliente -where Id_Proveedor = idPEOPLE -and reino_id = 6 -and t.Fecha > '2010-01-01') mov + SELECT Id_Article, - Cantidad + FROM Movimientos m + JOIN Articles a using(Id_Article) + JOIN Tipos tp using(tipo_id) + JOIN ticket t ON t.id = m.Id_Ticket + JOIN Consignatarios cs using(Id_Consigna) + JOIN proveedores_clientes pc ON pc.Id_Cliente = cs.Id_Cliente + WHERE Id_Proveedor = idPEOPLE + AND reino_id = 6 + AND t.shipped > '2010-01-01') mov -join Articles a using(Id_Article) -group by Id_Article; + JOIN Articles a using(Id_Article) + GROUP BY Id_Article; -end if; + END IF; END$$ DELIMITER ; diff --git a/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql b/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql index c49d1b88a..0319e0f75 100644 --- a/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql +++ b/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql @@ -2,77 +2,78 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`embalajes_stocks_detalle`(IN idPEOPLE INT, IN idARTICLE INT, IN bolCLIENT BOOLEAN) BEGIN + IF bolCLIENT THEN -if bolCLIENT then + SELECT m.Id_Article + , Article + , IF(Cantidad < 0, - Cantidad, NULL) Entrada + , IF(Cantidad < 0, NULL, Cantidad) Salida + , 'T' Tabla + , t.id Registro + , t.shipped Fecha + , w.name Almacen + , cast(Preu as Decimal(5,2)) Precio + , c.Cliente Proveedor + , abbreviation Empresa + FROM Movimientos m + JOIN Articles a using(Id_Article) + JOIN ticket t ON t.id = m.Id_Ticket + JOIN empresa e ON e.id = t.companyFk + JOIN warehouse w ON w.id = t.warehouseFk + JOIN Consignatarios cs using(Id_Consigna) + JOIN Clientes c ON c.Id_Cliente = cs.Id_Cliente + WHERE cs.Id_Cliente = idPEOPLE + AND m.Id_Article = idARTICLE + AND t.shipped > '2010-01-01'; - select m.Id_Article - , Article - , IF(Cantidad < 0, - Cantidad, NULL) as Entrada - , IF(Cantidad < 0, NULL, Cantidad) as Salida - , 'T' as Tabla - , t.Id_Ticket as Registro - , t.Fecha - , w.name as Almacen - , cast(Preu as Decimal(5,2)) Precio - , c.Cliente as Proveedor - , abbreviation as Empresa - from Movimientos m - join Articles a using(Id_Article) - join Tickets t using(Id_Ticket) - join empresa e on e.id = t.empresa_id - join warehouse w on w.id = t.warehouse_id - join Consignatarios cs using(Id_Consigna) - join Clientes c on c.Id_Cliente = cs.Id_Cliente - where cs.Id_Cliente = idPEOPLE - and m.Id_Article = idARTICLE - and t.Fecha > '2010-01-01'; + ELSE -else + SELECT Id_Article, + Tabla, + Registro, + Fecha, + Article, + w.name Almacen, + Entrada, + Salida, + Proveedor, + cast(Precio as Decimal(5,2)) Precio + FROM + (SELECT Id_Article + , IF(Cantidad > 0, Cantidad, NULL) Entrada + , IF(Cantidad > 0, NULL,- Cantidad) Salida + , 'E' Tabla + , Id_Entrada Registro + , landing Fecha + , tr.warehouse_id + , Costefijo Precio + FROM Compres c + JOIN Entradas e using(Id_Entrada) + JOIN travel tr ON tr.id = travel_id + WHERE Id_Proveedor = idPEOPLE + AND Id_Article = idARTICLE + AND landing >= '2010-01-01' -select Id_Article, Tabla, Registro, Fecha, Article -, w.name as Almacen, Entrada, Salida, Proveedor, cast(Precio as Decimal(5,2)) Precio - -from - -(select Id_Article - , IF(Cantidad > 0, Cantidad, NULL) as Entrada - , IF(Cantidad > 0, NULL,- Cantidad) as Salida - , 'E' as Tabla - , Id_Entrada as Registro - , landing as Fecha - , tr.warehouse_id - , Costefijo as Precio -from Compres c -join Entradas e using(Id_Entrada) -join travel tr on tr.id = travel_id -where Id_Proveedor = idPEOPLE -and Id_Article = idARTICLE -and landing >= '2010-01-01' - -union all - -select Id_Article - , IF(Cantidad < 0, - Cantidad, NULL) as Entrada - , IF(Cantidad < 0, NULL, Cantidad) as Salida - , 'T' - , Id_Ticket - , Fecha - , t.warehouse_id - , Preu -from Movimientos m -join Tickets t using(Id_Ticket) -join Consignatarios cs using(Id_Consigna) -join proveedores_clientes pc on pc.Id_Cliente = cs.Id_Cliente -where Id_Proveedor = idPEOPLE -and Id_Article = idARTICLE -and t.Fecha > '2010-01-01') mov - -join Articles a using(Id_Article) -join Proveedores p on Id_Proveedor = idPEOPLE -join warehouse w on w.id = mov.warehouse_id -; - -end if; + union all + SELECT Id_Article + , IF(Cantidad < 0, - Cantidad, NULL) Entrada + , IF(Cantidad < 0, NULL, Cantidad) Salida + , 'T' + , Id_Ticket + , Fecha + , t.warehouseFk warehouse_id + , Preu + FROM Movimientos m + JOIN ticket t ON t.id = m.Id_Ticket + JOIN Consignatarios cs using(Id_Consigna) + JOIN proveedores_clientes pc ON pc.Id_Cliente = cs.Id_Cliente + WHERE Id_Proveedor = idPEOPLE + AND Id_Article = idARTICLE + AND t.shipped > '2010-01-01') mov + JOIN Articles a using(Id_Article) + JOIN Proveedores p ON Id_Proveedor = idPEOPLE + JOIN warehouse w ON w.id = mov.warehouse_id; + END IF; END$$ DELIMITER ; diff --git a/db/routines/vn2008/procedures/historico_absoluto.sql b/db/routines/vn2008/procedures/historico_absoluto.sql index 1a7e1dbfa..55f33ee89 100644 --- a/db/routines/vn2008/procedures/historico_absoluto.sql +++ b/db/routines/vn2008/procedures/historico_absoluto.sql @@ -50,20 +50,20 @@ BEGIN AND E.Inventario = 0 AND E.Redada = 0 UNION ALL - SELECT T.Fecha Fecha, + SELECT t.shipped Fecha, NULL Entrada, M.Cantidad Salida, - (M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) OK, - T.Alias Alias, - T.Factura Referencia, - T.Id_Ticket, - T.PedidoImpreso + (M.OK <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) OK, + t.nickname Alias, + t.refFk Referencia, + t.id Id_Ticket, + t.isPrinted PedidoImpreso FROM Movimientos M - INNER JOIN Tickets T USING (Id_Ticket) - JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente - WHERE T.Fecha >= '2001-01-01' + INNER JOIN ticket t USING (Id_Ticket) + JOIN Clientes C ON C.Id_Cliente = t.clientFk + WHERE t.shipped >= '2001-01-01' AND M.Id_Article = idART - AND wh IN (T.warehouse_id , 0) + AND wh IN (t.warehouseFk , 0) ) t1 ORDER BY Fecha, Entrada DESC, OK DESC; diff --git a/db/routines/vn2008/procedures/historico_multiple.sql b/db/routines/vn2008/procedures/historico_multiple.sql index c68fbf2ad..fbec7bb1d 100644 --- a/db/routines/vn2008/procedures/historico_multiple.sql +++ b/db/routines/vn2008/procedures/historico_multiple.sql @@ -66,17 +66,17 @@ BEGIN UNION ALL - SELECT T.Fecha as Fecha, + SELECT t.shipped as Fecha, NULL as Entrada, M.Cantidad as Salida, warehouse_id as wh, - (M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) as OK, - T.Factura as Referencia, - T.Id_Ticket as id + (M.OK <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) as OK, + t.refFk as Referencia, + t.id as id FROM Movimientos M - INNER JOIN Tickets T USING (Id_Ticket) - WHERE T.Fecha >= vDateInventory + INNER JOIN ticket t ON t.id = M.Id_Ticket + WHERE t.shipped >= vDateInventory AND M.Id_Article = vItemFk ) AS Historia diff --git a/db/routines/vn2008/procedures/preOrdenarRuta.sql b/db/routines/vn2008/procedures/preOrdenarRuta.sql index b5fd2b24b..9bcf853bd 100644 --- a/db/routines/vn2008/procedures/preOrdenarRuta.sql +++ b/db/routines/vn2008/procedures/preOrdenarRuta.sql @@ -6,17 +6,17 @@ BEGIN * DEPRECATED use vn.routeGressPriority */ -UPDATE Tickets mt -JOIN ( - SELECT tt.Id_Consigna, round(ifnull(avg(t.Prioridad),0),0) as Prioridad - from Tickets t - JOIN Tickets tt on tt.Id_Consigna = t.Id_Consigna - where t.Fecha > TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) - AND tt.Id_Ruta = vRutaId - GROUP BY Id_Consigna - ) sub ON sub.Id_Consigna = mt.Id_Consigna - SET mt.Prioridad = sub.Prioridad - WHERE mt.Id_Ruta = vRutaId; - + UPDATE vn.ticket mt + JOIN ( + SELECT tt.addressFk Id_Consigna, round(ifnull(avg(t.priority),0),0) as Prioridad + FROM vn.ticket t + JOIN vn.ticket tt on tt.addressFk = t.addressFk + WHERE t.shipped > TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) + AND tt.routeFk = vRutaId + GROUP BY addressFk + ) sub ON sub.Id_Consigna = mt.Id_Consigna + SET mt.priority = sub.Prioridad + WHERE mt.routeFk = vRutaId; + END$$ DELIMITER ; diff --git a/db/routines/vn2008/procedures/prepare_ticket_list.sql b/db/routines/vn2008/procedures/prepare_ticket_list.sql index e407a91b7..07cff3ff5 100644 --- a/db/routines/vn2008/procedures/prepare_ticket_list.sql +++ b/db/routines/vn2008/procedures/prepare_ticket_list.sql @@ -5,17 +5,17 @@ BEGIN CREATE TEMPORARY TABLE tmp.ticket_list (PRIMARY KEY (Id_Ticket)) ENGINE = MEMORY - SELECT t.Id_Ticket, c.Id_Cliente - FROM Tickets t - LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.Id_Ticket - JOIN Clientes c ON c.Id_Cliente = t.Id_Cliente + SELECT t.id Id_Ticket, c.Id_Cliente + FROM vn.ticket t + LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id + JOIN Clientes c ON c.Id_Cliente = t.clientFk WHERE c.typeFk IN ('normal','handMaking','internalUse') AND ( Fecha BETWEEN util.today() AND vEndingDate OR ( ts.alertLevel < 3 - AND t.Fecha >= vStartingDate - AND t.Fecha < util.today() + AND t.shipped >= vStartingDate + AND t.shipped < util.today() ) ); END$$ diff --git a/db/routines/vn2008/procedures/risk_vs_client_list.sql b/db/routines/vn2008/procedures/risk_vs_client_list.sql index 92f94eb9f..bb3c1028c 100644 --- a/db/routines/vn2008/procedures/risk_vs_client_list.sql +++ b/db/routines/vn2008/procedures/risk_vs_client_list.sql @@ -33,14 +33,14 @@ BEGIN CREATE TEMPORARY TABLE tmp.tickets_sin_facturar (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY - SELECT t.Id_Cliente, floor(IF(cl.isVies, 1, 1.1) * sum(Cantidad * Preu * (100 - Descuento) / 100)) as total + SELECT t.clientFk Id_Cliente, floor(IF(cl.isVies, 1, 1.1) * sum(Cantidad * Preu * (100 - Descuento) / 100)) as total FROM Movimientos m - JOIN Tickets t on m.Id_Ticket = t.Id_Ticket - JOIN tmp.client_list c on c.Id_Cliente = t.Id_Cliente - JOIN vn.client cl ON cl.id = t.Id_Cliente + JOIN vn.ticket t on m.Id_Ticket = t.id + JOIN tmp.client_list c on c.Id_Cliente = t.clientFk + JOIN vn.client cl ON cl.id = t.clientFk WHERE Factura IS NULL AND Fecha BETWEEN startingDate AND endingDate - GROUP BY t.Id_Cliente; + GROUP BY t.clientFk; DROP TEMPORARY TABLE IF EXISTS tmp.risk; CREATE TEMPORARY TABLE tmp.risk diff --git a/db/routines/vn2008/views/item_out.sql b/db/routines/vn2008/views/item_out.sql index 57353a6d6..a1e714cb6 100644 --- a/db/routines/vn2008/views/item_out.sql +++ b/db/routines/vn2008/views/item_out.sql @@ -1,17 +1,17 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn2008`.`item_out` -AS SELECT `t`.`warehouse_id` AS `warehouse_id`, - `t`.`Fecha` AS `dat`, +AS SELECT `t`.`warehouseFk` AS `warehouse_id`, + `t`.`shipped` AS `dat`, `m`.`Id_Article` AS `item_id`, - `m`.`Cantidad` AS `amount`, `m`.`OK` AS `ok`, `m`.`Reservado` AS `Reservado`, - `t`.`Factura` AS `invoice`, + `t`.`refFk` AS `invoice`, `m`.`Id_Movimiento` AS `saleFk`, `m`.`Id_Ticket` AS `ticketFk` FROM ( `vn2008`.`Movimientos` `m` - JOIN `vn2008`.`Tickets` `t` ON(`m`.`Id_Ticket` = `t`.`Id_Ticket`) + JOIN `vn`.`ticket` `t` ON(`m`.`Id_Ticket` = `t`.`id`) ) WHERE `m`.`Cantidad` <> 0 From 714cd3c2c37f71bb4d83ccf07e83ac122f3f268c Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 6 Feb 2024 14:55:20 +0100 Subject: [PATCH 022/456] feat: refs #6777 --- db/routines/bi/procedures/claim_ratio_routine.sql | 2 +- db/routines/bs/procedures/comercialesCompleto.sql | 2 +- db/routines/bs/procedures/ventas_contables_por_cliente.sql | 6 +++--- db/routines/vn/procedures/invoiceFromAddress.sql | 2 +- db/routines/vn2008/procedures/confection_control_source.sql | 2 +- db/routines/vn2008/procedures/customerDebtEvolution.sql | 2 +- .../vn2008/procedures/emailYesterdayPurchasesByConsigna.sql | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/db/routines/bi/procedures/claim_ratio_routine.sql b/db/routines/bi/procedures/claim_ratio_routine.sql index dce098e2d..d7adbaba1 100644 --- a/db/routines/bi/procedures/claim_ratio_routine.sql +++ b/db/routines/bi/procedures/claim_ratio_routine.sql @@ -59,7 +59,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; CREATE TEMPORARY TABLE tmp.ticket_list (PRIMARY KEY (Id_Ticket)) - SELECT DISTINCT t.id + SELECT DISTINCT t.id Id_Ticket FROM vn2008.Movimientos_componentes mc JOIN vn2008.Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento JOIN vn.ticket t ON t.id = m.Id_Ticket diff --git a/db/routines/bs/procedures/comercialesCompleto.sql b/db/routines/bs/procedures/comercialesCompleto.sql index 8f519b6ca..72b54656a 100644 --- a/db/routines/bs/procedures/comercialesCompleto.sql +++ b/db/routines/bs/procedures/comercialesCompleto.sql @@ -70,7 +70,7 @@ BEGIN AND (v.fecha BETWEEN TIMESTAMPADD(DAY, - DAY(vDate) + 1, vDate) AND TIMESTAMPADD(DAY, - 1, vDate)) GROUP BY Id_Cliente) mes_actual ON mes_actual.Id_Cliente = c.Id_Cliente LEFT JOIN - (SELECT t.clientFk, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur + (SELECT t.clientFk Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur FROM vn.ticket t JOIN vn2008.Clientes c ON c.Id_Cliente = t.clientFk JOIN vn2008.Movimientos m ON m.Id_Ticket = t.id diff --git a/db/routines/bs/procedures/ventas_contables_por_cliente.sql b/db/routines/bs/procedures/ventas_contables_por_cliente.sql index 26da1b870..31e93adb7 100644 --- a/db/routines/bs/procedures/ventas_contables_por_cliente.sql +++ b/db/routines/bs/procedures/ventas_contables_por_cliente.sql @@ -14,12 +14,12 @@ BEGIN SELECT id FROM vn.ticket t JOIN vn2008.Facturas f ON f.Id_Factura = t.refFk - WHERE year(f.shipped) = vYear - AND month(f.shipped) = vMonth; + WHERE year(f.Fecha) = vYear + AND month(f.Fecha) = vMonth; SELECT vYear Año, vMonth Mes, - t.clientFk, + t.clientFk Id_Cliente, round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) Venta, IF(e.empresa_grupo = e2.empresa_grupo, 1, diff --git a/db/routines/vn/procedures/invoiceFromAddress.sql b/db/routines/vn/procedures/invoiceFromAddress.sql index bea49e747..bf657a731 100644 --- a/db/routines/vn/procedures/invoiceFromAddress.sql +++ b/db/routines/vn/procedures/invoiceFromAddress.sql @@ -11,7 +11,7 @@ BEGIN CREATE TEMPORARY TABLE `tmp.``ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY - SELECT id id + SELECT id FROM ticket WHERE (shipped BETWEEN vMinDateTicket AND vMaxTicketDate) AND addressFk = vAddress diff --git a/db/routines/vn2008/procedures/confection_control_source.sql b/db/routines/vn2008/procedures/confection_control_source.sql index 6833cd29d..4b60b041e 100644 --- a/db/routines/vn2008/procedures/confection_control_source.sql +++ b/db/routines/vn2008/procedures/confection_control_source.sql @@ -23,7 +23,7 @@ BEGIN tp.Tipo, t.nickname as Cliente, wh.name as Almacen, - t.warehouseFk, + t.warehouseFk warehouse_id, cs.province_id, a.agency_id, ct.description as Taller, diff --git a/db/routines/vn2008/procedures/customerDebtEvolution.sql b/db/routines/vn2008/procedures/customerDebtEvolution.sql index f6f81e2b0..fad1a8a59 100644 --- a/db/routines/vn2008/procedures/customerDebtEvolution.sql +++ b/db/routines/vn2008/procedures/customerDebtEvolution.sql @@ -28,7 +28,7 @@ SELECT * FROM FROM bi.customerDebtInventory WHERE Id_Cliente = vCustomer UNION ALL - SELECT t.shipped, - SUM(m.Cantidad * m.Preu * (100 - m.Descuento ) * 1.10 / 100) + SELECT t.shipped Fecha, - SUM(m.Cantidad * m.Preu * (100 - m.Descuento ) * 1.10 / 100) FROM vn.ticket t JOIN Movimientos m on m.Id_Ticket = t.id WHERE t.clientFk = vCustomer diff --git a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql b/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql index 2a753157d..7da510afa 100644 --- a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql +++ b/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql @@ -14,7 +14,7 @@ BEGIN DECLARE txt TEXT; DECLARE rs CURSOR FOR - SELECT t.id, Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION + SELECT t.id Id_Ticket, Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION FROM vn.ticket t JOIN Consignatarios cs ON t.Id_Consigna = cs.Id_Consigna JOIN ( From 747dabd1544a3f22492129591a63f4768682e2ed Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 7 Feb 2024 11:41:22 +0100 Subject: [PATCH 023/456] feat: refs #6777 --- .../bi/procedures/claim_ratio_routine.sql | 2 +- .../bs/procedures/ventas_contables_add.sql | 2 +- .../vn/procedures/invoiceFromAddress.sql | 2 +- .../procedures/ListaTicketsEncajados.sql | 2 +- db/routines/vn2008/procedures/clean.sql | 18 ++---------------- .../procedures/confection_control_source.sql | 2 +- .../emailYesterdayPurchasesByConsigna.sql | 4 ++-- .../vn2008/procedures/embalajes_stocks.sql | 8 ++++---- .../procedures/embalajes_stocks_detalle.sql | 10 +++++----- .../vn2008/procedures/historico_absoluto.sql | 2 +- .../vn2008/procedures/historico_multiple.sql | 6 +++--- .../vn2008/procedures/preOrdenarRuta.sql | 4 ++-- .../vn2008/procedures/prepare_ticket_list.sql | 2 +- .../vn2008/procedures/risk_vs_client_list.sql | 4 ++-- 14 files changed, 27 insertions(+), 41 deletions(-) diff --git a/db/routines/bi/procedures/claim_ratio_routine.sql b/db/routines/bi/procedures/claim_ratio_routine.sql index d7adbaba1..833a1153a 100644 --- a/db/routines/bi/procedures/claim_ratio_routine.sql +++ b/db/routines/bi/procedures/claim_ratio_routine.sql @@ -79,7 +79,7 @@ BEGIN INSERT INTO vn2008.Greuges (Id_Cliente,Comentario,Importe,Fecha, Greuges_type_id, Id_Ticket) - SELECT Id_Cliente + SELECT t.clientFk ,concat('recobro ', m.Id_Ticket), - round(SUM(mc.Valor*Cantidad),2) AS dif ,date(t.shipped) diff --git a/db/routines/bs/procedures/ventas_contables_add.sql b/db/routines/bs/procedures/ventas_contables_add.sql index 554972e4c..955356d4e 100644 --- a/db/routines/bs/procedures/ventas_contables_add.sql +++ b/db/routines/bs/procedures/ventas_contables_add.sql @@ -86,7 +86,7 @@ BEGIN ) as grupo , NULL , NULL - , t.companyFk + , t.companyFk empresa_id , 7050000000 FROM vn.ticketService ts JOIN vn.ticket t ON ts.ticketFk = t.id diff --git a/db/routines/vn/procedures/invoiceFromAddress.sql b/db/routines/vn/procedures/invoiceFromAddress.sql index bf657a731..2879460ce 100644 --- a/db/routines/vn/procedures/invoiceFromAddress.sql +++ b/db/routines/vn/procedures/invoiceFromAddress.sql @@ -8,7 +8,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`; - CREATE TEMPORARY TABLE `tmp.``ticketToInvoice` + CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT id diff --git a/db/routines/vn2008/procedures/ListaTicketsEncajados.sql b/db/routines/vn2008/procedures/ListaTicketsEncajados.sql index e220cd9ad..6a9838da3 100644 --- a/db/routines/vn2008/procedures/ListaTicketsEncajados.sql +++ b/db/routines/vn2008/procedures/ListaTicketsEncajados.sql @@ -10,7 +10,7 @@ BEGIN IFNULL(nbultos,0) AS nbultos, IFNULL(notros,0) AS notros, ts.code AS Estado - FROM Tickets ti + FROM vn.ticket ti INNER JOIN Consignatarios ON ti.addressFk = Consignatarios.Id_consigna INNER JOIN Agencias ON ti.agencyModeFk = Agencias.Id_Agencia LEFT JOIN (SELECT Ticket_Id,count(*) AS ncajas FROM expeditions WHERE Id_Article=94 GROUP BY ticket_id) sub1 ON ti.id=sub1.Ticket_Id diff --git a/db/routines/vn2008/procedures/clean.sql b/db/routines/vn2008/procedures/clean.sql index 00279c090..0ae70d648 100644 --- a/db/routines/vn2008/procedures/clean.sql +++ b/db/routines/vn2008/procedures/clean.sql @@ -22,19 +22,12 @@ proc: BEGIN DELETE FROM cdr WHERE calldate < vDate18; DELETE FROM Monitoring WHERE ODBC_TIME < vDate; - DELETE FROM Conteo WHERE Fecha < vDate; DELETE FROM mail WHERE DATE_ODBC < vDate; - DELETE FROM expeditions_deleted WHERE odbc_date < vDate26; DELETE FROM Movimientos_mark WHERE odbc_date < vDate; DELETE FROM Splits WHERE Fecha < vDate18; - DELETE ts - FROM Tickets_stack ts - JOIN vn.ticket t ON ts.Id_Ticket = t.id - WHERE t.shipped < vDate; - DELETE tobs - FROM ticketObservation tobs + FROM vn.ticketObservation tobs JOIN vn.ticket t ON tobs.ticketFk = t.id WHERE t.shipped < vDate; @@ -49,7 +42,7 @@ proc: BEGIN DELETE tw.* FROM vn.ticketWeekly tw LEFT JOIN vn.sale s USING(ticketFk) - WHERE s.Id_Article IS NULL; + WHERE s.id IS NULL; DELETE FROM cl_main WHERE Fecha < vDate18; DELETE FROM hedera.`order` WHERE date_send < vDate18; @@ -65,13 +58,6 @@ proc: BEGIN JOIN travel t ON t.id = e.travel_id WHERE t.landing <= vDate; - DELETE co - FROM Compres_ok co JOIN Compres c ON c.Id_Compra = co.Id_Compra - JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada - JOIN travel t ON t.id = e.travel_id - WHERE t.landing <= vDate; - DELETE FROM scan WHERE odbc_date < vDate6 AND id <> 1; - IF v_full THEN CREATE OR REPLACE TEMPORARY TABLE tTicketDelete SELECT DISTINCT tl.originFk ticketFk diff --git a/db/routines/vn2008/procedures/confection_control_source.sql b/db/routines/vn2008/procedures/confection_control_source.sql index 4b60b041e..84126bc8c 100644 --- a/db/routines/vn2008/procedures/confection_control_source.sql +++ b/db/routines/vn2008/procedures/confection_control_source.sql @@ -14,7 +14,7 @@ BEGIN date(t.shipped) as Fecha, hour(t.shipped) as Hora, hour(t.shipped) as Departure, - t.id, + t.id Id_Ticket, m.Id_Movimiento, m.Cantidad, m.Concepte, diff --git a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql b/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql index 7da510afa..be2f01d1f 100644 --- a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql +++ b/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql @@ -14,9 +14,9 @@ BEGIN DECLARE txt TEXT; DECLARE rs CURSOR FOR - SELECT t.id Id_Ticket, Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION + SELECT t.id Id_Ticket, nickname Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION FROM vn.ticket t - JOIN Consignatarios cs ON t.Id_Consigna = cs.Id_Consigna + JOIN Consignatarios cs ON t.addressFk = cs.Id_Consigna JOIN ( SELECT `Movimientos`.`Id_Ticket` AS `Id_Ticket`, sum( diff --git a/db/routines/vn2008/procedures/embalajes_stocks.sql b/db/routines/vn2008/procedures/embalajes_stocks.sql index f6b0d9b9a..6479b19f8 100644 --- a/db/routines/vn2008/procedures/embalajes_stocks.sql +++ b/db/routines/vn2008/procedures/embalajes_stocks.sql @@ -8,8 +8,8 @@ BEGIN FROM Movimientos m JOIN Articles a ON m.Id_Article = a.Id_Article JOIN Tipos tp ON tp.tipo_id = a.tipo_id - JOIN ticket t ON t.id = m.Id_Ticket - JOIN Consignatarios cs using(Id_Consigna) + JOIN vn.ticket t ON t.id = m.Id_Ticket + JOIN Consignatarios cs ON cs.Id_Consigna = t.addressFk WHERE cs.Id_Cliente = idPEOPLE AND Tipo = 'Contenedores' AND t.shipped > '2010-01-01' @@ -35,8 +35,8 @@ BEGIN FROM Movimientos m JOIN Articles a using(Id_Article) JOIN Tipos tp using(tipo_id) - JOIN ticket t ON t.id = m.Id_Ticket - JOIN Consignatarios cs using(Id_Consigna) + JOIN vn.ticket t ON t.id = m.Id_Ticket + JOIN Consignatarios cs ON cs.Id_Consigna = t.addressFk JOIN proveedores_clientes pc ON pc.Id_Cliente = cs.Id_Cliente WHERE Id_Proveedor = idPEOPLE AND reino_id = 6 diff --git a/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql b/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql index 0319e0f75..2992e6029 100644 --- a/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql +++ b/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql @@ -17,10 +17,10 @@ BEGIN , abbreviation Empresa FROM Movimientos m JOIN Articles a using(Id_Article) - JOIN ticket t ON t.id = m.Id_Ticket + JOIN vn.ticket t ON t.id = m.Id_Ticket JOIN empresa e ON e.id = t.companyFk - JOIN warehouse w ON w.id = t.warehouseFk - JOIN Consignatarios cs using(Id_Consigna) + JOIN vn.warehouse w ON w.id = t.warehouseFk + JOIN Consignatarios cs ON cs.Id_Consigna = t.addressFk JOIN Clientes c ON c.Id_Cliente = cs.Id_Cliente WHERE cs.Id_Cliente = idPEOPLE AND m.Id_Article = idARTICLE @@ -65,8 +65,8 @@ BEGIN , t.warehouseFk warehouse_id , Preu FROM Movimientos m - JOIN ticket t ON t.id = m.Id_Ticket - JOIN Consignatarios cs using(Id_Consigna) + JOIN vn.ticket t ON t.id = m.Id_Ticket + JOIN Consignatarios cs ON cs.Id_Consigna = t.addressFk JOIN proveedores_clientes pc ON pc.Id_Cliente = cs.Id_Cliente WHERE Id_Proveedor = idPEOPLE AND Id_Article = idARTICLE diff --git a/db/routines/vn2008/procedures/historico_absoluto.sql b/db/routines/vn2008/procedures/historico_absoluto.sql index 55f33ee89..e11fb64d5 100644 --- a/db/routines/vn2008/procedures/historico_absoluto.sql +++ b/db/routines/vn2008/procedures/historico_absoluto.sql @@ -59,7 +59,7 @@ BEGIN t.id Id_Ticket, t.isPrinted PedidoImpreso FROM Movimientos M - INNER JOIN ticket t USING (Id_Ticket) + INNER JOIN vn.ticket t ON t.id = M.Id_Ticket JOIN Clientes C ON C.Id_Cliente = t.clientFk WHERE t.shipped >= '2001-01-01' AND M.Id_Article = idART diff --git a/db/routines/vn2008/procedures/historico_multiple.sql b/db/routines/vn2008/procedures/historico_multiple.sql index fbec7bb1d..b3ddc208a 100644 --- a/db/routines/vn2008/procedures/historico_multiple.sql +++ b/db/routines/vn2008/procedures/historico_multiple.sql @@ -69,19 +69,19 @@ BEGIN SELECT t.shipped as Fecha, NULL as Entrada, M.Cantidad as Salida, - warehouse_id as wh, + t.warehouseFk as wh, (M.OK <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) as OK, t.refFk as Referencia, t.id as id FROM Movimientos M - INNER JOIN ticket t ON t.id = M.Id_Ticket + INNER JOIN vn.ticket t ON t.id = M.Id_Ticket WHERE t.shipped >= vDateInventory AND M.Id_Article = vItemFk ) AS Historia - INNER JOIN warehouse ON warehouse.id = Historia.wh + INNER JOIN vn.warehouse ON warehouse.id = Historia.wh ORDER BY Fecha, Entrada DESC, OK DESC; diff --git a/db/routines/vn2008/procedures/preOrdenarRuta.sql b/db/routines/vn2008/procedures/preOrdenarRuta.sql index 9bcf853bd..d3e1862f6 100644 --- a/db/routines/vn2008/procedures/preOrdenarRuta.sql +++ b/db/routines/vn2008/procedures/preOrdenarRuta.sql @@ -13,8 +13,8 @@ BEGIN JOIN vn.ticket tt on tt.addressFk = t.addressFk WHERE t.shipped > TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) AND tt.routeFk = vRutaId - GROUP BY addressFk - ) sub ON sub.Id_Consigna = mt.Id_Consigna + GROUP BY t.addressFk + ) sub ON sub.Id_Consigna = mt.addressFk SET mt.priority = sub.Prioridad WHERE mt.routeFk = vRutaId; diff --git a/db/routines/vn2008/procedures/prepare_ticket_list.sql b/db/routines/vn2008/procedures/prepare_ticket_list.sql index 07cff3ff5..ea1dc8e7d 100644 --- a/db/routines/vn2008/procedures/prepare_ticket_list.sql +++ b/db/routines/vn2008/procedures/prepare_ticket_list.sql @@ -11,7 +11,7 @@ BEGIN JOIN Clientes c ON c.Id_Cliente = t.clientFk WHERE c.typeFk IN ('normal','handMaking','internalUse') AND ( - Fecha BETWEEN util.today() AND vEndingDate + t.shipped BETWEEN util.today() AND vEndingDate OR ( ts.alertLevel < 3 AND t.shipped >= vStartingDate diff --git a/db/routines/vn2008/procedures/risk_vs_client_list.sql b/db/routines/vn2008/procedures/risk_vs_client_list.sql index bb3c1028c..148379a64 100644 --- a/db/routines/vn2008/procedures/risk_vs_client_list.sql +++ b/db/routines/vn2008/procedures/risk_vs_client_list.sql @@ -38,8 +38,8 @@ BEGIN JOIN vn.ticket t on m.Id_Ticket = t.id JOIN tmp.client_list c on c.Id_Cliente = t.clientFk JOIN vn.client cl ON cl.id = t.clientFk - WHERE Factura IS NULL - AND Fecha BETWEEN startingDate AND endingDate + WHERE t.refFk IS NULL + AND t.shipped BETWEEN startingDate AND endingDate GROUP BY t.clientFk; DROP TEMPORARY TABLE IF EXISTS tmp.risk; From be4403819da7c94d8514b48e859422483b3175d2 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 7 Feb 2024 11:45:14 +0100 Subject: [PATCH 024/456] feat: refs #6777 --- db/routines/bs/procedures/ventas_contables_add.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/bs/procedures/ventas_contables_add.sql b/db/routines/bs/procedures/ventas_contables_add.sql index 955356d4e..7c8063e56 100644 --- a/db/routines/bs/procedures/ventas_contables_add.sql +++ b/db/routines/bs/procedures/ventas_contables_add.sql @@ -66,7 +66,7 @@ BEGIN AND Preu <> 0 AND m.Descuento <> 100 AND a.tipo_id != TIPO_PATRIMONIAL - GROUP BY grupo, reino_id, tipo_id, empresa_id, Gasto; + GROUP BY grupo, reino_id, tipo_id, t.companyFk, Gasto; INSERT INTO bs.ventas_contables(year , month From c8b156771d39f9893ca84093f547464f60adcd1b Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 9 Feb 2024 14:00:16 +0100 Subject: [PATCH 025/456] feat: refs #6395 Added buyerFk in buy --- db/routines/vn/triggers/buy_beforeInsert.sql | 1 + db/routines/vn/triggers/buy_beforeUpdate.sql | 4 ++++ db/versions/10880-salmonHydrangea/00-firstScript.sql | 1 + 3 files changed, 6 insertions(+) create mode 100644 db/versions/10880-salmonHydrangea/00-firstScript.sql diff --git a/db/routines/vn/triggers/buy_beforeInsert.sql b/db/routines/vn/triggers/buy_beforeInsert.sql index c88bef05a..c698e23e6 100644 --- a/db/routines/vn/triggers/buy_beforeInsert.sql +++ b/db/routines/vn/triggers/buy_beforeInsert.sql @@ -19,6 +19,7 @@ trig: BEGIN END IF; SET NEW.editorFk = account.myUser_getId(); + SET NEW.buyerFk = NEW.editorFk; CALL buy_checkGrouping(NEW.`grouping`); diff --git a/db/routines/vn/triggers/buy_beforeUpdate.sql b/db/routines/vn/triggers/buy_beforeUpdate.sql index fc03c456f..b41418bcc 100644 --- a/db/routines/vn/triggers/buy_beforeUpdate.sql +++ b/db/routines/vn/triggers/buy_beforeUpdate.sql @@ -65,6 +65,10 @@ trig:BEGIN SET NEW.isIgnored = TRUE; END IF; + IF NOT (NEW.itemFk <=> OLD.itemFk) THEN + SET NEW.buyerFk = NEW.editorFk; + END IF; + IF NOT (NEW.itemFk <=> OLD.itemFk) OR NOT (OLD.entryFk <=> NEW.entryFk) THEN CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck diff --git a/db/versions/10880-salmonHydrangea/00-firstScript.sql b/db/versions/10880-salmonHydrangea/00-firstScript.sql new file mode 100644 index 000000000..934fc2020 --- /dev/null +++ b/db/versions/10880-salmonHydrangea/00-firstScript.sql @@ -0,0 +1 @@ +ALTER TABLE vn.buy ADD buyerFk int(10) unsigned DEFAULT NULL NULL; From 0eaeb2e80598c4bfc77e01cd1abdbe904d2e545f Mon Sep 17 00:00:00 2001 From: pako Date: Thu, 15 Feb 2024 13:13:22 +0100 Subject: [PATCH 026/456] nueva rama --- db/dump/fixtures.after.sql | 404 ++++++++++++++++++ db/routines/floranet/events/clean.sql | 22 + .../floranet/procedures/catalogue_get.sql | 52 +++ .../floranet/procedures/order_confirm.sql | 25 ++ db/routines/floranet/procedures/order_put.sql | 42 ++ .../10887-floranet/00-schemaAndUser.sql | 14 + db/versions/10887-floranet/01-tables.sql | 61 +++ 7 files changed, 620 insertions(+) create mode 100644 db/routines/floranet/events/clean.sql create mode 100644 db/routines/floranet/procedures/catalogue_get.sql create mode 100644 db/routines/floranet/procedures/order_confirm.sql create mode 100644 db/routines/floranet/procedures/order_put.sql create mode 100644 db/versions/10887-floranet/00-schemaAndUser.sql create mode 100644 db/versions/10887-floranet/01-tables.sql diff --git a/db/dump/fixtures.after.sql b/db/dump/fixtures.after.sql index 4c5f89d97..a7d059ed2 100644 --- a/db/dump/fixtures.after.sql +++ b/db/dump/fixtures.after.sql @@ -292,7 +292,411 @@ INSERT INTO `hedera`.`tpvConfig` (currency, terminal, transactionType, maxAmount */ INSERT INTO hedera.tpvMerchantEnable (merchantFk, companyFk) VALUES (1, 442); +-- XXX: floranet +INSERT INTO vn.intrastat(id, description, taxClassFk, taxCodeFk) +VALUES(6031970, 'Flores y capullos frescos (Otras: ramos, coronas)', 1, 63); + +-- Generación de items +SELECT id + INTO @FNR + FROM vn.itemType + WHERE code = 'FNR'; + +SELECT id + INTO @FNP + FROM vn.itemType + WHERE code = 'FNP'; + +DELETE + FROM vn.item + WHERE typeFk IN (@FNR,@FNP); + +SELECT MAX(id) + 1 + INTO @item + FROM vn.item; + +INSERT INTO vn.item + ( + id, + name, + longName, + `size`, + originFk, + intrastatFk, + typeFk, + inkFk, + image, + description + ) + VALUES + ( + @item := @item + 1, + @r := 'Ramo Terranova', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin ORDER BY RAND() LIMIT 1), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1CwtEK5_GReAzconaJsPTCXxV7zajbTos/view?usp=drive_link', + CONCAT('Hemos elegido una selección de flores muy especiales para realizar ', + 'esta composición: brásicas, flor de cera, astrantia, espigas, lisiantum, ', + 'paniculata eucaliptus.') + ), + ( + @item := @item + 1, + @r := 'Ramo Tasmania', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1_149uYZ-sehw3vWH68Quttk8QJe5T_bG/view?usp=drive_link', + CONCAT('La elegancia de este ramo es por la elección de todas las flores que lo componen: ', + 'eringium, verdes variados, rosas proteas, margaritas, astrantia, esta selección de ', + 'flores será un acierto seguro para hacer un regalo muy especial.') + ), + ( + @item := @item + 1, + @r := 'Ramo Pasion', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1-dH1UilV-nOH9XNK23uooZoezlwMT-Jq/view?usp=drive_link', + CONCAT('La unión de las rosas rojas con el lilium rosa hace de este ramo uno de ', + 'los más especiales , el juego de las dos tonalidades con los diferentes verdes ', + 'que cuidadosamente selecionamos para darle el toque final a la composicion hace ', + 'que este ramo sea al mismo tiempo elegante y atrevido, para amantes de lo inesperado ', + 'que quieren decorar alguna estancia de su hogar o hacer un ragalo muy especial') + ), + ( + @item := @item + 1, + @r := 'Ramo Florencia', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1PWKo5N8kg8H3xQtELdeQTQIc1HMZCc1P/view?usp=drive_link', + CONCAT('Este ramo evoca los colores del atardecer en Florencia, las rosas ramificadas ', + 'de pitimini con diferentes tonalidades y la paniculata nos transpotan al ambiente ', + 'sofisticado del norte de Italia y la frescura de los verdes variados nos recuerda ', + 'a la campiña italiana .Este ramo es ideal para regalar pensando en alguien muy especial.') + ), + ( + @item := @item + 1, + @r := 'Ramo Atardecer', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink WHERE name = 'Yellow'), + 'https://drive.google.com/file/d/1eM4gtftQuXN5xUjAHIRUYNPZNmuHVRA_/view?usp=drive_link', + CONCAT('Las rosas amarillas simbolizan la alegría de vivir, la calidez ,el ', + 'optimismo y la energía, por eso son el regalo perfecto para una ocasión muy ', + 'especial o para celebrar la alegría de una amistad o de un encuentro, a estas ', + 'preciosas rosas les añadimos un toque desenfadado a través de los verdes ', + 'variados que unidos a la belleza de la rosa que seguro serán una apuesta segura.') + ), + ( + @item := @item + 1, + @r := 'Ramo Arcoíris', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1Hxk5yqo7891gfK1VKIYfWxO5a_0K2Qej/view?usp=drive_link', + CONCAT('Llega la primavera a tu casa con el ramo Arco Iris , conseguirás iluminar ', + 'cualquier estancia gracias a la combinacón de las gerberas holandesas de gran ', + 'tamaño con colores muy vivos que a su vez contrastan a la perfección con las ', + 'margaritas coconut y el estatice variado, todo ello acompañado de verdes entre ', + 'los que destaca el ruscus danae , para dulcificar la explosión de color , ', + 'añadimos paniculata , una flor sencilla pero que aporta gran armonía al ramo') + ), + ( + @item := @item + 1, + @r := 'Ramo Provenza', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1TA9SBwjqnrEqG1bzwDL37sxtX9CNyLJk/view?usp=drive_link', + CONCAT('La delicada composición de este ramo escogida de forma minuciosa hecho ', + 'con liliums rosa, lisiantum blanco y rosas de color rosa todo ello unificado ', + 'con una selección de maravillosos verdes variados, hacen que esta combinación ', + 'sea muy especial para decorar cualquier estancia de tu casa a la que aportará una luz especial.') + ), + ( + @item := @item + 1, + @r := 'Ramo Alegria', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1sOf2isj84P9OxR3E3x6n2PjPnWVamLCE/view?usp=drive_link', + CONCAT('Hemos elegido el nombre de Alegría para este ramo ya que sus intensos ', + 'y variados colores nos producen esa sensación, la combinación de rosas blancas ', + ', alstroemeria rosa unida a la paniculata tambien de color rosa y a la sutileza ', + 'de la combinación de verdes variados, hace de este ramo una opción perfecta de ', + 'regalo que a todo el mundo le gusta por su armoniosa combinacion de colores.') + ), + ( + @item := @item + 1, + @r := 'Planta Orquídeas ', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/14BIkDDonFaIiTyJer1CWju1YzZNzt3XQ/view?usp=drive_link', + CONCAT('Elegimos personalmente en nuestra tienda dos plantas de orquídeas ', + 'con las mejores características combinadas con diferentes elementos de ', + 'decoración consiguiendo una composición ideal para cualquier ambiente.El ', + 'recipiente de cerámica se puede utilizar para múltiples funciones y sacar ', + 'de el las dos plantas de orquídeas para colocarlas en dos puntos diferentes ', + 'de nuestro hogar, ya que se respeta siempre las macetas originales de cada orquídea') + ), + ( + @item := @item + 1, + @r := 'Planta Kentia', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1rKe2RicfWha-VIm1LbbXckbA41glA99K/view?usp=drive_link', + CONCAT('La Kentia es una de las plantas más decorativas debido al porte que ', + 'le otorgan sus largas finas hojas arqueadas, ideal para un regalo que dejará ', + 'sin palabras a quien lo reciba o para decorar una estancia de tu hogar, ', + 'desde un espacio super moderno hasta el ambiente más clásico. Nuestras Kentias ', + 'proceden de uno de los mejores productores de kentias del mundo, con el añadido ', + 'de ser un producto nacional producido en Canarias de una calidad extrema.') + ), + ( + @item := @item + 1, + @r := 'Planta Calathea', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/11CKm5rqVFVPOELciuyXUrkc2oeTHJzBE/view?usp=drive_link', + CONCAT('Esta planta originaria de América tropical, principalmente de Brasil y Perú ', + ', son plantas ideales para embellecer el interior de una estancia . Debido a su ', + 'llamativo y original colorido, tambien es un regalo perfecto para ', + 'cualquier compromiso que tengamos .') + ), + ( + @item := @item + 1, + @r := 'Planta Anthurium ', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink WHERE name = 'Red'), + 'https://drive.google.com/file/d/1j4il_N9VJGaP4f6CPZM0u6GjxwIeYcBt/view?usp=drive_link', + CONCAT('Nos encanta el color rojo de sus flores .Esta planta original de ', + 'Costa Rica ,proviene de las zonas tropicales de America Central y del Sur, ', + 'su llamativo color alegrará cualquier celebración') + ), + ( + @item := @item + 1, + @r := 'Ramo Mindanao', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1lsGDuC6xmv3SyGukfLTVYsQvbGf1Bzxy/view?usp=drive_link', + CONCAT('La combinación de rosas ramificadas amarillas, las hortensias blancas, ', + 'el estatice, el limonium Tanacetum y los verdes variados hace de este ramo uno ', + 'de los que más gustan tanto si es para regalar como para decorar un rincón de tu casa.') + ), + ( + @item := @item + 1, + @r := 'Ramo Guinea', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1MtF0oghv-ahogaAaVpJNzDiIfyeCCmAi/view?usp=drive_link', + CONCAT('Hemos elegido una selección de flores muy especiales para realizar esta composición:', + ' brásicas, flor de cera, astrantia, espigas, lisiantum, paniculata eucaliptus.') + ), + ( + @item := @item + 1, + @r := 'Ramo Eterno', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/1AOMqlZAKqImnnWSmeq1DW1Krj78mACCG/view?usp=drive_link', + CONCAT('La perfecta combinación de los diferentes tonos de estatice y el eucaliptus ', + 'cinerea hacen de este ramo un recuerdo inolvidable ya que ambos materiales son de ', + 'larga duración por lo que podrás conservar tu ramo junto con las bonitas vivencias ', + 'de ese día durante mucho tiempo, además le añadimos un toque especial que le dan ', + 'las raices las cuales combinan con los tonos del ramo, unas bonitas cintas del colores ', + 'rematan el acabado del ramo. Este ramo se puede secar y mantenerse en perfecto estado.') + ), + ( + @item := @item + 1, + @r := 'Ramo Cielo', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + 'https://drive.google.com/file/d/168DikIOwVT5OO4BHARBoWwLB1wjpAS7s/view?usp=drive_link', + CONCAT('Las hortensias son unas de las flores más elegantes que existen y ', + 'la combinación que proponemos para este ramo te resultará de lo más armoniosa ', + ', ya que intercalamos flores de mayor tamaño como las hortensias azules y ', + 'blancas junto con flores más pequeñas y delicadas como el estatice , todo ello', + ' combinado con el eucaliptus cinerea que te aportará un sueve aroma en toda ', + 'la estancia, el atado del ramo es de rafia natural, siguiendo la tonalidad ', + 'clara de todo el conjunto. ') + ); + + -- Ramo Terranova: 1er elemento +INSERT INTO vn.item( + name, + longName, + `size`, + stems, + inkFk, + intrastatFk, + typeFk, + originFk) + SELECT + @r:= 'Rosa roja', + @r, + 60, + 1, + 'RED', + 6031970, + id, + 1 + FROM vn.itemType + WHERE code LIKE 'FNE'; + +SELECT LAST_INSERT_ID() INTO @itemFk; + +INSERT INTO floranet.`element` + SET itemFk = @itemFk; + +INSERT INTO floranet.builder( + itemFk, + elementFk, + quantity) + SELECT + id, + @itemFk, + 12 + FROM vn.item + WHERE name = 'Ramo Terranova'; + + -- Ramo Terranova: 2º elemento + +INSERT INTO vn.item( + name, + longName, + `size`, + stems, + inkFk, + intrastatFk, + typeFk, + originFk) + SELECT + @r:= 'Hoja de helecho', + @r, + 60, + 1, + 'BAS', + 6031970, + id, + 1 + FROM vn.itemType + WHERE code LIKE 'FNE'; + +SELECT LAST_INSERT_ID() INTO @itemFk; + +INSERT INTO floranet.`element` + SET itemFk = @itemFk; + +INSERT INTO floranet.builder( + itemFk, + elementFk, + quantity) + SELECT + id, + @itemFk, + 4 + FROM vn.item + WHERE name = 'Ramo Terranova'; + + + -- Ramo Terranova: 3er elemento +INSERT INTO vn.item( + name, + longName, + `size`, + stems, + inkFk, + intrastatFk, + typeFk, + originFk) + SELECT + @r:= 'Paniculata', + @r, + 60, + 1, + 'SLV', + 6031970, + id, + 1 + FROM vn.itemType + WHERE code LIKE 'FNE'; + +SELECT LAST_INSERT_ID() INTO @itemFk; + +INSERT INTO floranet.`element` + SET itemFk = @itemFk; + +INSERT INTO floranet.builder( + itemFk, + elementFk, + quantity) + SELECT + id, + @itemFk, + 5 + FROM vn.item + WHERE name = 'Ramo Terranova'; + + + -- XXX SET foreign_key_checks = 1; diff --git a/db/routines/floranet/events/clean.sql b/db/routines/floranet/events/clean.sql new file mode 100644 index 000000000..4477112fd --- /dev/null +++ b/db/routines/floranet/events/clean.sql @@ -0,0 +1,22 @@ +DELIMITER $$ +CREATE OR REPLACE + DEFINER=`root`@`localhost` + EVENT `floranet`.`clean` + ON SCHEDULE EVERY 1 DAY + STARTS '2024-01-01 23:00:00.000' + ON COMPLETION PRESERVE + ENABLE +DO +BEGIN + DELETE + FROM `order` + WHERE created < CURDATE() + AND isPaid = FALSE; + + DELETE c.* + FROM catalogue c + LEFT JOIN `order` o ON o.catalogueFk = c.id + WHERE c.created < CURDATE() + AND o.id IS NULL; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/floranet/procedures/catalogue_get.sql b/db/routines/floranet/procedures/catalogue_get.sql new file mode 100644 index 000000000..914b5d27f --- /dev/null +++ b/db/routines/floranet/procedures/catalogue_get.sql @@ -0,0 +1,52 @@ +DROP PROCEDURE IF EXISTS floranet.catalogue_get; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.catalogue_get(vLanded DATE, vPostalCode VARCHAR(15)) +READS SQL DATA +BEGIN +/** + * Returns list, price and all the stuff regarding the floranet items + * + * @param vLanded Delivery date + * @param vPostalCode Delivery address postal code + */ + DECLARE vLastCatalogueFk INT; + + START TRANSACTION; + + SELECT * FROM catalogue FOR UPDATE; + + SELECT MAX(id) INTO vLastCatalogueFk + FROM catalogue; + + INSERT INTO catalogue( + name, + price, + itemFk, + dated, + postalCode, + `type`, + image, + description + ) + SELECT i.name, + i.`size`, + i.id, + vLanded, + vPostalCode, + it.name, + i.image, + i.description + FROM vn.item i + JOIN vn.itemType it ON it.id = i.typeFk + WHERE it.code IN ('FNR','FNP'); + + SELECT * + FROM catalogue + WHERE id > IFNULL(vLastCatalogueFk,0); + + COMMIT; + +END$$ +DELIMITER ; diff --git a/db/routines/floranet/procedures/order_confirm.sql b/db/routines/floranet/procedures/order_confirm.sql new file mode 100644 index 000000000..fed123663 --- /dev/null +++ b/db/routines/floranet/procedures/order_confirm.sql @@ -0,0 +1,25 @@ +DROP PROCEDURE IF EXISTS floranet.order_confirm; + +DELIMITER $$ +$$ + +CREATE DEFINER=`root`@`localhost`PROCEDURE floranet.order_confirm(vCatalogueFk INT) +READS SQL DATA + +BEGIN +/** Update order.isPaid field + * + * @param vCatalogueFk floranet.catalogue.id + * + * @returns floranet.order.isPaid + */ + UPDATE `order` + SET isPaid = TRUE, + payed = NOW() + WHERE catalogueFk = vCatalogueFk; + + SELECT isPaid + FROM `order` + WHERE catalogueFk = vCatalogueFk; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/floranet/procedures/order_put.sql b/db/routines/floranet/procedures/order_put.sql new file mode 100644 index 000000000..c26cef19a --- /dev/null +++ b/db/routines/floranet/procedures/order_put.sql @@ -0,0 +1,42 @@ +DROP PROCEDURE IF EXISTS floranet.order_put; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.order_put(vOrder JSON) +READS SQL DATA +BEGIN +/** + * Get and process an order + * + * @param vOrder Data of the order + * + * Customer data: , , + * + * Item data: , + * + * Delivery data: ,
, + * + */ + INSERT IGNORE INTO `order`( + catalogueFk, + customerName, + email, + customerPhone, + message, + deliveryName, + address, + deliveryPhone + ) + VALUES (JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.catalogueFk')), + JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.customerName')), + JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.email')), + JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.customerPhone')), + JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.message')), + JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.deliveryName')), + JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.address')), + JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.deliveryPhone')) + ); + + SELECT LAST_INSERT_ID() orderFk; +END$$ +DELIMITER ; diff --git a/db/versions/10887-floranet/00-schemaAndUser.sql b/db/versions/10887-floranet/00-schemaAndUser.sql new file mode 100644 index 000000000..34da92550 --- /dev/null +++ b/db/versions/10887-floranet/00-schemaAndUser.sql @@ -0,0 +1,14 @@ + +CREATE SCHEMA IF NOT EXISTS `floranet`; + +CREATE ROLE IF NOT EXISTS 'floranet' ; + +GRANT Create temporary tables ON floranet.* TO 'floranet'; + +GRANT Execute ON floranet.* TO 'floranet'; + +GRANT Lock tables ON floranet.* TO 'floranet'; + +CREATE USER IF NOT EXISTS 'floranet'@'%'; + +GRANT floranet TO floranet@'%'; \ No newline at end of file diff --git a/db/versions/10887-floranet/01-tables.sql b/db/versions/10887-floranet/01-tables.sql new file mode 100644 index 000000000..b63c81c21 --- /dev/null +++ b/db/versions/10887-floranet/01-tables.sql @@ -0,0 +1,61 @@ +CREATE OR REPLACE TABLE floranet.`builder` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `itemFk` int(11) NOT NULL, + `elementFk` int(11) NOT NULL, + `quantity` int(10) unsigned NOT NULL DEFAULT 1, + PRIMARY KEY (`id`), + KEY `builder_FK` (`itemFk`), + KEY `builder_FK_1` (`elementFk`), + CONSTRAINT `builder_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Links handmade products with their elements'; + +CREATE OR REPLACE TABLE floranet.`element` ( + `itemFk` int(11) NOT NULL, + `typeFk` smallint(5) unsigned DEFAULT NULL, + `size` int(11) DEFAULT NULL, + `inkFk` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `originFk` tinyint(2) unsigned DEFAULT NULL, + `name` varchar(30) DEFAULT NULL, + `quantity` int(11) NOT NULL DEFAULT 1, + PRIMARY KEY (`itemFk`), + KEY `element_FK` (`itemFk`), + KEY `element_FK_1` (`typeFk`), + KEY `element_FK_2` (`inkFk`), + KEY `element_FK_3` (`originFk`), + CONSTRAINT `element_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `element_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `element_FK_2` FOREIGN KEY (`inkFk`) REFERENCES `vn`.`ink` (`id`) ON UPDATE CASCADE, + CONSTRAINT `element_FK_3` FOREIGN KEY (`originFk`) REFERENCES `vn`.`origin` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Filtro para localizar posibles items que coincidan con la descripción'; + +ALTER TABLE floranet.builder ADD CONSTRAINT `builder_FK_1` FOREIGN KEY (`elementFk`) REFERENCES `element` (`itemFk`) ON UPDATE CASCADE; + +CREATE OR REPLACE TABLE floranet.catalogue +(id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(50), + price DECIMAL(10,2) NOT NULL, + itemFk INT NOT NULL, + dated DATE, + postalCode VARCHAR(12), + `type` VARCHAR(50), + image VARCHAR(255), + description TEXT, + created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + payed DATETIME, + FOREIGN KEY (itemFk) REFERENCES vn.item(id) ON DELETE RESTRICT ON UPDATE CASCADE); + + +CREATE OR REPLACE TABLE floranet.`order` +(id INT AUTO_INCREMENT PRIMARY KEY, + catalogueFk INT UNIQUE, + customerName VARCHAR(100), + email VARCHAR(100), + customerPhone VARCHAR(15), + message VARCHAR(255), + deliveryName VARCHAR(100), + address VARCHAR(200), + deliveryPhone VARCHAR(100), + isPaid BOOL NOT NULL DEFAULT FALSE, + payed DATETIME, + created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (catalogueFk) REFERENCES catalogue(id) ON DELETE RESTRICT ON UPDATE CASCADE); \ No newline at end of file From 04df5a0ccdf4b1864adf7c1003decbaa54cd1ca4 Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 15 Feb 2024 13:52:58 +0100 Subject: [PATCH 027/456] refs #6021 --- db/routines/vn/views/zoneEstimatedDelivery.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/views/zoneEstimatedDelivery.sql b/db/routines/vn/views/zoneEstimatedDelivery.sql index 90c7381d8..c50d3602b 100644 --- a/db/routines/vn/views/zoneEstimatedDelivery.sql +++ b/db/routines/vn/views/zoneEstimatedDelivery.sql @@ -32,7 +32,7 @@ FROM ( ) LEFT JOIN `vn`.`zoneClosure` `zc` ON( `zc`.`zoneFk` = `t`.`zoneFk` - AND `zc`.`dated` = `util`.`VN_CURDATE`() + AND `zc`.`dated` = `util`.`VN_CURDATE`() ) ) LEFT JOIN `cache`.`departure_limit` `dl` ON( From ec9604323dbb0eef440071b57038ecf88186f050 Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 15 Feb 2024 13:54:34 +0100 Subject: [PATCH 028/456] commit --- db/routines/vn/views/zoneEstimatedDelivery.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/views/zoneEstimatedDelivery.sql b/db/routines/vn/views/zoneEstimatedDelivery.sql index c50d3602b..90c7381d8 100644 --- a/db/routines/vn/views/zoneEstimatedDelivery.sql +++ b/db/routines/vn/views/zoneEstimatedDelivery.sql @@ -32,7 +32,7 @@ FROM ( ) LEFT JOIN `vn`.`zoneClosure` `zc` ON( `zc`.`zoneFk` = `t`.`zoneFk` - AND `zc`.`dated` = `util`.`VN_CURDATE`() + AND `zc`.`dated` = `util`.`VN_CURDATE`() ) ) LEFT JOIN `cache`.`departure_limit` `dl` ON( From 74136442954aba00717704dedf56b801aba02817 Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 15 Feb 2024 14:37:09 +0100 Subject: [PATCH 029/456] contact_request and deliveryDate_get --- .../floranet/procedures/contact_Request.sql | 20 +++++++++++ .../floranet/procedures/deliveryDate_get.sql | 35 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 db/routines/floranet/procedures/contact_Request.sql create mode 100644 db/routines/floranet/procedures/deliveryDate_get.sql diff --git a/db/routines/floranet/procedures/contact_Request.sql b/db/routines/floranet/procedures/contact_Request.sql new file mode 100644 index 000000000..c55348d6f --- /dev/null +++ b/db/routines/floranet/procedures/contact_Request.sql @@ -0,0 +1,20 @@ +DROP PROCEDURE IF EXISTS floranet.contact_Request; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` +PROCEDURE floranet.contact_Request( + vName VARCHAR(100), + vPhone VARCHAR(15), + vEmail VARCHAR(100), + vMessage TEXT) +READS SQL DATA +BEGIN +/** + * Set actions for contact request + * + * @param vPostalCode Delivery address postal code + */ + +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/floranet/procedures/deliveryDate_get.sql b/db/routines/floranet/procedures/deliveryDate_get.sql new file mode 100644 index 000000000..06a8ae1ad --- /dev/null +++ b/db/routines/floranet/procedures/deliveryDate_get.sql @@ -0,0 +1,35 @@ +DROP PROCEDURE IF EXISTS floranet.deliveryDate_get; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.deliveryDate_get(vPostalCode VARCHAR(15)) +READS SQL DATA +BEGIN +/** + * Returns available dates for this postalCode + * + * @param vPostalCode Delivery address postal code + */ + CREATE OR REPLACE TEMPORARY TABLE tmp.deliveryDate + (dated DATE PRIMARY KEY) + ENGINE = MEMORY; + + IF vPostalCode != "00000" THEN + INSERT INTO tmp.deliveryDate + SET dated = CURDATE() + INTERVAL 1 DAY; + + INSERT INTO tmp.deliveryDate + SET dated = CURDATE() + INTERVAL 2 DAY; + + INSERT INTO tmp.deliveryDate + SET dated = CURDATE() + INTERVAL 4 DAY; + + INSERT INTO tmp.deliveryDate + SET dated = CURDATE() + INTERVAL 7 DAY; + END IF; + + SELECT * FROM tmp.deliveryDate; + + DROP TEMPORARY TABLE tmp.deliveryDate; +END$$ +DELIMITER ; \ No newline at end of file From 24b564f1ce559382d3386b041471110e1d0b6544 Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 15 Feb 2024 14:42:06 +0100 Subject: [PATCH 030/456] test --- db/routines/floranet/procedures/contact_Request.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/floranet/procedures/contact_Request.sql b/db/routines/floranet/procedures/contact_Request.sql index c55348d6f..7673c2203 100644 --- a/db/routines/floranet/procedures/contact_Request.sql +++ b/db/routines/floranet/procedures/contact_Request.sql @@ -11,7 +11,7 @@ PROCEDURE floranet.contact_Request( READS SQL DATA BEGIN /** - * Set actions for contact request + * Set actions for contact request. * * @param vPostalCode Delivery address postal code */ From 4f6ae220e1773141b8edf34ca96c3535627999c4 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 19 Feb 2024 15:10:34 +0100 Subject: [PATCH 031/456] feat: refs #6738 crear las Fk de la tabla flight --- db/versions/10894-crimsonEucalyptus/00-firstScript.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 db/versions/10894-crimsonEucalyptus/00-firstScript.sql diff --git a/db/versions/10894-crimsonEucalyptus/00-firstScript.sql b/db/versions/10894-crimsonEucalyptus/00-firstScript.sql new file mode 100644 index 000000000..167c38f70 --- /dev/null +++ b/db/versions/10894-crimsonEucalyptus/00-firstScript.sql @@ -0,0 +1,3 @@ +-- Place your SQL code here +ALTER TABLE IF EXISTS vn.flight ADD CONSTRAINT flight_airline_FK FOREIGN KEY (airlineFk) + REFERENCES vn.airline(id) ON DELETE CASCADE ON UPDATE CASCADE; \ No newline at end of file From 1c40e01fcb0be13fa60ec05ed001657d8e92af68 Mon Sep 17 00:00:00 2001 From: pablone Date: Tue, 20 Feb 2024 13:49:42 +0100 Subject: [PATCH 032/456] refactor: refs #6005 move the logic to the report --- back/models/notificationQueue.js | 29 ------------------- db/dump/fixtures.after.sql | 3 -- db/dump/fixtures.before.sql | 2 +- .../10895-pinkArborvitae/00-firstScript.sql | 11 +++++++ .../10895-pinkArborvitae/01-secondScript.sql | 28 ++++++++++++++++++ .../10895-pinkArborvitae/02-thirdScript.sql | 17 +++++++++++ .../03-insertBackUpNotification.sql | 12 ++++++++ .../backup-printer-selected.js | 21 ++++++++++++-- .../sql/previousNotifications.sql | 5 ++++ 9 files changed, 93 insertions(+), 35 deletions(-) delete mode 100644 back/models/notificationQueue.js create mode 100644 db/versions/10895-pinkArborvitae/00-firstScript.sql create mode 100644 db/versions/10895-pinkArborvitae/01-secondScript.sql create mode 100644 db/versions/10895-pinkArborvitae/02-thirdScript.sql create mode 100644 db/versions/10895-pinkArborvitae/03-insertBackUpNotification.sql create mode 100644 print/templates/email/backup-printer-selected/sql/previousNotifications.sql diff --git a/back/models/notificationQueue.js b/back/models/notificationQueue.js deleted file mode 100644 index a22bb6ce3..000000000 --- a/back/models/notificationQueue.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = Self => { - Self.observe('before save', async ctx => { - const instance = ctx.data || ctx.instance; - const {notificationFk} = instance; - - if (!(notificationFk === 'backup-printer-selected')) return; - const {models} = Self.app; - const params = JSON.parse(instance.params); - const options = ctx.options; - const {delay} = await models.Notification.findOne({ - where: {name: notificationFk} - }, options); - - const hasNotified = await models.NotificationQueue.findOne({ - where: { - notificationFk: notificationFk, - and: [ - {params: {like: '%\"labelerId\":' + params.labelerId + '%'}}, - {params: {like: '%\"sectorId\":' + params.sectorId + '%'}} - ] - }, - order: 'created DESC', - }, options); - - if (hasNotified?.created - Date.now() > delay || !hasNotified?.created || !delay) return; - - throw new Error('Is already Notified'); - }); -}; diff --git a/db/dump/fixtures.after.sql b/db/dump/fixtures.after.sql index 4c5f89d97..661b92d9c 100644 --- a/db/dump/fixtures.after.sql +++ b/db/dump/fixtures.after.sql @@ -113,9 +113,6 @@ INSERT INTO vn.ticket (clientFk, warehouseFk, shipped, nickname, refFk, addressF (100, 4, '2022-07-12 00:00:00', 'root', NULL, 195, NULL, NULL, 0, 0, 0, 0, NULL, 0, '2022-07-12 16:18:58', 1, NULL, 4, NULL, 1, 567, 1, '2022-07-12', 0, 0, 6, NULL, NULL, NULL, NULL, NULL), (100, 5, '2022-07-12 00:00:00', 'root', NULL, 195, NULL, NULL, 0, 0, 0, 0, NULL, 0, '2022-07-12 16:18:58', 1, NULL, 5, NULL, 1, 567, 1, '2022-07-12', 0, 0, 1, NULL, NULL, NULL, NULL, NULL); */ -INSERT INTO vn.sector (description,warehouseFk) VALUES - ('Sector One',1); - INSERT INTO vn.saleGroup (userFk,parkingFk,sectorFk) VALUES (100,1,1); diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 43293c9ea..de5b8fbf6 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -198,7 +198,7 @@ INSERT INTO `vn`.`printer` (`id`, `name`, `path`, `isLabeler`, `sectorFk`, `ipAd (2, 'printer2', 'path2', 1, 1 , NULL), (4, 'printer4', 'path4', 0, NULL, '10.1.10.4'); -UPDATE `vn`.`sector` SET mainPrinterFk = 1 WHERE id = 1; +UPDATE `vn`.`sector` SET `backupPrinterFk` = 1 WHERE id = 1; INSERT INTO `vn`.`worker`(`id`, `code`, `firstName`, `lastName`,`bossFk`, `phone`) diff --git a/db/versions/10895-pinkArborvitae/00-firstScript.sql b/db/versions/10895-pinkArborvitae/00-firstScript.sql new file mode 100644 index 000000000..2387fda08 --- /dev/null +++ b/db/versions/10895-pinkArborvitae/00-firstScript.sql @@ -0,0 +1,11 @@ +ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY IF EXISTS `packingSite_FK_4`; +ALTER TABLE `vn`.`arcRead` DROP FOREIGN KEY IF EXISTS `worker_printer_FK`; +ALTER TABLE `vn`.`host` DROP FOREIGN KEY IF EXISTS `configHost_FK`; +ALTER TABLE `vn`.`operator` DROP FOREIGN KEY IF EXISTS `operator_FK_5`; +ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY IF EXISTS `packingSite_FK_1`; +ALTER TABLE `vn`.`printQueue` DROP FOREIGN KEY IF EXISTS `printQueue_printerFk`; +ALTER TABLE `vn`.`sector` DROP FOREIGN KEY IF EXISTS `sector_FK_1`; +ALTER TABLE `vn`.`worker` DROP FOREIGN KEY IF EXISTS `worker_FK`; +ALTER TABLE dipole.printer DROP FOREIGN KEY IF EXISTS printer_FK; +ALTER TABLE dipole.expedition_PrintOut DROP FOREIGN KEY IF EXISTS expedition_PrintOut_FK; + diff --git a/db/versions/10895-pinkArborvitae/01-secondScript.sql b/db/versions/10895-pinkArborvitae/01-secondScript.sql new file mode 100644 index 000000000..4397bcf01 --- /dev/null +++ b/db/versions/10895-pinkArborvitae/01-secondScript.sql @@ -0,0 +1,28 @@ +ALTER TABLE `vn`.`printer` MODIFY COLUMN IF EXISTS `id` int unsigned auto_increment NOT NULL; + +ALTER TABLE `vn`.`arcRead` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`arcRead` ADD CONSTRAINT `arcRead_FK` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `vn`.`host` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`host` ADD CONSTRAINT `host_FK` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE `vn`.`operator` MODIFY COLUMN IF EXISTS `labelerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`operator` ADD CONSTRAINT `operator_FK_4` FOREIGN KEY IF NOT EXISTS (labelerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `vn`.`packingSite` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_1` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE RESTRICT; + +ALTER TABLE `vn`.`packingSite` MODIFY COLUMN IF EXISTS `printerRfidFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_4` FOREIGN KEY IF NOT EXISTS(printerRfidFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE `vn`.`printQueue` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`printQueue` ADD CONSTRAINT `printQueue_FK` FOREIGN KEY IF NOT EXISTS (id) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE `vn`.`sector` MODIFY COLUMN IF EXISTS `mainPrinterFk` int unsigned DEFAULT NULL NULL; +ALTER TABLE `vn`.`sector` ADD CONSTRAINT `sector_FK` FOREIGN KEY IF NOT EXISTS (mainPrinterFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `dipole`.`printer` MODIFY COLUMN IF EXISTS `id` int unsigned DEFAULT NULL NULL; +ALTER TABLE `dipole`.`printer` ADD CONSTRAINT `vnPrinter_FK` FOREIGN KEY IF NOT EXISTS (id) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `dipole`.`expedition_PrintOut` MODIFY COLUMN IF EXISTS `printerFk` int unsigned DEFAULT 0 NOT NULL; +ALTER TABLE `dipole`.`expedition_PrintOut` ADD CONSTRAINT `expedition_PrintOut_FK` FOREIGN KEY IF NOT EXISTS (printerFk) REFERENCES printer(id) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/db/versions/10895-pinkArborvitae/02-thirdScript.sql b/db/versions/10895-pinkArborvitae/02-thirdScript.sql new file mode 100644 index 000000000..21e97580f --- /dev/null +++ b/db/versions/10895-pinkArborvitae/02-thirdScript.sql @@ -0,0 +1,17 @@ + +ALTER TABLE `util`.`notification` ADD IF NOT EXISTS delay int unsigned NULL + COMMENT 'Minimum seconds Interval to Prevent Spam from Same-Type Notifications'; + +ALTER TABLE vn.sector DROP FOREIGN KEY IF EXISTS sector_FK; + +ALTER TABLE `vn`.`sector` CHANGE IF EXISTS `mainPrinterFk` `backupPrinterFk` int unsigned DEFAULT NULL NULL; + +ALTER TABLE `util`.`notificationSubscription` DROP FOREIGN KEY IF EXISTS `notificationSubscription_ibfk_1`; +ALTER TABLE `util`.`notificationQueue` DROP FOREIGN KEY IF EXISTS `nnotificationQueue_ibfk_1`; +ALTER TABLE `util`.`notificationAcl` DROP FOREIGN KEY IF EXISTS `notificationAcl_ibfk_1`; + +ALTER TABLE `util`.`notification` MODIFY COLUMN IF EXISTS `id` int(11) auto_increment NOT NULL; + +ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_Fk` FOREIGN KEY IF NOT EXISTS (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_Fk` FOREIGN KEY IF NOT EXISTS (`notificationFk`) REFERENCES `util`.`notification`(`name`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_Fk` FOREIGN KEY IF NOT EXISTS (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/db/versions/10895-pinkArborvitae/03-insertBackUpNotification.sql b/db/versions/10895-pinkArborvitae/03-insertBackUpNotification.sql new file mode 100644 index 000000000..b6558e6d4 --- /dev/null +++ b/db/versions/10895-pinkArborvitae/03-insertBackUpNotification.sql @@ -0,0 +1,12 @@ +INSERT IGNORE INTO util.notification (name, description, delay) + VALUES ('backup-printer-selected','A backup printer has been selected', 3600); + +INSERT IGNORE INTO util.notificationSubscription (notificationFk, userFk) + SELECT id, 10435 + FROM util.notification + WHERE name = 'backup-printer-selected'; + +INSERT IGNORE INTO util.notificationAcl (notificationFk, roleFk) + SELECT id, 66 + FROM util.notification + WHERE name = 'backup-printer-selected'; \ No newline at end of file diff --git a/print/templates/email/backup-printer-selected/backup-printer-selected.js b/print/templates/email/backup-printer-selected/backup-printer-selected.js index 0e56396db..099124286 100755 --- a/print/templates/email/backup-printer-selected/backup-printer-selected.js +++ b/print/templates/email/backup-printer-selected/backup-printer-selected.js @@ -1,11 +1,15 @@ const Component = require(`vn-print/core/component`); const emailBody = new Component('email-body'); +const name = 'backup-printer-selected'; module.exports = { - name: 'backup-printer-selected', + name: name, async serverPrefetch() { - this.sector = await this.findOneFromDef('sector', [this.sectorId]); + const notifications = await this.rawSqlFromDef('previousNotifications', [name]); + if (notifications && checkDuplicates(notifications, this.labelerId, this.sectorId)) + throw new Error('Previous notification sended with the same parameters'); + this.sector = await this.findOneFromDef('sector', [this.sectorId]); if (!this.sector) throw new Error('Something went wrong'); @@ -31,3 +35,16 @@ module.exports = { } } }; + +function checkDuplicates(notifications, labelerFk, printerFk) { + const criteria = { + labelerId: labelerFk, + sectorId: printerFk + }; + const filteredNotifications = notifications.filter(notification => { + const paramsObj = JSON.parse(notification.params); + return Object.keys(criteria).every(key => criteria[key] === paramsObj[key]); + }); + + return filteredNotifications.size > 1; +} diff --git a/print/templates/email/backup-printer-selected/sql/previousNotifications.sql b/print/templates/email/backup-printer-selected/sql/previousNotifications.sql new file mode 100644 index 000000000..bd44b05e4 --- /dev/null +++ b/print/templates/email/backup-printer-selected/sql/previousNotifications.sql @@ -0,0 +1,5 @@ +SELECT nq.params + FROM util.notificationQueue nq + JOIN util.notification n ON n.name = nq.notificationFk + WHERE n.name = ? + AND TIMESTAMPDIFF(SECOND, nq.created, util.VN_NOW()) <= n.delay \ No newline at end of file From 5e97f820a224625c361ceeb3d304f0f15ec6e36f Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 21 Feb 2024 12:59:42 +0100 Subject: [PATCH 033/456] feat(spec): refs #6005 add spec --- back/methods/notification/getList.js | 2 +- .../notification/specs/getList.spec.js | 7 ++++--- db/dump/fixtures.before.sql | 21 +++++++++++-------- ...sql => 03-insertBackUpNotification.vn.sql} | 0 .../methods/operator/spec/operator.spec.js | 16 +++++++------- .../backup-printer-selected.js | 7 ++++--- .../sql/previousNotificationscopy.sql | 4 ++++ 7 files changed, 32 insertions(+), 25 deletions(-) rename db/versions/10895-pinkArborvitae/{03-insertBackUpNotification.sql => 03-insertBackUpNotification.vn.sql} (100%) create mode 100644 print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql diff --git a/back/methods/notification/getList.js b/back/methods/notification/getList.js index 3881f0f63..49e88e093 100644 --- a/back/methods/notification/getList.js +++ b/back/methods/notification/getList.js @@ -45,7 +45,7 @@ module.exports = Self => { }); availableNotificationsMap.delete(active.notificationFk); } - + console.log(activeNotificationsMap); return { active: [...activeNotificationsMap.entries()], available: [...availableNotificationsMap.entries()] diff --git a/back/methods/notification/specs/getList.spec.js b/back/methods/notification/specs/getList.spec.js index 8f8c9e5e3..c43a3c6de 100644 --- a/back/methods/notification/specs/getList.spec.js +++ b/back/methods/notification/specs/getList.spec.js @@ -2,9 +2,10 @@ const models = require('vn-loopback/server/server').models; describe('NotificationSubscription getList()', () => { it('should return a list of available and active notifications of a user', async() => { - const {active, available} = await models.NotificationSubscription.getList(9); - const notifications = await models.Notification.find({}); - const totalAvailable = notifications.length - active.length; + const userId = 9; + const {active, available} = await models.NotificationSubscription.getList(userId); + const notifications = await models.NotificationSubscription.getAvailable(userId); + const totalAvailable = notifications.size - active.length; expect(active.length).toEqual(2); expect(available.length).toEqual(totalAvailable); diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index de5b8fbf6..f59065935 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -2810,14 +2810,15 @@ INSERT INTO `vn`.`packingSiteConfig` (`shinobiUrl`, `shinobiToken`, `shinobiGrou INSERT INTO `util`.`notificationConfig` SET `cleanDays` = 90; -INSERT INTO `util`.`notification` (`id`, `name`, `description`) +INSERT INTO `util`.`notification` (`id`, `name`, `description`, `delay`) VALUES - (1, 'print-email', 'notification fixture one'), - (2, 'invoice-electronic', 'A electronic invoice has been generated'), - (3, 'not-main-printer-configured', 'A printer distinct than main has been configured'), - (4, 'supplier-pay-method-update', 'A supplier pay method has been updated'), - (5, 'modified-entry', 'An entry has been modified'), - (6, 'book-entry-deleted', 'accounting entries deleted'); + (1, 'print-email', 'notification fixture one', NULL), + (2, 'invoice-electronic', 'A electronic invoice has been generated', NULL), + (3, 'not-main-printer-configured', 'A printer distinct than main has been configured', NULL), + (4, 'supplier-pay-method-update', 'A supplier pay method has been updated', NULL), + (5, 'modified-entry', 'An entry has been modified', NULL), + (6, 'book-entry-deleted', 'accounting entries deleted', NULL), + (7, 'backup-printer-selected','A backup printer has been selected', 3600); INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) VALUES @@ -2827,7 +2828,8 @@ INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) (3, 9), (4, 1), (5, 9), - (6, 9); + (6, 9), + (7, 66); INSERT INTO `util`.`notificationQueue` (`id`, `notificationFk`, `params`, `authorFk`, `status`, `created`) VALUES @@ -2844,7 +2846,8 @@ INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`) (2, 1109), (1, 9), (1, 3), - (6, 9); + (6, 9), + (7, 66); INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`) diff --git a/db/versions/10895-pinkArborvitae/03-insertBackUpNotification.sql b/db/versions/10895-pinkArborvitae/03-insertBackUpNotification.vn.sql similarity index 100% rename from db/versions/10895-pinkArborvitae/03-insertBackUpNotification.sql rename to db/versions/10895-pinkArborvitae/03-insertBackUpNotification.vn.sql diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index f57322f49..a39fcf791 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -describe('Operator', () => { +fdescribe('Operator', () => { const authorFk = 9; const sectorId = 1; const labeler = 1; @@ -62,7 +62,7 @@ describe('Operator', () => { } }); - it('should not create notification when is already notified by another worker', async() => { + fit('should not create notification when is already notified by another worker', async() => { const tx = await models.Operator.beginTransaction({}); try { @@ -74,15 +74,13 @@ describe('Operator', () => { created: Date.vnNow(), }, options); - let error; + await createOperator(labeler, options); + await models.Notification.send(options); + const lastNotification = await models.NotificationQueue.find({order: 'id DESC'}, options); - try { - await createOperator(labeler, options); - } catch (e) { - error = e; - } + console.log('lastNotification: ', lastNotification); - expect(error.message).toEqual('Is already Notified'); + expect(1).toEqual('Is already Notified'); await tx.rollback(); } catch (e) { diff --git a/print/templates/email/backup-printer-selected/backup-printer-selected.js b/print/templates/email/backup-printer-selected/backup-printer-selected.js index 099124286..04a82b0c7 100755 --- a/print/templates/email/backup-printer-selected/backup-printer-selected.js +++ b/print/templates/email/backup-printer-selected/backup-printer-selected.js @@ -5,8 +5,10 @@ const name = 'backup-printer-selected'; module.exports = { name: name, async serverPrefetch() { + const notifications1 = await this.rawSqlFromDef('previousNotificationscopy', [name]); + console.log('notifications: ', notifications1); const notifications = await this.rawSqlFromDef('previousNotifications', [name]); - if (notifications && checkDuplicates(notifications, this.labelerId, this.sectorId)) + if (!notifications.length && checkDuplicates(notifications, this.labelerId, this.sectorId)) throw new Error('Previous notification sended with the same parameters'); this.sector = await this.findOneFromDef('sector', [this.sectorId]); @@ -45,6 +47,5 @@ function checkDuplicates(notifications, labelerFk, printerFk) { const paramsObj = JSON.parse(notification.params); return Object.keys(criteria).every(key => criteria[key] === paramsObj[key]); }); - - return filteredNotifications.size > 1; + return filteredNotifications.length > 1; } diff --git a/print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql b/print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql new file mode 100644 index 000000000..f8f30e7f1 --- /dev/null +++ b/print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql @@ -0,0 +1,4 @@ +SELECT nq.params + FROM util.notificationQueue nq + JOIN util.notification n ON n.name = nq.notificationFk + WHERE n.name = ? \ No newline at end of file From 48310d24c7c900a28b86e13235a36ca868f7ed86 Mon Sep 17 00:00:00 2001 From: ivanm Date: Wed, 21 Feb 2024 14:36:12 +0100 Subject: [PATCH 034/456] refs #6732 change name supplier.isSerious to supplier.isReal --- db/routines/vn2008/views/Proveedores.sql | 2 +- db/versions/10900-redOak/00-firstScript.sql | 1 + modules/supplier/back/methods/supplier/getSummary.js | 2 +- modules/supplier/back/models/supplier.json | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 db/versions/10900-redOak/00-firstScript.sql diff --git a/db/routines/vn2008/views/Proveedores.sql b/db/routines/vn2008/views/Proveedores.sql index 0b7ee89f8..e26e9c829 100644 --- a/db/routines/vn2008/views/Proveedores.sql +++ b/db/routines/vn2008/views/Proveedores.sql @@ -23,7 +23,7 @@ AS SELECT `s`.`id` AS `Id_Proveedor`, `s`.`isOfficial` AS `oficial`, `s`.`workerFk` AS `workerFk`, `s`.`payDay` AS `pay_day`, - `s`.`isSerious` AS `serious`, + `s`.`isReal` AS `real`, `s`.`note` AS `notas`, `s`.`taxTypeSageFk` AS `taxTypeSageFk`, `s`.`withholdingSageFk` AS `withholdingSageFk`, diff --git a/db/versions/10900-redOak/00-firstScript.sql b/db/versions/10900-redOak/00-firstScript.sql new file mode 100644 index 000000000..8609ddc7e --- /dev/null +++ b/db/versions/10900-redOak/00-firstScript.sql @@ -0,0 +1 @@ +ALTER TABLE vn.supplier CHANGE COLUMN isSerious isReal tinyint(1) unsigned NOT NULL DEFAULT 0; diff --git a/modules/supplier/back/methods/supplier/getSummary.js b/modules/supplier/back/methods/supplier/getSummary.js index bc869725c..699233386 100644 --- a/modules/supplier/back/methods/supplier/getSummary.js +++ b/modules/supplier/back/methods/supplier/getSummary.js @@ -25,7 +25,7 @@ module.exports = Self => { 'id', 'name', 'nickname', - 'isSerious', + 'isReal', 'isActive', 'note', 'nif', diff --git a/modules/supplier/back/models/supplier.json b/modules/supplier/back/models/supplier.json index 59d23f106..90b266ba9 100644 --- a/modules/supplier/back/models/supplier.json +++ b/modules/supplier/back/models/supplier.json @@ -48,7 +48,7 @@ "isOfficial": { "type": "boolean" }, - "isSerious": { + "isReal": { "type": "boolean" }, "isTrucker": { From 9c6c5140566c8409c8eb6dff3e8ce4791c3f0776 Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 27 Feb 2024 11:48:49 +0100 Subject: [PATCH 035/456] feat: refs #6738 --- db/versions/10894-crimsonEucalyptus/01-Tramos.sql | 3 +++ db/versions/10894-crimsonEucalyptus/02-dock.sql | 2 ++ .../10894-crimsonEucalyptus/03-Proveedores_cargueras.sql | 2 ++ 3 files changed, 7 insertions(+) create mode 100644 db/versions/10894-crimsonEucalyptus/01-Tramos.sql create mode 100644 db/versions/10894-crimsonEucalyptus/02-dock.sql create mode 100644 db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql diff --git a/db/versions/10894-crimsonEucalyptus/01-Tramos.sql b/db/versions/10894-crimsonEucalyptus/01-Tramos.sql new file mode 100644 index 000000000..f2ac17ad1 --- /dev/null +++ b/db/versions/10894-crimsonEucalyptus/01-Tramos.sql @@ -0,0 +1,3 @@ +-- Place your SQL code here +ALTER TABLE IF EXISTS `vn2008`.`Tramos` RENAME `vn`.``; + diff --git a/db/versions/10894-crimsonEucalyptus/02-dock.sql b/db/versions/10894-crimsonEucalyptus/02-dock.sql new file mode 100644 index 000000000..1816ce18b --- /dev/null +++ b/db/versions/10894-crimsonEucalyptus/02-dock.sql @@ -0,0 +1,2 @@ +-- Place your SQL code here +ALTER TABLE IF EXISTS `vn2008`.`dock` RENAME `vn`.``; \ No newline at end of file diff --git a/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql b/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql new file mode 100644 index 000000000..45bac972c --- /dev/null +++ b/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql @@ -0,0 +1,2 @@ +-- Place your SQL code here +ALTER TABLE IF EXISTS `vn2008`.`Proveedores_cargueras` RENAME `vn`.``; From 10a89cb7900c84a76f92f63c1f92edb4e13912cb Mon Sep 17 00:00:00 2001 From: ivanm Date: Wed, 28 Feb 2024 13:32:17 +0100 Subject: [PATCH 036/456] refs #6827 Check usernames special characters --- back/methods/chat/spec/send.spec.js | 4 +-- db/dump/fixtures.before.sql | 26 +++++++++---------- .../account/procedures/user_checkName.sql | 2 +- .../10917-aquaPhormium/00-firstScript.sql | 9 +++++++ e2e/paths/02-client/01_create_client.spec.js | 2 +- .../02-client/07_edit_web_access.spec.js | 4 +-- e2e/paths/02-client/09_add_credit.spec.js | 2 +- e2e/paths/02-client/19_summary.spec.js | 2 +- e2e/paths/05-ticket/05_tracking_state.spec.js | 2 +- .../01_create_and_basic_data.spec.js | 4 +-- .../client/specs/createWithUser.spec.js | 6 ++--- .../client/back/models/specs/client.spec.js | 8 +++--- .../specs/activeWithInheritedRole.spec.js | 2 +- .../back/methods/worker/specs/new.spec.js | 2 +- 14 files changed, 42 insertions(+), 33 deletions(-) create mode 100644 db/versions/10917-aquaPhormium/00-firstScript.sql diff --git a/back/methods/chat/spec/send.spec.js b/back/methods/chat/spec/send.spec.js index e910f3fab..511f5fe80 100644 --- a/back/methods/chat/spec/send.spec.js +++ b/back/methods/chat/spec/send.spec.js @@ -3,14 +3,14 @@ const {models} = require('vn-loopback/server/server'); describe('Chat send()', () => { it('should return true as response', async() => { let ctx = {req: {accessToken: {userId: 1}}}; - let response = await models.Chat.send(ctx, '@salesPerson', 'I changed something'); + let response = await models.Chat.send(ctx, '@salesperson', 'I changed something'); expect(response).toEqual(true); }); it('should return false as response', async() => { let ctx = {req: {accessToken: {userId: 18}}}; - let response = await models.Chat.send(ctx, '@salesPerson', 'I changed something'); + let response = await models.Chat.send(ctx, '@salesperson', 'I changed something'); expect(response).toEqual(false); }); diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 1d59c7ac0..1c20b46c1 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -81,7 +81,7 @@ INSERT INTO `account`.`roleConfig`(`id`, `mysqlPassword`, `rolePrefix`, `userPre CALL `account`.`role_sync`; INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `role`,`active`,`email`, `lang`, `image`, `password`) - SELECT id, name, CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2' + SELECT id, LOWER(name), CONCAT(name, 'Nick'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2' FROM `account`.`role` ORDER BY id; @@ -118,18 +118,18 @@ INSERT INTO `hedera`.`tpvConfig`(`id`, `currency`, `terminal`, `transactionType` INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`) VALUES - (1101, 'BruceWayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1102, 'PetterParker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1103, 'ClarkKent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1104, 'TonyStark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1105, 'MaxEisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1106, 'DavidCharlesHaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1107, 'HankPym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1108, 'CharlesXavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1109, 'BruceBanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1110, 'JessicaJones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en', NULL), - (1111, 'Missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL), - (1112, 'Trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL); + (1101, 'brucewayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1102, 'petterparker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1103, 'clarkkent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1104, 'tonystark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1105, 'maxeisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1106, 'davidcharleshaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1107, 'hankpym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1108, 'charlesxavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1109, 'brucebanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), + (1110, 'jessicajones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en', NULL), + (1111, 'missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL), + (1112, 'trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL); UPDATE account.`user` SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR) diff --git a/db/routines/account/procedures/user_checkName.sql b/db/routines/account/procedures/user_checkName.sql index 4f954ad00..6fab17361 100644 --- a/db/routines/account/procedures/user_checkName.sql +++ b/db/routines/account/procedures/user_checkName.sql @@ -7,7 +7,7 @@ BEGIN * The user name must only contain lowercase letters or, starting with second * character, numbers or underscores. */ - IF vUserName NOT REGEXP '^[a-z0-9_-]*$' THEN + IF vUserName NOT REGEXP BINARY '^[a-z0-9_-]+$' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'INVALID_USER_NAME'; END IF; diff --git a/db/versions/10917-aquaPhormium/00-firstScript.sql b/db/versions/10917-aquaPhormium/00-firstScript.sql new file mode 100644 index 000000000..436243ba5 --- /dev/null +++ b/db/versions/10917-aquaPhormium/00-firstScript.sql @@ -0,0 +1,9 @@ +UPDATE account.user +SET name = LOWER(name), + name = REPLACE(name, ' ', ''), + name = REPLACE(name, '.', ''), + name = REPLACE(name, 'ñ', 'n'), + name = REPLACE(name, '*', ''), + name = REPLACE(name, 'ç', 'z'), + name = REPLACE(name, 'ã', 'a') +WHERE NOT active; diff --git a/e2e/paths/02-client/01_create_client.spec.js b/e2e/paths/02-client/01_create_client.spec.js index 744b11a72..e951ec784 100644 --- a/e2e/paths/02-client/01_create_client.spec.js +++ b/e2e/paths/02-client/01_create_client.spec.js @@ -32,7 +32,7 @@ describe('Client create path', () => { await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson'); await page.autocompleteSearch(selectors.createClientView.businessType, 'florist'); await page.write(selectors.createClientView.taxNumber, '74451390E'); - await page.write(selectors.createClientView.userName, 'CaptainMarvel'); + await page.write(selectors.createClientView.userName, 'captainmarvel'); await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es'); await page.waitToClick(selectors.createClientView.createButton); const message = await page.waitForSnackbar(); diff --git a/e2e/paths/02-client/07_edit_web_access.spec.js b/e2e/paths/02-client/07_edit_web_access.spec.js index c5e132ab7..8758c3b05 100644 --- a/e2e/paths/02-client/07_edit_web_access.spec.js +++ b/e2e/paths/02-client/07_edit_web_access.spec.js @@ -29,7 +29,7 @@ describe('Client web access path', () => { await page.click($.enableWebAccess); await page.click($.saveButton); const enableMessage = await page.waitForSnackbar(); - await page.overwrite($.userName, 'Legion'); + await page.overwrite($.userName, 'legion'); await page.overwrite($.email, 'legion@marvel.com'); await page.click($.saveButton); const modifyMessage = await page.waitForSnackbar(); @@ -47,7 +47,7 @@ describe('Client web access path', () => { expect(modifyMessage.type).toBe('success'); expect(hasAccess).toBe('unchecked'); - expect(userName).toEqual('Legion'); + expect(userName).toEqual('legion'); expect(email).toEqual('legion@marvel.com'); // expect(logName).toEqual('Legion'); diff --git a/e2e/paths/02-client/09_add_credit.spec.js b/e2e/paths/02-client/09_add_credit.spec.js index 2365f0635..179265b0f 100644 --- a/e2e/paths/02-client/09_add_credit.spec.js +++ b/e2e/paths/02-client/09_add_credit.spec.js @@ -34,6 +34,6 @@ describe('Client Add credit path', () => { const result = await page.waitToGetProperty(selectors.clientCredit.firstCreditText, 'innerText'); expect(result).toContain(999); - expect(result).toContain('salesAssistant'); + expect(result).toContain('salesassistant'); }); }); diff --git a/e2e/paths/02-client/19_summary.spec.js b/e2e/paths/02-client/19_summary.spec.js index b3bf43c5c..dec8d505c 100644 --- a/e2e/paths/02-client/19_summary.spec.js +++ b/e2e/paths/02-client/19_summary.spec.js @@ -61,7 +61,7 @@ describe('Client summary path', () => { it('should display web access details', async() => { const result = await page.waitToGetProperty(selectors.clientSummary.userName, 'innerText'); - expect(result).toContain('PetterParker'); + expect(result).toContain('petterparker'); }); it('should display business data', async() => { diff --git a/e2e/paths/05-ticket/05_tracking_state.spec.js b/e2e/paths/05-ticket/05_tracking_state.spec.js index 9ac373287..5cfc1c9d4 100644 --- a/e2e/paths/05-ticket/05_tracking_state.spec.js +++ b/e2e/paths/05-ticket/05_tracking_state.spec.js @@ -59,7 +59,7 @@ describe('Ticket Create new tracking state path', () => { const result = await page .waitToGetProperty(selectors.createStateView.worker, 'value'); - expect(result).toEqual('salesPerson'); + expect(result).toEqual('salesperson'); }); it(`should succesfully create a valid state`, async() => { diff --git a/e2e/paths/14-account/01_create_and_basic_data.spec.js b/e2e/paths/14-account/01_create_and_basic_data.spec.js index e38d1aeec..e2c069d80 100644 --- a/e2e/paths/14-account/01_create_and_basic_data.spec.js +++ b/e2e/paths/14-account/01_create_and_basic_data.spec.js @@ -21,7 +21,7 @@ describe('Account create and basic data path', () => { }); it('should fill the form and then save it by clicking the create button', async() => { - await page.write(selectors.accountIndex.newName, 'Remy'); + await page.write(selectors.accountIndex.newName, 'remy'); await page.write(selectors.accountIndex.newNickname, 'Gambit'); await page.write(selectors.accountIndex.newEmail, 'RemyEtienneLeBeau@verdnatura.es'); await page.autocompleteSearch(selectors.accountIndex.newRole, 'Trainee'); @@ -39,7 +39,7 @@ describe('Account create and basic data path', () => { it('should check the name is as expected', async() => { const result = await page.waitToGetProperty(selectors.accountBasicData.name, 'value'); - expect(result).toEqual('Remy'); + expect(result).toEqual('remy'); }); it('should check the nickname is as expected', async() => { diff --git a/modules/client/back/methods/client/specs/createWithUser.spec.js b/modules/client/back/methods/client/specs/createWithUser.spec.js index 074cb289a..04fc51a26 100644 --- a/modules/client/back/methods/client/specs/createWithUser.spec.js +++ b/modules/client/back/methods/client/specs/createWithUser.spec.js @@ -3,8 +3,8 @@ const LoopBackContext = require('loopback-context'); describe('Client Create', () => { const newAccount = { - userName: 'Deadpool', - email: 'Deadpool@marvel.com', + userName: 'deadpool', + email: 'deadpool@marvel.com', fi: '16195279J', name: 'Wade', socialName: 'DEADPOOL MARVEL', @@ -31,7 +31,7 @@ describe('Client Create', () => { }); }); - it(`should not find Deadpool as he's not created yet`, async() => { + it(`should not find deadpool as he's not created yet`, async() => { const tx = await models.Client.beginTransaction({}); try { diff --git a/modules/client/back/models/specs/client.spec.js b/modules/client/back/models/specs/client.spec.js index bf134fbf9..1b5132304 100644 --- a/modules/client/back/models/specs/client.spec.js +++ b/modules/client/back/models/specs/client.spec.js @@ -31,8 +31,8 @@ describe('Client Model', () => { await models.Client.notifyAssignment(instance, previousWorkerId, currentWorkerId); - expect(chatModel.send).toHaveBeenCalledWith(ctx, '@DavidCharlesHaller', `Client assignment has changed`); - expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', `Client assignment has changed`); + expect(chatModel.send).toHaveBeenCalledWith(ctx, '@davidcharleshaller', `Client assignment has changed`); + expect(chatModel.send).toHaveBeenCalledWith(ctx, '@hankpym', `Client assignment has changed`); }); it('should call to the Chat send() method for the previous worker', async() => { @@ -40,7 +40,7 @@ describe('Client Model', () => { await models.Client.notifyAssignment(instance, null, currentWorkerId); - expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', `Client assignment has changed`); + expect(chatModel.send).toHaveBeenCalledWith(ctx, '@hankpym', `Client assignment has changed`); }); it('should call to the Chat send() method for the current worker', async() => { @@ -48,7 +48,7 @@ describe('Client Model', () => { await models.Client.notifyAssignment(instance, previousWorkerId, null); - expect(chatModel.send).toHaveBeenCalledWith(ctx, '@DavidCharlesHaller', `Client assignment has changed`); + expect(chatModel.send).toHaveBeenCalledWith(ctx, '@davidcharleshaller', `Client assignment has changed`); }); }); diff --git a/modules/worker/back/methods/worker/specs/activeWithInheritedRole.spec.js b/modules/worker/back/methods/worker/specs/activeWithInheritedRole.spec.js index 580e07351..cf1eafa23 100644 --- a/modules/worker/back/methods/worker/specs/activeWithInheritedRole.spec.js +++ b/modules/worker/back/methods/worker/specs/activeWithInheritedRole.spec.js @@ -6,7 +6,7 @@ describe('Worker activeWithInheritedRole', () => { allRolesCount = await app.models.VnRole.count(); }); - it('should return the workers with an inherited role of salesPerson', async() => { + it('should return the workers with an inherited role of salesperson', async() => { const filter = {where: {role: 'salesPerson'}}; const result = await app.models.Worker.activeWithInheritedRole(filter); diff --git a/modules/worker/back/methods/worker/specs/new.spec.js b/modules/worker/back/methods/worker/specs/new.spec.js index d3e9cb9d0..66959e0a7 100644 --- a/modules/worker/back/methods/worker/specs/new.spec.js +++ b/modules/worker/back/methods/worker/specs/new.spec.js @@ -20,7 +20,7 @@ describe('Worker new', () => { const employeeId = 1; const defaultWorker = { fi: '78457139E', - name: 'DEFAULTERWORKER', + name: 'defaulterworker', firstName: 'DEFAULT', lastNames: 'WORKER', email: 'defaultWorker@mydomain.com', From 311401daba314635241aa7eed2513db509e767f5 Mon Sep 17 00:00:00 2001 From: robert Date: Thu, 29 Feb 2024 08:59:25 +0100 Subject: [PATCH 037/456] fix: refs #6777 ticketMRW --- db/routines/vn/views/ticketMRW.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/views/ticketMRW.sql b/db/routines/vn/views/ticketMRW.sql index 2677b41e7..26b928ac4 100644 --- a/db/routines/vn/views/ticketMRW.sql +++ b/db/routines/vn/views/ticketMRW.sql @@ -44,4 +44,4 @@ FROM ( ) ) JOIN `vn2008`.`Paises` ON(`province`.`Paises_Id` = `Paises`.`Id`) - ) + ); From 624c214178c1c7671df2515388187b545f7c66da Mon Sep 17 00:00:00 2001 From: robert Date: Thu, 29 Feb 2024 10:46:08 +0100 Subject: [PATCH 038/456] fix: refs #6777 Fixed version --- .../10921-bronzeAralia/00-firstScript.sql | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 db/versions/10921-bronzeAralia/00-firstScript.sql diff --git a/db/versions/10921-bronzeAralia/00-firstScript.sql b/db/versions/10921-bronzeAralia/00-firstScript.sql new file mode 100644 index 000000000..55aa03dca --- /dev/null +++ b/db/versions/10921-bronzeAralia/00-firstScript.sql @@ -0,0 +1,49 @@ +-- Para evitar el error al hacer myt run +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`Clientes` +AS SELECT `c`.`id` AS `id_cliente`, + `c`.`name` AS `cliente`, + `c`.`fi` AS `if`, + `c`.`socialName` AS `razonSocial`, + `c`.`contact` AS `contacto`, + `c`.`street` AS `domicilio`, + `c`.`city` AS `poblacion`, + `c`.`postcode` AS `codPostal`, + `c`.`phone` AS `telefono`, + `c`.`mobile` AS `movil`, + `c`.`isRelevant` AS `real`, + `c`.`email` AS `e-mail`, + `c`.`iban` AS `iban`, + `c`.`dueDay` AS `vencimiento`, + `c`.`accountingAccount` AS `Cuenta`, + `c`.`isEqualizated` AS `RE`, + `c`.`provinceFk` AS `province_id`, + `c`.`hasToInvoice` AS `invoice`, + `c`.`credit` AS `credito`, + `c`.`countryFk` AS `Id_Pais`, + `c`.`isActive` AS `activo`, + `c`.`gestdocFk` AS `gestdoc_id`, + `c`.`quality` AS `calidad`, + `c`.`payMethodFk` AS `pay_met_id`, + `c`.`created` AS `created`, + `c`.`isToBeMailed` AS `mail`, + `c`.`contactChannelFk` AS `chanel_id`, + `c`.`hasSepaVnl` AS `sepaVnl`, + `c`.`hasCoreVnl` AS `coreVnl`, + `c`.`hasCoreVnh` AS `coreVnh`, + `c`.`hasLcr` AS `hasLcr`, + `c`.`defaultAddressFk` AS `default_address`, + `c`.`riskCalculated` AS `risk_calculated`, + `c`.`hasToInvoiceByAddress` AS `invoiceByAddress`, + `c`.`isTaxDataChecked` AS `contabilizado`, + `c`.`isFreezed` AS `congelado`, + `c`.`creditInsurance` AS `creditInsurance`, + `c`.`isCreatedAsServed` AS `isCreatedAsServed`, + `c`.`hasInvoiceSimplified` AS `hasInvoiceSimplified`, + `c`.`salesPersonFk` AS `Id_Trabajador`, + `c`.`isVies` AS `vies`, + `c`.`eypbc` AS `EYPBC`, + `c`.`bankEntityFk` AS `bankEntityFk`, + `c`.`typeFk` AS `typeFk` +FROM `vn`.`client` `c`; \ No newline at end of file From e047d445d3fbf7d4bbf1d983178e749ebb0f2be6 Mon Sep 17 00:00:00 2001 From: Jbreso Date: Thu, 29 Feb 2024 12:00:43 +0100 Subject: [PATCH 039/456] feat: refs#6493 modificado entry_getTransfer --- db/routines/vn/procedures/entry_getTransfer.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/routines/vn/procedures/entry_getTransfer.sql b/db/routines/vn/procedures/entry_getTransfer.sql index 151bebd4d..89ad5a67f 100644 --- a/db/routines/vn/procedures/entry_getTransfer.sql +++ b/db/routines/vn/procedures/entry_getTransfer.sql @@ -68,19 +68,19 @@ BEGIN AND v.`visible` ON DUPLICATE KEY UPDATE visibleLanding = v.`visible`; - CALL vn2008.availableTraslate(vWarehouseOut, vDateShipped, NULL); + CALL vn.available_traslate(vWarehouseOut, vDateShipped, NULL); INSERT INTO tItem(itemFk, available) SELECT a.item_id, a.available - FROM vn2008.availableTraslate a + FROM availableTraslate a WHERE a.available ON DUPLICATE KEY UPDATE available = a.available; - CALL vn2008.availableTraslate(vWarehouseIn, vDateLanded, vWarehouseOut); + CALL vn.available_traslate(vWarehouseIn, vDateLanded, vWarehouseOut); INSERT INTO tItem(itemFk, availableLanding) SELECT a.item_id, a.available - FROM vn2008.availableTraslate a + FROM availableTraslate a WHERE a.available ON DUPLICATE KEY UPDATE availableLanding = a.available; ELSE From 2f275d8f32bc9451c8a225e8cc5e3fb853a98f58 Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 29 Feb 2024 13:06:26 +0100 Subject: [PATCH 040/456] itemType add --- db/dump/fixtures.after.sql | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/db/dump/fixtures.after.sql b/db/dump/fixtures.after.sql index a7d059ed2..13e423d68 100644 --- a/db/dump/fixtures.after.sql +++ b/db/dump/fixtures.after.sql @@ -294,8 +294,15 @@ INSERT INTO hedera.tpvMerchantEnable (merchantFk, companyFk) VALUES (1, 442); -- XXX: floranet -INSERT INTO vn.intrastat(id, description, taxClassFk, taxCodeFk) -VALUES(6031970, 'Flores y capullos frescos (Otras: ramos, coronas)', 1, 63); +INSERT IGNORE INTO vn.intrastat(id, description, taxClassFk, taxCodeFk) +VALUES(6031970, 'Flores y capullos frescos (Otras: ramos, coronas)', 1, 63); + + +INSERT IGNORE INTO vn.itemType (code, name, categoryFk, workerFk) + VALUES('FNR', 'Floranet Ramos', 1, 1); + +INSERT IGNORE INTO vn.itemType (code, name, categoryFk, workerFk) + VALUES('FNP', 'Floranet Plantas', 1, 1); -- Generación de items SELECT id From c889353459afd15e3c1ac54423d8dc57fc11c0ad Mon Sep 17 00:00:00 2001 From: Jbreso Date: Fri, 1 Mar 2024 14:37:14 +0100 Subject: [PATCH 041/456] feat: refs#6493 modificar procedimiento balance_create --- db/routines/vn/procedures/balance_create.sql | 96 ++++---- .../vn2008/procedures/availableTraslate.sql | 126 ----------- .../vn2008/procedures/balance_create.sql | 207 ------------------ 3 files changed, 49 insertions(+), 380 deletions(-) delete mode 100644 db/routines/vn2008/procedures/availableTraslate.sql delete mode 100644 db/routines/vn2008/procedures/balance_create.sql diff --git a/db/routines/vn/procedures/balance_create.sql b/db/routines/vn/procedures/balance_create.sql index 9c22a4fd4..9fb8b614c 100644 --- a/db/routines/vn/procedures/balance_create.sql +++ b/db/routines/vn/procedures/balance_create.sql @@ -18,7 +18,7 @@ BEGIN DECLARE vStartingYear INT DEFAULT vCurYear - 2; DECLARE vTable TEXT; - SET vTable = util.quoteIdentifier('balance_nest_tree'); + SET vTable = util.quoteIdentifier('balanceNestTree'); SET vYear = util.quoteIdentifier(vCurYear); SET vOneYearAgo = util.quoteIdentifier(vCurYear-1); SET vTwoYearsAgo = util.quoteIdentifier(vCurYear-2); @@ -44,67 +44,65 @@ BEGIN CREATE OR REPLACE TEMPORARY TABLE tmp.balance SELECT * FROM tmp.nest; - DROP TEMPORARY TABLE IF EXISTS tmp.empresas_receptoras; - DROP TEMPORARY TABLE IF EXISTS tmp.empresas_emisoras; - - SELECT companyGroupFk INTO vConsolidatedGroup + SELECT companyGroupFk INTO vConsolidatedGroup FROM company WHERE id = vCompany; - CREATE OR REPLACE TEMPORARY TABLE tmp.empresas_receptoras - SELECT id empresa_id + CREATE OR REPLACE TEMPORARY TABLE tCompanyReceiving + SELECT id companyId FROM company WHERE id = vCompany OR companyGroupFk = IF(vIsConsolidated, vConsolidatedGroup, NULL); - CREATE OR REPLACE TEMPORARY TABLE tmp.empresas_emisoras - SELECT id empresa_id FROM supplier p; + CREATE OR REPLACE TEMPORARY TABLE tCompanyIssuing + SELECT id companyId + FROM supplier p; IF vInterGroupSalesIncluded = FALSE THEN - DELETE ee.* - FROM tmp.empresas_emisoras ee - JOIN company e on e.id = ee.empresa_id + DELETE ci.* + FROM tCompanyIssuing ci + JOIN company e on e.id = ci.companyId WHERE e.companyGroupFk = vConsolidatedGroup; END IF; -- Se calculan las facturas que intervienen, para luego poder servir el desglose desde aqui - CREATE OR REPLACE TEMPORARY TABLE tmp.balance_desglose - SELECT er.empresa_id receptora_id, - ee.empresa_id emisora_id, + CREATE OR REPLACE TEMPORARY TABLE tmp.balanceDetail + SELECT cr.companyId receivingId, + ci.companyId issuingId, year(IFNULL(r.bookEntried,IFNULL(r.booked, r.issued))) `year`, month(IFNULL(r.bookEntried,IFNULL(r.booked, r.issued))) `month`, - expenseFk Id_Gasto, - SUM(bi) importe + expenseFk, + SUM(taxableBase) amount FROM invoiceIn r JOIN invoiceInTax ri on ri.invoiceInFk = r.id - JOIN tmp.empresas_receptoras er on er.empresa_id = r.companyFk - JOIN tmp.empresas_emisoras ee ON ee.empresa_id = r.supplierFk + JOIN tCompanyReceiving cr on cr.companyId = r.companyFk + JOIN tCompanyIssuing ci ON ci.companyId = r.supplierFk WHERE IFNULL(r.bookEntried,IFNULL(r.booked, r.issued)) >= vStartingDate AND r.isBooked - GROUP BY Id_Gasto, year, month, emisora_id, receptora_id; + GROUP BY expenseFk, year, month, ci.companyId, cr.companyId; - INSERT INTO tmp.balance_desglose( - receptora_id, - emisora_id, + INSERT INTO tmp.balanceDetail( + receivingId, + issuingId, year, month, - Id_Gasto, - importe) - SELECT gr.empresa_id, - gr.empresa_id, + expenseFk, + amount) + SELECT em.companyFk, + em.companyFk, year, month, - Id_Gasto, - SUM(importe) - FROM vn2008.gastos_resumen gr - JOIN tmp.empresas_receptoras er on gr.empresa_id = er.empresa_id + expenseFk, + SUM(amount) + FROM expenseManual em + JOIN tCompanyReceiving er on em.companyFk = em.companyFk WHERE year >= vStartingYear AND month BETWEEN vStartingMonth AND vEndingMonth - GROUP BY Id_Gasto, year, month, gr.empresa_id; + GROUP BY expenseFk, year, month, em.companyFk; - DELETE FROM tmp.balance_desglose + DELETE FROM tmp.balanceDetail WHERE month < vStartingMonth OR month > vEndingMonth; @@ -114,29 +112,29 @@ BEGIN ADD COLUMN ', vTwoYearsAgo ,' INT(10) NULL , ADD COLUMN ', vOneYearAgo ,' INT(10) NULL , ADD COLUMN ', vYear,' INT(10) NULL , - ADD COLUMN Id_Gasto VARCHAR(10) NULL, - ADD COLUMN Gasto VARCHAR(45) NULL'); + ADD COLUMN expenseFk VARCHAR(10) NULL, + ADD COLUMN expenseName VARCHAR(45) NULL'); -- Añadimos los gastos, para facilitar el formulario UPDATE tmp.balance b - JOIN vn2008.balance_nest_tree bnt on bnt.id = b.id + JOIN balanceNestTree bnt on bnt.id = b.id JOIN (SELECT id, name FROM expense - GROUP BY id) g ON g.id = bnt.Id_Gasto COLLATE utf8_general_ci - SET b.Id_Gasto = g.id COLLATE utf8_general_ci - , b.Gasto = g.id COLLATE utf8_general_ci ; + GROUP BY id) g ON g.id = bnt.expenseFk COLLATE utf8_general_ci + SET b.expenseFk = g.id COLLATE utf8_general_ci + , b.expenseName = g.id COLLATE utf8_general_ci ; -- Rellenamos los valores de primer nivel, los que corresponden a los gastos simples WHILE vYears >= 0 DO SET vQuery = CONCAT( 'UPDATE tmp.balance b JOIN - (SELECT Id_Gasto, SUM(Importe) as Importe - FROM tmp.balance_desglose + (SELECT expenseFk, SUM(amount) as amount + FROM tmp.balanceDetail WHERE year = ? - GROUP BY Id_Gasto - ) sub on sub.Id_Gasto = b.Id_Gasto COLLATE utf8_general_ci - SET ', util.quoteIdentifier(vCurYear - vYears), ' = - Importe'); + GROUP BY expenseFk + ) sub on sub.expenseFk = b.expenseFk COLLATE utf8_general_ci + SET ', util.quoteIdentifier(vCurYear - vYears), ' = - amount'); EXECUTE IMMEDIATE vQuery USING vCurYear - vYears; @@ -153,10 +151,10 @@ BEGIN SUM(IF(year = ?, venta, 0)) y0, c.Gasto FROM bs.ventas_contables c - JOIN tmp.empresas_receptoras er on er.empresa_id = c.empresa_id + JOIN tCompanyReceiving cr on cr.companyId = c.empresa_id WHERE month BETWEEN ? AND ? GROUP BY c.Gasto - ) sub ON sub.Gasto = b.Id_Gasto COLLATE utf8_general_ci + ) sub ON sub.gasto = b.expenseFk COLLATE utf8_general_ci SET b.', vTwoYearsAgo, '= IFNULL(b.', vTwoYearsAgo, ', 0) + sub.y2, b.', vOneYearAgo, '= IFNULL(b.', vOneYearAgo, ', 0) + sub.y1, b.', vYear, '= IFNULL(b.', vYear, ', 0) + sub.y0') @@ -198,7 +196,11 @@ BEGIN b.', vOneYearAgo, ' = oneYearAgo, b.', vTwoYearsAgo, ' = twoYearsAgo'); - SELECT *, CONCAT('',ifnull(Id_Gasto,'')) newgasto + SELECT *, CONCAT('',ifnull(expenseFk,'')) newgasto FROM tmp.balance; + + DROP TEMPORARY TABLE IF EXISTS tCompanyReceiving; + DROP TEMPORARY TABLE IF EXISTS tCompanyIssuing; + END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn2008/procedures/availableTraslate.sql b/db/routines/vn2008/procedures/availableTraslate.sql deleted file mode 100644 index a3d2c8bea..000000000 --- a/db/routines/vn2008/procedures/availableTraslate.sql +++ /dev/null @@ -1,126 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`availableTraslate`( - vWarehouseLanding INT, - vDated DATE, - vWarehouseShipment INT) -proc: BEGIN - DECLARE vDatedFrom DATE; - DECLARE vDatedTo DATETIME; - DECLARE vDatedReserve DATETIME; - DECLARE vDatedInventory DATE; - - IF vDated < util.VN_CURDATE() THEN - LEAVE proc; - END IF; - - CALL vn.item_getStock (vWarehouseLanding, vDated, NULL); - - -- Calcula algunos parámetros necesarios - SET vDatedFrom = TIMESTAMP(vDated, '00:00:00'); - SET vDatedTo = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDated), '23:59:59'); - SELECT FechaInventario INTO vDatedInventory FROM tblContadores; - SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vDatedReserve - FROM hedera.orderConfig; - - -- Calcula el ultimo dia de vida para cada producto - DROP TEMPORARY TABLE IF EXISTS itemRange; - CREATE TEMPORARY TABLE itemRange - (PRIMARY KEY (itemFk)) - ENGINE = MEMORY - SELECT c.itemFk, MAX(t.landed) dated - FROM vn.buy c - JOIN vn.entry e ON c.entryFk = e.id - JOIN vn.travel t ON t.id = e.travelFk - JOIN vn.warehouse w ON w.id = t.warehouseInFk - WHERE t.landed BETWEEN vDatedInventory AND vDatedFrom - AND t.warehouseInFk = vWarehouseLanding - AND NOT e.isExcludedFromAvailable - AND NOT e.isRaid - GROUP BY c.itemFk; - - -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior - CALL vn.buyUltimate(vWarehouseShipment, util.VN_CURDATE()); - - INSERT INTO itemRange - SELECT t.itemFk, tr.landed - FROM tmp.buyUltimate t - JOIN vn.buy b ON b.id = t.buyFk - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel tr ON tr.id = e.travelFk - LEFT JOIN itemRange i ON t.itemFk = i.itemFk - WHERE t.warehouseFk = vWarehouseShipment - AND NOT e.isRaid - ON DUPLICATE KEY UPDATE itemRange.dated = GREATEST(itemRange.dated, tr.landed); - - DROP TEMPORARY TABLE IF EXISTS itemRangeLive; - CREATE TEMPORARY TABLE itemRangeLive - (PRIMARY KEY (itemFk)) - ENGINE = MEMORY - SELECT ir.itemFk, TIMESTAMP(TIMESTAMPADD(DAY, it.life, ir.dated), '23:59:59') dated - FROM itemRange ir - JOIN vn.item i ON i.id = ir.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - HAVING dated >= vDatedFrom OR dated IS NULL; - - -- Calcula el ATP - DROP TEMPORARY TABLE IF EXISTS tmp.itemCalc; - CREATE TEMPORARY TABLE tmp.itemCalc - (INDEX (itemFk,warehouseFk)) - ENGINE = MEMORY - SELECT i.itemFk, vWarehouseLanding warehouseFk, i.shipped dated, i.quantity - FROM vn.itemTicketOut i - JOIN itemRangeLive ir ON ir.itemFK = i.itemFk - WHERE i.shipped >= vDatedFrom - AND (ir.dated IS NULL OR i.shipped <= ir.dated) - AND i.warehouseFk = vWarehouseLanding - UNION ALL - SELECT b.itemFk, vWarehouseLanding, t.landed, b.quantity - FROM vn.buy b - JOIN vn.entry e ON b.entryFk = e.id - JOIN vn.travel t ON t.id = e.travelFk - JOIN itemRangeLive ir ON ir.itemFk = b.itemFk - WHERE NOT e.isExcludedFromAvailable - AND b.quantity <> 0 - AND NOT e.isRaid - AND t.warehouseInFk = vWarehouseLanding - AND t.landed >= vDatedFrom - AND (ir.dated IS NULL OR t.landed <= ir.dated) - UNION ALL - SELECT i.itemFk, vWarehouseLanding, i.shipped, i.quantity - FROM vn.itemEntryOut i - JOIN itemRangeLive ir ON ir.itemFk = i.itemFk - WHERE i.shipped >= vDatedFrom - AND (ir.dated IS NULL OR i.shipped <= ir.dated) - AND i.warehouseOutFk = vWarehouseLanding - UNION ALL - SELECT r.item_id, vWarehouseLanding, r.shipment, -r.amount - FROM hedera.order_row r - JOIN hedera.`order` o ON o.id = r.order_id - JOIN itemRangeLive ir ON ir.itemFk = r.item_id - WHERE r.shipment >= vDatedFrom - AND (ir.dated IS NULL OR r.shipment <= ir.dated) - AND r.warehouse_id = vWarehouseLanding - AND r.created >= vDatedReserve - AND NOT o.confirmed; - - CALL vn.item_getAtp(vDated); - - DROP TEMPORARY TABLE IF EXISTS availableTraslate; - CREATE TEMPORARY TABLE availableTraslate - (PRIMARY KEY (item_id)) - ENGINE = MEMORY - SELECT t.item_id, SUM(stock) available - FROM ( - SELECT ti.itemFk item_id, stock - FROM tmp.itemList ti - JOIN itemRange ir ON ir.itemFk = ti.itemFk - UNION ALL - SELECT itemFk, quantity - FROM tmp.itemAtp - ) t - GROUP BY t.item_id - HAVING available <> 0; - - DROP TEMPORARY TABLE tmp.itemList, itemRange, itemRangeLive; -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/balance_create.sql b/db/routines/vn2008/procedures/balance_create.sql deleted file mode 100644 index 2acd26834..000000000 --- a/db/routines/vn2008/procedures/balance_create.sql +++ /dev/null @@ -1,207 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`balance_create`( - IN vStartingMonth INT, - IN vEndingMonth INT, - IN vCompany INT, - IN vIsConsolidated BOOLEAN, - IN vInterGroupSalesIncluded BOOLEAN) -BEGIN - DECLARE intGAP INT DEFAULT 7; - DECLARE vYears INT DEFAULT 2; - DECLARE vYear TEXT; - DECLARE vOneYearAgo TEXT; - DECLARE vTwoYearsAgo TEXT; - DECLARE vQuery TEXT; - DECLARE vConsolidatedGroup INT; - DECLARE vStartingDate DATE DEFAULT '2020-01-01'; - DECLARE vCurYear INT DEFAULT YEAR(util.VN_CURDATE()); - DECLARE vStartingYear INT DEFAULT vCurYear - 2; - DECLARE vTable TEXT; - - SET vTable = util.quoteIdentifier('balance_nest_tree'); - SET vYear = util.quoteIdentifier(vCurYear); - SET vOneYearAgo = util.quoteIdentifier(vCurYear-1); - SET vTwoYearsAgo = util.quoteIdentifier(vCurYear-2); - - -- Solicitamos la tabla tmp.nest, como base para el balance - DROP TEMPORARY TABLE IF EXISTS tmp.nest; - - EXECUTE IMMEDIATE CONCAT( - 'CREATE TEMPORARY TABLE tmp.nest - SELECT node.id - ,CONCAT( REPEAT(REPEAT(" ",?), COUNT(parent.id) - 1), node.name) AS name - ,node.lft - ,node.rgt - ,COUNT(parent.id) - 1 as depth - ,cast((node.rgt - node.lft - 1) / 2 as DECIMAL) as sons - FROM ', vTable, ' AS node, - ', vTable, ' AS parent - WHERE node.lft BETWEEN parent.lft AND parent.rgt - GROUP BY node.id - ORDER BY node.lft') - USING intGAP; - - DROP TEMPORARY TABLE IF EXISTS tmp.balance; - CREATE TEMPORARY TABLE tmp.balance - SELECT * FROM tmp.nest; - - DROP TEMPORARY TABLE IF EXISTS tmp.empresas_receptoras; - DROP TEMPORARY TABLE IF EXISTS tmp.empresas_emisoras; - - SELECT empresa_grupo INTO vConsolidatedGroup - FROM empresa - WHERE id = vCompany; - - CREATE TEMPORARY TABLE tmp.empresas_receptoras - SELECT id as empresa_id - FROM vn2008.empresa - WHERE id = vCompany - OR empresa_grupo = IF(vIsConsolidated, vConsolidatedGroup, NULL); - - CREATE TEMPORARY TABLE tmp.empresas_emisoras - SELECT Id_Proveedor as empresa_id FROM vn2008.Proveedores p; - - IF vInterGroupSalesIncluded = FALSE THEN - - DELETE ee.* - FROM tmp.empresas_emisoras ee - JOIN vn2008.empresa e on e.id = ee.empresa_id - WHERE e.empresa_grupo = vConsolidatedGroup; - - END IF; - - -- Se calculan las facturas que intervienen, para luego poder servir el desglose desde aqui - DROP TEMPORARY TABLE IF EXISTS tmp.balance_desglose; - CREATE TEMPORARY TABLE tmp.balance_desglose - SELECT er.empresa_id receptora_id, - ee.empresa_id emisora_id, - year(IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha))) `year`, - month(IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha))) `month`, - gastos_id Id_Gasto, - SUM(bi) importe - FROM recibida r - JOIN recibida_iva ri on ri.recibida_id = r.id - JOIN tmp.empresas_receptoras er on er.empresa_id = r.empresa_id - JOIN tmp.empresas_emisoras ee ON ee.empresa_id = r.proveedor_id - WHERE IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha)) >= vStartingDate - AND r.contabilizada - GROUP BY Id_Gasto, year, month, emisora_id, receptora_id; - - INSERT INTO tmp.balance_desglose( - receptora_id, - emisora_id, - year, - month, - Id_Gasto, - importe) - SELECT gr.empresa_id, - gr.empresa_id, - year, - month, - Id_Gasto, - SUM(importe) - FROM gastos_resumen gr - JOIN tmp.empresas_receptoras er on gr.empresa_id = er.empresa_id - WHERE year >= vStartingYear - AND month BETWEEN vStartingMonth AND vEndingMonth - GROUP BY Id_Gasto, year, month, gr.empresa_id; - - DELETE FROM tmp.balance_desglose - WHERE month < vStartingMonth - OR month > vEndingMonth; - - -- Ahora el balance - EXECUTE IMMEDIATE CONCAT( - 'ALTER TABLE tmp.balance - ADD COLUMN ', vTwoYearsAgo ,' INT(10) NULL , - ADD COLUMN ', vOneYearAgo ,' INT(10) NULL , - ADD COLUMN ', vYear,' INT(10) NULL , - ADD COLUMN Id_Gasto VARCHAR(10) NULL, - ADD COLUMN Gasto VARCHAR(45) NULL'); - - -- Añadimos los gastos, para facilitar el formulario - UPDATE tmp.balance b - JOIN vn2008.balance_nest_tree bnt on bnt.id = b.id - JOIN (SELECT id Id_Gasto, name Gasto - FROM vn.expense - GROUP BY id) g ON g.Id_Gasto = bnt.Id_Gasto COLLATE utf8_general_ci - SET b.Id_Gasto = g.Id_Gasto COLLATE utf8_general_ci - , b.Gasto = g.Gasto COLLATE utf8_general_ci ; - - -- Rellenamos los valores de primer nivel, los que corresponden a los gastos simples - WHILE vYears >= 0 DO - SET vQuery = CONCAT( - 'UPDATE tmp.balance b - JOIN - (SELECT Id_Gasto, SUM(Importe) as Importe - FROM tmp.balance_desglose - WHERE year = ? - GROUP BY Id_Gasto - ) sub on sub.Id_Gasto = b.Id_Gasto COLLATE utf8_general_ci - SET ', util.quoteIdentifier(vCurYear - vYears), ' = - Importe'); - - EXECUTE IMMEDIATE vQuery - USING vCurYear - vYears; - - SET vYears = vYears - 1; - END WHILE; - - -- Añadimos las ventas - EXECUTE IMMEDIATE CONCAT( - 'UPDATE tmp.balance b - JOIN ( - SELECT SUM(IF(year = ?, venta, 0)) y2, - SUM(IF(year = ?, venta, 0)) y1, - SUM(IF(year = ?, venta, 0)) y0, - c.Gasto - FROM bs.ventas_contables c - JOIN tmp.empresas_receptoras er on er.empresa_id = c.empresa_id - WHERE month BETWEEN ? AND ? - GROUP BY c.Gasto - ) sub ON sub.Gasto = b.Id_Gasto COLLATE utf8_general_ci - SET b.', vTwoYearsAgo, '= IFNULL(b.', vTwoYearsAgo, ', 0) + sub.y2, - b.', vOneYearAgo, '= IFNULL(b.', vOneYearAgo, ', 0) + sub.y1, - b.', vYear, '= IFNULL(b.', vYear, ', 0) + sub.y0') - USING vCurYear-2, - vCurYear-1, - vCurYear, - vStartingMonth, - vEndingMonth; - - -- Ventas intra grupo - IF NOT vInterGroupSalesIncluded THEN - - SELECT lft, rgt INTO @grupoLft, @grupoRgt - FROM tmp.balance b - WHERE TRIM(b.`name`) = 'Grupo'; - - DELETE - FROM tmp.balance - WHERE lft BETWEEN @grupoLft AND @grupoRgt; - - END IF; - - -- Rellenamos el valor de los padres con la suma de los hijos - DROP TEMPORARY TABLE IF EXISTS tmp.balance_aux; - CREATE TEMPORARY TABLE tmp.balance_aux - SELECT * FROM tmp.balance; - - EXECUTE IMMEDIATE - CONCAT('UPDATE tmp.balance b - JOIN ( - SELECT b1.id, - b1.name, - SUM(b2.', vYear,') thisYear, - SUM(b2.', vOneYearAgo,') oneYearAgo, - SUM(b2.', vTwoYearsAgo,') twoYearsAgo - FROM tmp.nest b1 - JOIN tmp.balance_aux b2 on b2.lft BETWEEN b1.lft and b1.rgt - GROUP BY b1.id)sub ON sub.id = b.id - SET b.', vYear, ' = thisYear, - b.', vOneYearAgo, ' = oneYearAgo, - b.', vTwoYearsAgo, ' = twoYearsAgo'); - - SELECT *, CONCAT('',ifnull(Id_Gasto,'')) newgasto - FROM tmp.balance; -END$$ -DELIMITER ; From 1ccec1e0fb5ab8d5b747431693a5ce49860e7a73 Mon Sep 17 00:00:00 2001 From: ivanm Date: Mon, 4 Mar 2024 08:11:06 +0100 Subject: [PATCH 042/456] refs #6499 procRefactor part 6 --- .../procedures/absoluteInventoryHistory.sql | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 db/routines/vn/procedures/absoluteInventoryHistory.sql diff --git a/db/routines/vn/procedures/absoluteInventoryHistory.sql b/db/routines/vn/procedures/absoluteInventoryHistory.sql new file mode 100644 index 000000000..427b9ba51 --- /dev/null +++ b/db/routines/vn/procedures/absoluteInventoryHistory.sql @@ -0,0 +1,99 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`( + vIdArticle INT, vWarehouse INT, vDate DATETIME) +BEGIN +/** +* Calcula y proporciona un historial de inventario absoluto +* para un artículo específico en un almacén dado +* hasta una fecha determinada. +* +* @param vIdArticle Id de artículo +* @param vWarehouse Almacén +* @param vDate Fecha +*/ + DECLARE vCalculatedInventory INT; + DECLARE vToday DATETIME; + + SET vToday = util.VN_CURDATE(); + + CREATE OR REPLACE TEMPORARY TABLE historicalPast + ENGINE = MEMORY + SELECT * + FROM ( + SELECT tr.landed Fecha, + b.quantity Entrada, + NULL Salida, + (tr.isReceived != FALSE) OK, + s.name Alias, + e.invoiceNumber Referencia, + e.id id, + tr.isDelivered F5 + FROM buy b + JOIN entry e ON e.id = b.entryFk + JOIN travel tr ON tr.id = e.travelFk + JOIN supplier s ON s.id = e.supplierFk + WHERE tr.landed >= '2001-01-01' + AND s.id <> 4 + AND vWarehouse IN (tr.warehouseInFk, 0) + AND b.itemFk = vIdArticle + AND e.isExcludedFromAvailable = 0 + AND e.isRaid = 0 + UNION ALL + SELECT tr.shipped Fecha, + NULL Entrada, + b.quantity Salida, + tr.isDelivered OK, + s.name Alias, + e.invoiceNumber Referencia, + e.id id, + tr.isDelivered F5 + FROM buy b + JOIN entry e ON e.id = b.entryFk + JOIN travel tr ON tr.id = e.travelFk + JOIN supplier s ON s.id = e.supplierFk + WHERE tr.shipped >= '2001-01-01' + AND vWarehouse = tr.warehouseOutFk + AND s.id <> 4 + AND b.itemFk = vIdArticle + AND e.isExcludedFromAvailable = 0 + AND e.isRaid = 0 + UNION ALL + SELECT t.shipped Fecha, + NULL Entrada, + m.quantity Salida, + (m.isPicked <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) OK, + t.nickname Alias, + t.refFk Referencia, + t.id, + t.isPrinted + FROM sale m + JOIN Tickets T USING (Id_Ticket) + JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente + WHERE T.Fecha >= '2001-01-01' + AND M.Id_Article = vIdArticle + AND vWarehouse IN (T.warehouse_id , 0) + ) t1 + ORDER BY Fecha, Entrada DESC, OK DESC; + + SELECT sum(Entrada) - sum(Salida) INTO vCalculatedInventory + FROM historicalPast + WHERE Fecha < vDate; + + SELECT p1.*, NULL v_virtual + FROM( + SELECT vDate Fecha, + vCalculatedInventory Entrada, + NULL Salida, + 1 OK, + 'Inventario calculado' Alias, + '' Referencia, 0 id, + 1 F5 + UNION ALL + SELECT * + FROM historicalPast + WHERE Fecha >= vDate + ) p1; + + DROP TEMPORARY TABLE historicalPast; +END$$ +DELIMITER ; \ No newline at end of file From 09923d2509146c9b9ac42f20b6fac3f0ba90a397 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Mon, 4 Mar 2024 18:35:36 +0100 Subject: [PATCH 043/456] refs #6964 feat:advice for olderItem --- .../methods/item-shelving/hasItemOlder.js | 44 +++++++++++++++++++ modules/item/back/models/item-shelving.js | 1 + 2 files changed, 45 insertions(+) create mode 100644 modules/item/back/methods/item-shelving/hasItemOlder.js diff --git a/modules/item/back/methods/item-shelving/hasItemOlder.js b/modules/item/back/methods/item-shelving/hasItemOlder.js new file mode 100644 index 000000000..48b3b357a --- /dev/null +++ b/modules/item/back/methods/item-shelving/hasItemOlder.js @@ -0,0 +1,44 @@ +module.exports = Self => { + Self.remoteMethod('hasItemOlder', { + description: 'Get boolean if any item of the shelving has older created in another shelving ', + accessType: 'WRITE', + accepts: [{ + arg: 'shelvingFk', + type: 'string', + required: true, + description: 'Shelving code' + }, + { + arg: 'parking', + type: 'string', + required: true, + description: 'Parking code' + }], + returns: { + type: 'boolean', + root: true + }, + http: { + path: `/hasItemOlder`, + verb: 'GET' + } + }); + + Self.hasItemOlder = async(shelvingFk, parking, options) => { + const result = await Self.rawSql(` + SELECT COUNT(ish.id) + FROM vn.itemShelving ish + JOIN ( + SELECT ish.itemFk, created,shelvingFk, p.code + FROM vn.itemShelving ish + JOIN vn.shelving s ON ish.shelvingFk = s.code + JOIN vn.parking p ON p.id = s.parkingFk + WHERE ish.shelvingFk = ? + )sub ON sub.itemFK = ish.itemFk + JOIN vn.shelving s ON s.code = ish.shelvingFk + JOIN vn.parking p ON p.id = s.parkingFk + WHERE ish.shelvingFk <> ? AND sub.created > ish.created AND p.code <> ?`, + [shelvingFk, shelvingFk, parking]); + return result[0]['COUNT(ish.id)'] > 0; + }; +}; diff --git a/modules/item/back/models/item-shelving.js b/modules/item/back/models/item-shelving.js index c031d8271..563dffe66 100644 --- a/modules/item/back/models/item-shelving.js +++ b/modules/item/back/models/item-shelving.js @@ -2,4 +2,5 @@ module.exports = Self => { require('../methods/item-shelving/deleteItemShelvings')(Self); require('../methods/item-shelving/upsertItem')(Self); require('../methods/item-shelving/getInventory')(Self); + require('../methods/item-shelving/hasItemOlder')(Self); }; From 9a0b4ef6744640b00dca8f6bdfb4bac1dd7812c5 Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 5 Mar 2024 08:36:19 +0100 Subject: [PATCH 044/456] feat: refs #6738 change table vn2008 to vn --- .../vn2008/views/Proveedores_cargueras.sql | 5 ++++ db/routines/vn2008/views/Tramos.sql | 6 +++++ db/routines/vn2008/views/dock.sql | 8 ++++++ .../10894-crimsonEucalyptus/01-Tramos.sql | 4 ++- .../10894-crimsonEucalyptus/02-dock.sql | 3 ++- .../03-Proveedores_cargueras.sql | 5 +++- .../10894-crimsonEucalyptus/04-Permisos.sql | 25 +++++++++++++++++++ 7 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 db/routines/vn2008/views/Proveedores_cargueras.sql create mode 100644 db/routines/vn2008/views/Tramos.sql create mode 100644 db/routines/vn2008/views/dock.sql create mode 100644 db/versions/10894-crimsonEucalyptus/04-Permisos.sql diff --git a/db/routines/vn2008/views/Proveedores_cargueras.sql b/db/routines/vn2008/views/Proveedores_cargueras.sql new file mode 100644 index 000000000..a1aa2f7f4 --- /dev/null +++ b/db/routines/vn2008/views/Proveedores_cargueras.sql @@ -0,0 +1,5 @@ +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`Proveedores_cargueras` +AS SELECT `fs`.`id` AS `Id_Proveedor` +FROM `vn`.`freightSupplier` `fs` diff --git a/db/routines/vn2008/views/Tramos.sql b/db/routines/vn2008/views/Tramos.sql new file mode 100644 index 000000000..eda3ff0db --- /dev/null +++ b/db/routines/vn2008/views/Tramos.sql @@ -0,0 +1,6 @@ +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`Tramos` +AS SELECT `s`.`id` AS `id`, + `s`.`isFree` AS `Tramo` +FROM `vn`.`section` `s` \ No newline at end of file diff --git a/db/routines/vn2008/views/dock.sql b/db/routines/vn2008/views/dock.sql new file mode 100644 index 000000000..753e38a6c --- /dev/null +++ b/db/routines/vn2008/views/dock.sql @@ -0,0 +1,8 @@ +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`dock` +AS SELECT `d`.`id` AS `id`, + `d`.`code` AS `code`, + `d`.`xPos` AS `xPos`, + `d`.`yPos` AS `yPos` +FROM `vn`.`dock` `d` diff --git a/db/versions/10894-crimsonEucalyptus/01-Tramos.sql b/db/versions/10894-crimsonEucalyptus/01-Tramos.sql index f2ac17ad1..ad8e2f9c4 100644 --- a/db/versions/10894-crimsonEucalyptus/01-Tramos.sql +++ b/db/versions/10894-crimsonEucalyptus/01-Tramos.sql @@ -1,3 +1,5 @@ -- Place your SQL code here -ALTER TABLE IF EXISTS `vn2008`.`Tramos` RENAME `vn`.``; +ALTER TABLE IF EXISTS `vn2008`.`Tramos` RENAME `vn`.`section`; +ALTER TABLE IF EXISTS `vn`.`section` +CHANGE COLUMN IF EXISTS `Tramo` `section` time NOT NULL; \ No newline at end of file diff --git a/db/versions/10894-crimsonEucalyptus/02-dock.sql b/db/versions/10894-crimsonEucalyptus/02-dock.sql index 1816ce18b..23f8f0705 100644 --- a/db/versions/10894-crimsonEucalyptus/02-dock.sql +++ b/db/versions/10894-crimsonEucalyptus/02-dock.sql @@ -1,2 +1,3 @@ -- Place your SQL code here -ALTER TABLE IF EXISTS `vn2008`.`dock` RENAME `vn`.``; \ No newline at end of file +ALTER TABLE IF EXISTS `vn2008`.`dock` RENAME `vn`.`dock`; + diff --git a/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql b/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql index 45bac972c..0de477f88 100644 --- a/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql +++ b/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql @@ -1,2 +1,5 @@ -- Place your SQL code here -ALTER TABLE IF EXISTS `vn2008`.`Proveedores_cargueras` RENAME `vn`.``; +ALTER TABLE IF EXISTS `vn2008`.`Proveedores_cargueras` RENAME `vn`.`freightSupplier`; + +ALTER TABLE IF EXISTS `vn`.`freightSupplier` +CHANGE COLUMN IF EXISTS `Id_Proveedor` `supplierFk` int(10) unsigned NOT NULL; \ No newline at end of file diff --git a/db/versions/10894-crimsonEucalyptus/04-Permisos.sql b/db/versions/10894-crimsonEucalyptus/04-Permisos.sql new file mode 100644 index 000000000..441a6ff8e --- /dev/null +++ b/db/versions/10894-crimsonEucalyptus/04-Permisos.sql @@ -0,0 +1,25 @@ +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`Tramos` AS +SELECT 1; + +GRANT SELECT ON TABLE vn2008.Tramos TO `employee`; +GRANT SELECT ON TABLE vn.section TO `employee`; + +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`dock` AS +SELECT 1; + +GRANT SELECT,UPDATE ON TABLE vn2008.dock TO `employee`; +GRANT SELECT ON TABLE vn2008.dock TO `grafana`; +GRANT SELECT,UPDATE ON TABLE vn.dock TO `employee`; +GRANT SELECT ON TABLE vn.dock TO `grafana`; + +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`Proveedores_cargueras` AS +SELECT 1; + +GRANT SELECT ON TABLE vn2008.Proveedores_cargueras TO `buyer`; +GRANT SELECT ON TABLE vn.freightSupplier TO `buyer`; \ No newline at end of file From dc343a7e3bd4aaaadabc24a0863b95dacd587c49 Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 5 Mar 2024 09:33:48 +0100 Subject: [PATCH 045/456] feat: refs #6738 delete vn2008.dock --- db/routines/vn2008/views/dock.sql | 8 -------- db/versions/10894-crimsonEucalyptus/02-dock.sql | 4 ++-- 2 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 db/routines/vn2008/views/dock.sql diff --git a/db/routines/vn2008/views/dock.sql b/db/routines/vn2008/views/dock.sql deleted file mode 100644 index 753e38a6c..000000000 --- a/db/routines/vn2008/views/dock.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE OR REPLACE DEFINER=`root`@`localhost` - SQL SECURITY DEFINER - VIEW `vn2008`.`dock` -AS SELECT `d`.`id` AS `id`, - `d`.`code` AS `code`, - `d`.`xPos` AS `xPos`, - `d`.`yPos` AS `yPos` -FROM `vn`.`dock` `d` diff --git a/db/versions/10894-crimsonEucalyptus/02-dock.sql b/db/versions/10894-crimsonEucalyptus/02-dock.sql index 23f8f0705..acce9f37c 100644 --- a/db/versions/10894-crimsonEucalyptus/02-dock.sql +++ b/db/versions/10894-crimsonEucalyptus/02-dock.sql @@ -1,3 +1,3 @@ -- Place your SQL code here -ALTER TABLE IF EXISTS `vn2008`.`dock` RENAME `vn`.`dock`; - +ALTER TABLE IF EXISTS `vn2008`.`dock` RENAME `vn2008`.`dock__`; +ALTER TABLE IF EXISTS vn2008.dock__ COMMENT='refs #6371 deprecated 2024-03-05'; \ No newline at end of file From d668ae9904c3680a86bb799626e44dec5ef506af Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 5 Mar 2024 09:34:30 +0100 Subject: [PATCH 046/456] refs #6738 --- db/versions/10894-crimsonEucalyptus/04-Permisos.sql | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/db/versions/10894-crimsonEucalyptus/04-Permisos.sql b/db/versions/10894-crimsonEucalyptus/04-Permisos.sql index 441a6ff8e..a7defb75f 100644 --- a/db/versions/10894-crimsonEucalyptus/04-Permisos.sql +++ b/db/versions/10894-crimsonEucalyptus/04-Permisos.sql @@ -6,16 +6,6 @@ SELECT 1; GRANT SELECT ON TABLE vn2008.Tramos TO `employee`; GRANT SELECT ON TABLE vn.section TO `employee`; -CREATE OR REPLACE DEFINER=`root`@`localhost` - SQL SECURITY DEFINER - VIEW `vn2008`.`dock` AS -SELECT 1; - -GRANT SELECT,UPDATE ON TABLE vn2008.dock TO `employee`; -GRANT SELECT ON TABLE vn2008.dock TO `grafana`; -GRANT SELECT,UPDATE ON TABLE vn.dock TO `employee`; -GRANT SELECT ON TABLE vn.dock TO `grafana`; - CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn2008`.`Proveedores_cargueras` AS From 9aad1dd6e843cfb20f3d7494937e1cebe4aae41a Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 5 Mar 2024 12:41:54 +0100 Subject: [PATCH 047/456] feat: refs #6500 procRefactor8 --- db/routines/vn/events/raidUpdate.sql | 8 ++++ db/routines/vn/procedures/creditRecovery.sql | 49 ++++++++++++++++++++ db/routines/vn/procedures/raidUpdate.sql | 30 ++++++++++++ db/routines/vn/procedures/rateView.sql | 42 +++++++++++++++++ 4 files changed, 129 insertions(+) create mode 100644 db/routines/vn/events/raidUpdate.sql create mode 100644 db/routines/vn/procedures/creditRecovery.sql create mode 100644 db/routines/vn/procedures/raidUpdate.sql create mode 100644 db/routines/vn/procedures/rateView.sql diff --git a/db/routines/vn/events/raidUpdate.sql b/db/routines/vn/events/raidUpdate.sql new file mode 100644 index 000000000..619dadb48 --- /dev/null +++ b/db/routines/vn/events/raidUpdate.sql @@ -0,0 +1,8 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`raidUpdate` + ON SCHEDULE EVERY 1 DAY + STARTS '2017-12-29 00:05:00.000' + ON COMPLETION PRESERVE + ENABLE +DO CALL raidUpdate$$ +DELIMITER ; diff --git a/db/routines/vn/procedures/creditRecovery.sql b/db/routines/vn/procedures/creditRecovery.sql new file mode 100644 index 000000000..5a32a87f8 --- /dev/null +++ b/db/routines/vn/procedures/creditRecovery.sql @@ -0,0 +1,49 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`creditRecovery`() +BEGIN + DECLARE EXIT HANDLER FOR SQLSTATE '45000' + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + UPDATE `client` c + JOIN payMethod pm ON pm.id = c.payMethodFk + SET c.credit = 0 + WHERE pm.`code` = 'card'; + + DROP TEMPORARY TABLE IF EXISTS tCreditClients; + CREATE TEMPORARY TABLE tCreditClients + SELECT clientFk, IF (credit > recovery ,credit - recovery,0) newCredit + FROM ( + SELECT r.clientFk, + r.amount recovery, + timestampadd(DAY, r.period, sub2.created) deadLine, + sub2.amount credit + FROM recovery r + JOIN ( + SELECT clientFk, amount , created + FROM ( + SELECT * FROM clientCredit + ORDER BY created DESC + LIMIT 10000000000000000000 + ) sub + GROUP BY clientFk + ) sub2 ON sub2.clientFk = r.clientFk + WHERE r.finished IS NULL OR r.finished >= util.VN_CURDATE() + GROUP BY r.clientFk + HAVING deadLine <= util.VN_CURDATE() + ) sub3 + WHERE credit > 0; + + UPDATE client c + JOIN tCreditClients cc ON cc.clientFk = c.clientFk + SET Clientes.Credito = newCredit; + + DROP TEMPORARY TABLE tCreditClients; + COMMIT; + +END$$ +DELIMITER ; diff --git a/db/routines/vn/procedures/raidUpdate.sql b/db/routines/vn/procedures/raidUpdate.sql new file mode 100644 index 000000000..214974350 --- /dev/null +++ b/db/routines/vn/procedures/raidUpdate.sql @@ -0,0 +1,30 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`raidUpdate`() +BEGIN + + UPDATE entry e + JOIN entryVirtual ev ON ev.entryFk = e.id + JOIN travel t ON t.id = e.travelFk + JOIN ( + SELECT * + FROM ( + SELECT id, landed, tt.warehouseInFk, tt.warehouseOutFk + FROM travel t + JOIN ( + SELECT t.warehouseInFk, t.warehouseOutFk + FROM entryVirtual ev + JOIN entry e ON e.id = ev.entryFk + JOIN travel t ON t.id = e.travelFk + GROUP BY t.warehouseInFk, t.warehouseOutFk + ) tt ON t.warehouseInFk = tt.warehouseInFk AND t.warehouseOutFk = tt.warehouseOutFk + + WHERE shipped > util.VN_CURDATE() AND isDelivered = FALSE + ORDER BY t.landed + LIMIT 10000000000000000000 + ) t + GROUP BY warehouseInFk, warehouseOutFk + ) tt ON t.warehouseInFk = tt.warehouseInFk AND t.warehouseOutFk = tt.warehouseOutFk + SET e.travelFk = t.id; + +END$$ +DELIMITER ; diff --git a/db/routines/vn/procedures/rateView.sql b/db/routines/vn/procedures/rateView.sql new file mode 100644 index 000000000..6da1ea017 --- /dev/null +++ b/db/routines/vn/procedures/rateView.sql @@ -0,0 +1,42 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`rateView`() +BEGIN + + DECLARE v10Years DATE DEFAULT util.VN_CURDATE() - INTERVAL 10 YEAR; + + SELECT + t.year, + t.month, + pagos.dollars, + pagos.changePractical, + CAST(SUM(iit.foreignValue ) / SUM(iit.taxableBase) AS DECIMAL(5,4)) cambioTeorico, + pagos.changeOfficial + FROM invoiceIn ii + JOIN time t ON t.dated = ii.issued + JOIN invoiceInTax iit ON ii.id = iit.invoiceInFk + JOIN + ( + SELECT + t.year, + t.month, + CAST(SUM(divisa) AS DECIMAL(10,2)) dollars, + CAST(SUM(divisa) / SUM(amount) AS DECIMAL(5,4)) changePractical, + CAST(rr.value * 0.998 AS DECIMAL(5,4)) changeOfficial + FROM payment p + JOIN time t ON t.dated = p.received + JOIN referenceRate rr ON rr.dated = p.received + JOIN currency c ON c.id = rr.currencyFk + WHERE divisa + AND p.received >= v10Years + AND c.code = 'USD' + GROUP BY t.year, t.month + ) pagos ON t.year = pagos.year AND t.month = pagos.MONTH + JOIN currency c ON c.id = ii.currencyFk + WHERE c.code = 'USD' + AND ii.issued >= v10Years + AND iit.foreignValue + AND iit.taxableBase + GROUP BY t.year, t.month; + +END$$ +DELIMITER ; From e83b0622cfb893c8294a042ee7dc37e0211a4b96 Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 5 Mar 2024 13:21:53 +0100 Subject: [PATCH 048/456] refs 6500 rateView --- db/routines/vn/procedures/rateView.sql | 34 +++++++++++--------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/db/routines/vn/procedures/rateView.sql b/db/routines/vn/procedures/rateView.sql index 6da1ea017..fb03c192a 100644 --- a/db/routines/vn/procedures/rateView.sql +++ b/db/routines/vn/procedures/rateView.sql @@ -2,9 +2,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`rateView`() BEGIN - DECLARE v10Years DATE DEFAULT util.VN_CURDATE() - INTERVAL 10 YEAR; - - SELECT + SELECT t.year, t.month, pagos.dollars, @@ -15,28 +13,24 @@ BEGIN JOIN time t ON t.dated = ii.issued JOIN invoiceInTax iit ON ii.id = iit.invoiceInFk JOIN - ( - SELECT - t.year, - t.month, - CAST(SUM(divisa) AS DECIMAL(10,2)) dollars, - CAST(SUM(divisa) / SUM(amount) AS DECIMAL(5,4)) changePractical, - CAST(rr.value * 0.998 AS DECIMAL(5,4)) changeOfficial - FROM payment p - JOIN time t ON t.dated = p.received - JOIN referenceRate rr ON rr.dated = p.received - JOIN currency c ON c.id = rr.currencyFk - WHERE divisa - AND p.received >= v10Years - AND c.code = 'USD' - GROUP BY t.year, t.month + ( SELECT + t.year, + t.month, + CAST(SUM(divisa) AS DECIMAL(10,2)) dollars, + CAST(SUM(divisa) / SUM(amount) AS DECIMAL(5,4)) changePractical, + CAST(rr.value * 0.998 AS DECIMAL(5,4)) changeOfficial + FROM payment p + JOIN time t ON t.dated = p.received + JOIN referenceRate rr ON rr.dated = p.received + JOIN currency c ON c.id = rr.currencyFk + WHERE divisa + AND c.code = 'USD' + GROUP BY t.year, t.month ) pagos ON t.year = pagos.year AND t.month = pagos.MONTH JOIN currency c ON c.id = ii.currencyFk WHERE c.code = 'USD' - AND ii.issued >= v10Years AND iit.foreignValue AND iit.taxableBase GROUP BY t.year, t.month; - END$$ DELIMITER ; From 68846d30184961cd92704a65c95617b58876ee40 Mon Sep 17 00:00:00 2001 From: ivanm Date: Tue, 5 Mar 2024 13:43:03 +0100 Subject: [PATCH 049/456] refs #6499 Refactor historico_multiple --- .../procedures/absoluteInventoryHistory.sql | 109 ++++++------ .../procedures/multipleInventoryHistory.sql | 161 ++++++++++++++++++ 2 files changed, 216 insertions(+), 54 deletions(-) create mode 100644 db/routines/vn/procedures/multipleInventoryHistory.sql diff --git a/db/routines/vn/procedures/absoluteInventoryHistory.sql b/db/routines/vn/procedures/absoluteInventoryHistory.sql index 427b9ba51..f1a317598 100644 --- a/db/routines/vn/procedures/absoluteInventoryHistory.sql +++ b/db/routines/vn/procedures/absoluteInventoryHistory.sql @@ -1,13 +1,13 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`( - vIdArticle INT, vWarehouse INT, vDate DATETIME) + vItemFk INT, vWarehouse INT, vDate DATETIME) BEGIN /** * Calcula y proporciona un historial de inventario absoluto * para un artículo específico en un almacén dado * hasta una fecha determinada. * -* @param vIdArticle Id de artículo +* @param vItemFk Id de artículo * @param vWarehouse Almacén * @param vDate Fecha */ @@ -16,84 +16,85 @@ BEGIN SET vToday = util.VN_CURDATE(); - CREATE OR REPLACE TEMPORARY TABLE historicalPast - ENGINE = MEMORY + CREATE OR REPLACE TEMPORARY TABLE tHistoricalPast + ENGINE = MEMORY SELECT * FROM ( - SELECT tr.landed Fecha, - b.quantity Entrada, - NULL Salida, - (tr.isReceived != FALSE) OK, - s.name Alias, - e.invoiceNumber Referencia, + SELECT tr.landed `date`, + b.quantity input, + NULL `output`, + (tr.isReceived != FALSE) ok, + s.name alias, + e.invoiceNumber reference, e.id id, - tr.isDelivered F5 + tr.isDelivered f5 FROM buy b - JOIN entry e ON e.id = b.entryFk + JOIN `entry` e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk - JOIN supplier s ON s.id = e.supplierFk + JOIN supplier s ON s.id = e.supplierFk WHERE tr.landed >= '2001-01-01' AND s.id <> 4 AND vWarehouse IN (tr.warehouseInFk, 0) - AND b.itemFk = vIdArticle - AND e.isExcludedFromAvailable = 0 - AND e.isRaid = 0 + AND b.itemFk = vItemFk + AND NOT e.isExcludedFromAvailable + AND NOT e.isRaid UNION ALL - SELECT tr.shipped Fecha, - NULL Entrada, - b.quantity Salida, - tr.isDelivered OK, - s.name Alias, - e.invoiceNumber Referencia, + SELECT tr.shipped `date`, + NULL input, + b.quantity `output`, + tr.isDelivered ok, + s.name alias, + e.invoiceNumber reference, e.id id, - tr.isDelivered F5 + tr.isDelivered f5 FROM buy b - JOIN entry e ON e.id = b.entryFk + JOIN `entry` e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk - JOIN supplier s ON s.id = e.supplierFk + JOIN supplier s ON s.id = e.supplierFk WHERE tr.shipped >= '2001-01-01' AND vWarehouse = tr.warehouseOutFk AND s.id <> 4 - AND b.itemFk = vIdArticle - AND e.isExcludedFromAvailable = 0 - AND e.isRaid = 0 + AND b.itemFk = vItemFk + AND NOT e.isExcludedFromAvailable + AND NOT e.isRaid UNION ALL - SELECT t.shipped Fecha, - NULL Entrada, - m.quantity Salida, - (m.isPicked <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) OK, - t.nickname Alias, - t.refFk Referencia, + SELECT t.shipped `date`, + NULL input, + m.quantity `output`, + (m.isPicked <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) ok, + t.nickname alias, + t.refFk reference, t.id, t.isPrinted FROM sale m - JOIN Tickets T USING (Id_Ticket) - JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente - WHERE T.Fecha >= '2001-01-01' - AND M.Id_Article = vIdArticle - AND vWarehouse IN (T.warehouse_id , 0) + JOIN ticket t ON t.id = m.ticketFk + JOIN client c ON c.id = t.clientFk + WHERE t.shipped >= '2001-01-01' + AND m.itemFk = vItemFk + AND vWarehouse IN (t.warehouseFk , 0) ) t1 - ORDER BY Fecha, Entrada DESC, OK DESC; + ORDER BY `date`, input DESC, ok DESC; - SELECT sum(Entrada) - sum(Salida) INTO vCalculatedInventory - FROM historicalPast - WHERE Fecha < vDate; + SELECT sum(input) - sum(`output`) INTO vCalculatedInventory + FROM tHistoricalPast + WHERE `date` < vDate; SELECT p1.*, NULL v_virtual FROM( - SELECT vDate Fecha, - vCalculatedInventory Entrada, - NULL Salida, - 1 OK, - 'Inventario calculado' Alias, - '' Referencia, 0 id, - 1 F5 + SELECT vDate `date`, + vCalculatedInventory input, + NULL `output`, + 1 ok, + 'Inventario calculado' alias, + '' reference, + 0 id, + 1 f5 UNION ALL - SELECT * - FROM historicalPast - WHERE Fecha >= vDate + SELECT * + FROM tHistoricalPast + WHERE `date` >= vDate ) p1; - DROP TEMPORARY TABLE historicalPast; + DROP TEMPORARY TABLE tHistoricalPast; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/multipleInventoryHistory.sql b/db/routines/vn/procedures/multipleInventoryHistory.sql new file mode 100644 index 000000000..bd399e889 --- /dev/null +++ b/db/routines/vn/procedures/multipleInventoryHistory.sql @@ -0,0 +1,161 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`multipleInventoryHistory`( + vItemFk INT) +BEGIN +/** +* Calcula y proporciona un historial de inventario detallado +* para un artículo dividiendo la información +* por almacén. +* +* @param vItemFk Artículo +*/ + DECLARE vDateInventory DATETIME; + + SELECT inventoried INTO vDateInventory FROM config; + + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory1; + + CREATE TEMPORARY TABLE tMultipleHistory1 + SELECT DATE(`date`) `date`, + input, + `output`, + ok, + reference, + history.id, + warehouse, + `name` warehouseName + FROM ( + SELECT tr.landed `date`, + c.quantity input, + NULL `output`, + IF(warehouseInFk = 44, 1, warehouseInFk) warehouse, + (tr.isReceived <> FALSE) ok, + e.invoiceNumber reference, + e.id id + FROM buy c + JOIN `entry` e ON e.id = c.entryFk + JOIN travel tr ON tr.id = e.travelFk + WHERE tr.landed >= vDateInventory + AND c.itemFk = vItemFk + AND NOT e.isRaid + AND c.quantity <> 0 + UNION ALL + SELECT tr.shipped `date`, + NULL input, + c.quantity `output`, + warehouseOutFk warehouse, + tr.isDelivered ok, + e.invoiceNumber reference, + e.id id + FROM buy c + JOIN `entry` e ON e.id = c.entryFk + JOIN travel tr ON tr.id = e.travelFk + WHERE tr.shipped >= vDateInventory + AND c.itemFk = vItemFk + AND NOT e.isRaid + AND c.quantity <> 0 + UNION ALL + SELECT t.shipped `date`, + NULL input, + m.quantity `output`, + warehouseInFk warehouse, + (m.isPicked <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) ok, + t.refFk reference, + t.id id + FROM sale m + JOIN ticket t ON t.id = m.ticketFk + WHERE t.shipped >= vDateInventory + AND m.itemFk = vItemFk + ) history + JOIN warehouse ON warehouse.id = history.warehouse + ORDER BY `date`, input DESC, ok DESC; + + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory2; + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory3; + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory4; + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory5; + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory6; + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory7; + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory8; + CREATE TEMPORARY TABLE tMultipleHistory2 SELECT * FROM tMultipleHistory1 WHERE warehouse = 19; + CREATE TEMPORARY TABLE tMultipleHistory3 SELECT * FROM tMultipleHistory1 WHERE warehouse = 7; + CREATE TEMPORARY TABLE tMultipleHistory4 SELECT * FROM tMultipleHistory1 WHERE warehouse = 60; + CREATE TEMPORARY TABLE tMultipleHistory5 SELECT * FROM tMultipleHistory1 WHERE warehouse = 5; + CREATE TEMPORARY TABLE tMultipleHistory6 SELECT * FROM tMultipleHistory1 WHERE warehouse = 17; + CREATE TEMPORARY TABLE tMultipleHistory7 SELECT * FROM tMultipleHistory1 WHERE warehouse = 37; + CREATE TEMPORARY TABLE tMultipleHistory8 SELECT * FROM tMultipleHistory1 WHERE warehouse = 55; + + SELECT * + FROM ( + SELECT `date`, input BOGinput, `output` BOGoutput, ok BOGok, reference BOGreference, id BOGid, + NULL VNHinput, NULL VNHoutput, NULL VNHok, NULL VNHreference, NULL VNHid, + NULL ALGinput, NULL ALGoutput, NULL ALGok, NULL ALGreference, NULL ALGid, + NULL MADinput, NULL MADoutput, NULL MADok, NULL MADreference, NULL MADid, + NULL MCFinput, NULL MCFoutput, NULL MCFok, NULL MCFreference, NULL MCFid, + NULL VILinput, NULL VILoutput, NULL VILok, NULL VILreference, NULL VILid, + NULL BARinput, NULL BARoutput, NULL BARok, NULL BARreference, NULL BARid + FROM tMultipleHistory2 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory3 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory4 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory5 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory6 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory7 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id + FROM tMultipleHistory8 + ) sub + ORDER BY `date`, BOGinput IS NULL, VNHinput IS NULL, ALGinput IS NULL, MADinput IS NULL, MCFinput IS NULL, VILinput IS NULL, BARinput IS NULL; +END$$ +DELIMITER ; \ No newline at end of file From 5f16a9827c9fecc542a3329b98846541b14dae25 Mon Sep 17 00:00:00 2001 From: robert Date: Tue, 5 Mar 2024 14:17:58 +0100 Subject: [PATCH 050/456] feat: refs #6738 move file version --- db/routines/vn2008/views/Proveedores_cargueras.sql | 2 +- db/routines/vn2008/views/Tramos.sql | 2 +- .../00-firstScript.sql | 0 .../01-Tramos.sql | 0 .../{10894-crimsonEucalyptus => 10930-wheatDendro}/02-dock.sql | 0 .../03-Proveedores_cargueras.sql | 0 .../04-Permisos.sql | 0 7 files changed, 2 insertions(+), 2 deletions(-) rename db/versions/{10894-crimsonEucalyptus => 10930-wheatDendro}/00-firstScript.sql (100%) rename db/versions/{10894-crimsonEucalyptus => 10930-wheatDendro}/01-Tramos.sql (100%) rename db/versions/{10894-crimsonEucalyptus => 10930-wheatDendro}/02-dock.sql (100%) rename db/versions/{10894-crimsonEucalyptus => 10930-wheatDendro}/03-Proveedores_cargueras.sql (100%) rename db/versions/{10894-crimsonEucalyptus => 10930-wheatDendro}/04-Permisos.sql (100%) diff --git a/db/routines/vn2008/views/Proveedores_cargueras.sql b/db/routines/vn2008/views/Proveedores_cargueras.sql index a1aa2f7f4..51a02556a 100644 --- a/db/routines/vn2008/views/Proveedores_cargueras.sql +++ b/db/routines/vn2008/views/Proveedores_cargueras.sql @@ -1,5 +1,5 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn2008`.`Proveedores_cargueras` -AS SELECT `fs`.`id` AS `Id_Proveedor` +AS SELECT `fs`.`supplierFk` AS `Id_Proveedor` FROM `vn`.`freightSupplier` `fs` diff --git a/db/routines/vn2008/views/Tramos.sql b/db/routines/vn2008/views/Tramos.sql index eda3ff0db..47a2cb653 100644 --- a/db/routines/vn2008/views/Tramos.sql +++ b/db/routines/vn2008/views/Tramos.sql @@ -2,5 +2,5 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn2008`.`Tramos` AS SELECT `s`.`id` AS `id`, - `s`.`isFree` AS `Tramo` + `s`.`section` AS `Tramo` FROM `vn`.`section` `s` \ No newline at end of file diff --git a/db/versions/10894-crimsonEucalyptus/00-firstScript.sql b/db/versions/10930-wheatDendro/00-firstScript.sql similarity index 100% rename from db/versions/10894-crimsonEucalyptus/00-firstScript.sql rename to db/versions/10930-wheatDendro/00-firstScript.sql diff --git a/db/versions/10894-crimsonEucalyptus/01-Tramos.sql b/db/versions/10930-wheatDendro/01-Tramos.sql similarity index 100% rename from db/versions/10894-crimsonEucalyptus/01-Tramos.sql rename to db/versions/10930-wheatDendro/01-Tramos.sql diff --git a/db/versions/10894-crimsonEucalyptus/02-dock.sql b/db/versions/10930-wheatDendro/02-dock.sql similarity index 100% rename from db/versions/10894-crimsonEucalyptus/02-dock.sql rename to db/versions/10930-wheatDendro/02-dock.sql diff --git a/db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql b/db/versions/10930-wheatDendro/03-Proveedores_cargueras.sql similarity index 100% rename from db/versions/10894-crimsonEucalyptus/03-Proveedores_cargueras.sql rename to db/versions/10930-wheatDendro/03-Proveedores_cargueras.sql diff --git a/db/versions/10894-crimsonEucalyptus/04-Permisos.sql b/db/versions/10930-wheatDendro/04-Permisos.sql similarity index 100% rename from db/versions/10894-crimsonEucalyptus/04-Permisos.sql rename to db/versions/10930-wheatDendro/04-Permisos.sql From f215ce5f05e4812a477fd1d6c3bf1d602c447275 Mon Sep 17 00:00:00 2001 From: ivanm Date: Tue, 5 Mar 2024 14:33:16 +0100 Subject: [PATCH 051/456] refs #6498 Delete procedures vn2008 and grant vn procs --- .../vn2008/procedures/historico_absoluto.sql | 91 -------- .../vn2008/procedures/historico_multiple.sql | 206 ------------------ .../10932-azureEucalyptus/00-firstScript.sql | 2 + 3 files changed, 2 insertions(+), 297 deletions(-) delete mode 100644 db/routines/vn2008/procedures/historico_absoluto.sql delete mode 100644 db/routines/vn2008/procedures/historico_multiple.sql create mode 100644 db/versions/10932-azureEucalyptus/00-firstScript.sql diff --git a/db/routines/vn2008/procedures/historico_absoluto.sql b/db/routines/vn2008/procedures/historico_absoluto.sql deleted file mode 100644 index 1a7e1dbfa..000000000 --- a/db/routines/vn2008/procedures/historico_absoluto.sql +++ /dev/null @@ -1,91 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`historico_absoluto`(IN idART INT, IN wh INT, IN datfecha DATETIME) -BEGIN - - DECLARE inv_calculado INT; - DECLARE inv INT; - DECLARE today DATETIME; - DECLARE fecha_inv DATETIME; - - SET today = util.VN_CURDATE(); - - CREATE OR REPLACE TEMPORARY TABLE historico_pasado - SELECT * - FROM ( - SELECT TR.landing Fecha, - C.Cantidad Entrada, - NULL Salida, - (TR.received != FALSE) OK, - P.Proveedor Alias, - E.Referencia Referencia, - E.Id_Entrada id, - TR.delivered F5 - FROM Compres C -- mirar perque no entra en received - INNER JOIN Entradas E USING (Id_Entrada) - INNER JOIN travel TR ON TR.id = E.travel_id - INNER JOIN Proveedores P USING (Id_Proveedor) - WHERE TR.landing >= '2001-01-01' - AND Id_proveedor <> 4 - AND wh IN (TR.warehouse_id , 0) - AND C.Id_Article = idART - AND E.Inventario = 0 - AND E.Redada = 0 - UNION ALL - SELECT TR.shipment Fecha, - NULL Entrada, - C.Cantidad Salida, - TR.delivered OK, - P.Proveedor Alias, - E.Referencia Referencia, - E.Id_Entrada id, - TR.delivered F5 - FROM Compres C - INNER JOIN Entradas E USING (Id_Entrada) - INNER JOIN travel TR ON TR.id = E.travel_id - INNER JOIN Proveedores P USING (Id_Proveedor) - WHERE TR.shipment >= '2001-01-01' - AND wh = TR.warehouse_id_out - AND Id_Proveedor <> 4 - AND C.Id_Article = idART - AND E.Inventario = 0 - AND E.Redada = 0 - UNION ALL - SELECT T.Fecha Fecha, - NULL Entrada, - M.Cantidad Salida, - (M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) OK, - T.Alias Alias, - T.Factura Referencia, - T.Id_Ticket, - T.PedidoImpreso - FROM Movimientos M - INNER JOIN Tickets T USING (Id_Ticket) - JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente - WHERE T.Fecha >= '2001-01-01' - AND M.Id_Article = idART - AND wh IN (T.warehouse_id , 0) - ) t1 - ORDER BY Fecha, Entrada DESC, OK DESC; - - SELECT sum(Entrada) - sum(Salida) INTO inv_calculado - FROM historico_pasado - WHERE Fecha < datfecha; - - SELECT p1.*, NULL v_virtual - FROM( - SELECT datfecha Fecha, - inv_calculado Entrada, - NULL Salida, - 1 OK, - 'Inventario calculado' Alias, - '' Referencia, 0 id, - 1 F5 - UNION ALL - SELECT * - FROM historico_pasado - WHERE Fecha >= datfecha - ) p1; - - DROP TEMPORARY TABLE historico_pasado; -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/historico_multiple.sql b/db/routines/vn2008/procedures/historico_multiple.sql deleted file mode 100644 index ae4045a34..000000000 --- a/db/routines/vn2008/procedures/historico_multiple.sql +++ /dev/null @@ -1,206 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`historico_multiple`(IN vItemFk INT) -BEGIN - - DECLARE vDateInventory DATETIME; - - SELECT Fechainventario INTO vDateInventory FROM tblContadores; - - SET @a = 0; - - DROP TEMPORARY TABLE IF EXISTS hm1; - - CREATE TEMPORARY TABLE hm1 - SELECT DATE(Fecha) as Fecha, - Entrada, - Salida, - OK, - Referencia, - Historia.id, - - wh, - - `name` as wh_name - - FROM - - ( SELECT TR.landing as Fecha, - C.Cantidad as Entrada, - NULL as Salida, - - IF(warehouse_id = 44, 1, warehouse_id) as wh, - (TR.received != FALSE) as OK, - E.Referencia as Referencia, - E.Id_Entrada as id - - - - FROM Compres C - INNER JOIN Entradas E USING (Id_Entrada) - INNER JOIN travel TR ON TR.id = E.travel_id - WHERE TR.landing >= vDateInventory - AND C.Id_Article = vItemFk - AND E.Redada = 0 - - AND C.Cantidad <> 0 - - UNION ALL - - SELECT TR.shipment as Fecha, - NULL as Entrada, - C.Cantidad as Salida, - warehouse_id_out as wh, - TR.delivered as OK, - E.Referencia as Referencia, - E.Id_Entrada as id - - FROM Compres C - INNER JOIN Entradas E USING (Id_Entrada) - INNER JOIN travel TR ON TR.id = E.travel_id - WHERE TR.shipment >= vDateInventory - AND C.Id_Article = vItemFk - - AND E.Redada = 0 - - AND C.Cantidad <> 0 - - UNION ALL - - SELECT T.Fecha as Fecha, - NULL as Entrada, - M.Cantidad as Salida, - warehouse_id as wh, - (M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) as OK, - T.Factura as Referencia, - T.Id_Ticket as id - - FROM Movimientos M - INNER JOIN Tickets T USING (Id_Ticket) - WHERE T.Fecha >= vDateInventory - AND M.Id_Article = vItemFk - - ) AS Historia - - INNER JOIN warehouse ON warehouse.id = Historia.wh - ORDER BY Fecha, Entrada DESC, OK DESC; - - - DROP TEMPORARY TABLE IF EXISTS hm2; - DROP TEMPORARY TABLE IF EXISTS hm3; - DROP TEMPORARY TABLE IF EXISTS hm4; - DROP TEMPORARY TABLE IF EXISTS hm5; - DROP TEMPORARY TABLE IF EXISTS hm6; - DROP TEMPORARY TABLE IF EXISTS hm7; - DROP TEMPORARY TABLE IF EXISTS hm8; - CREATE TEMPORARY TABLE hm2 SELECT * FROM hm1 WHERE wh = 19; - CREATE TEMPORARY TABLE hm3 SELECT * FROM hm1 WHERE wh = 7; - CREATE TEMPORARY TABLE hm4 SELECT * FROM hm1 WHERE wh = 60; - CREATE TEMPORARY TABLE hm5 SELECT * FROM hm1 WHERE wh = 5; - CREATE TEMPORARY TABLE hm6 SELECT * FROM hm1 WHERE wh = 17; - CREATE TEMPORARY TABLE hm7 SELECT * FROM hm1 WHERE wh = 37; - CREATE TEMPORARY TABLE hm8 SELECT * FROM hm1 WHERE wh = 55; - - SELECT * FROM - - ( - - SELECT Fecha, Entrada as BOGEntrada, Salida as BOGSalida, OK as BOGOK, Referencia as BOGReferencia, id as BOGid, - - NULL AS VNHEntrada, NULL AS VNHSalida, NULL AS VNHOK, NULL AS VNHReferencia, NULL AS VNHid, - - NULL AS ALGEntrada, NULL AS ALGSalida, NULL AS ALGOK, NULL AS ALGReferencia, NULL AS ALGid, - - NULL AS MADEntrada, NULL AS MADSalida, NULL AS MADOK, NULL AS MADReferencia, NULL AS MADid, - - NULL AS MCFEntrada, NULL AS MCFSalida, NULL AS MCFOK, NULL AS MCFReferencia, NULL AS MCFid, - - NULL AS VILEntrada, NULL AS VILSalida, NULL AS VILOK, NULL AS VILReferencia, NULL AS VILid, - - NULL AS BAREntrada, NULL AS BARSalida, NULL AS BAROK, NULL AS BARReferencia, NULL AS BARid - - FROM hm2 - - - UNION ALL - - SELECT Fecha - , NULL, NULL, NULL, NULL, NULL - ,Entrada, Salida, OK, Referencia, id - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - FROM hm3 - - - - UNION ALL - - SELECT Fecha - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , Entrada, Salida, OK, Referencia, id - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - FROM hm4 - - UNION ALL - - SELECT Fecha - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , Entrada, Salida, OK, Referencia, id - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - FROM hm5 - - UNION ALL - - SELECT Fecha - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , Entrada, Salida, OK, Referencia, id - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - FROM hm6 - - UNION ALL - - SELECT Fecha - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , Entrada, Salida, OK, Referencia, id - , NULL, NULL, NULL, NULL, NULL - - - FROM hm7 - - UNION ALL - - SELECT Fecha - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , NULL, NULL, NULL, NULL, NULL - , Entrada, Salida, OK, Referencia, id - - FROM hm8 - - ) sub - - ORDER BY Fecha, BOGEntrada IS NULL, VNHEntrada IS NULL, ALGEntrada IS NULL, MADEntrada IS NULL, MCFEntrada IS NULL, VILEntrada IS NULL, BAREntrada IS NULL; - -END$$ -DELIMITER ; diff --git a/db/versions/10932-azureEucalyptus/00-firstScript.sql b/db/versions/10932-azureEucalyptus/00-firstScript.sql new file mode 100644 index 000000000..55eea3211 --- /dev/null +++ b/db/versions/10932-azureEucalyptus/00-firstScript.sql @@ -0,0 +1,2 @@ +GRANT EXECUTE ON PROCEDURE vn.absoluteInventoryHistory TO buyer; +GRANT EXECUTE ON PROCEDURE vn.multipleInventoryHistory TO buyer; From 354ecfaa1684d1f17db20d092ce9821a849219d9 Mon Sep 17 00:00:00 2001 From: ivanm Date: Wed, 6 Mar 2024 09:00:21 +0100 Subject: [PATCH 052/456] refs #6498 Arreglar grant y tabs --- .../procedures/absoluteInventoryHistory.sql | 4 +- .../procedures/multipleInventoryHistory.sql | 206 +++++++++--------- .../10932-azureEucalyptus/00-firstScript.sql | 20 ++ 3 files changed, 125 insertions(+), 105 deletions(-) diff --git a/db/routines/vn/procedures/absoluteInventoryHistory.sql b/db/routines/vn/procedures/absoluteInventoryHistory.sql index f1a317598..a1e143185 100644 --- a/db/routines/vn/procedures/absoluteInventoryHistory.sql +++ b/db/routines/vn/procedures/absoluteInventoryHistory.sql @@ -1,6 +1,6 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`( - vItemFk INT, vWarehouse INT, vDate DATETIME) + vItemFk INT, vWarehouse INT, vDate DATETIME) BEGIN /** * Calcula y proporciona un historial de inventario absoluto @@ -72,7 +72,7 @@ BEGIN WHERE t.shipped >= '2001-01-01' AND m.itemFk = vItemFk AND vWarehouse IN (t.warehouseFk , 0) - ) t1 + ) t1 ORDER BY `date`, input DESC, ok DESC; SELECT sum(input) - sum(`output`) INTO vCalculatedInventory diff --git a/db/routines/vn/procedures/multipleInventoryHistory.sql b/db/routines/vn/procedures/multipleInventoryHistory.sql index bd399e889..b15cab549 100644 --- a/db/routines/vn/procedures/multipleInventoryHistory.sql +++ b/db/routines/vn/procedures/multipleInventoryHistory.sql @@ -1,6 +1,6 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`multipleInventoryHistory`( - vItemFk INT) + vItemFk INT) BEGIN /** * Calcula y proporciona un historial de inventario detallado @@ -17,58 +17,58 @@ BEGIN CREATE TEMPORARY TABLE tMultipleHistory1 SELECT DATE(`date`) `date`, - input, + input, `output`, ok, reference, history.id, warehouse, `name` warehouseName - FROM ( - SELECT tr.landed `date`, + FROM ( + SELECT tr.landed `date`, c.quantity input, NULL `output`, IF(warehouseInFk = 44, 1, warehouseInFk) warehouse, (tr.isReceived <> FALSE) ok, e.invoiceNumber reference, - e.id id - FROM buy c - JOIN `entry` e ON e.id = c.entryFk - JOIN travel tr ON tr.id = e.travelFk - WHERE tr.landed >= vDateInventory - AND c.itemFk = vItemFk - AND NOT e.isRaid - AND c.quantity <> 0 - UNION ALL - SELECT tr.shipped `date`, + e.id id + FROM buy c + JOIN `entry` e ON e.id = c.entryFk + JOIN travel tr ON tr.id = e.travelFk + WHERE tr.landed >= vDateInventory + AND c.itemFk = vItemFk + AND NOT e.isRaid + AND c.quantity <> 0 + UNION ALL + SELECT tr.shipped `date`, NULL input, c.quantity `output`, - warehouseOutFk warehouse, + tr.warehouseOutFk warehouse, tr.isDelivered ok, e.invoiceNumber reference, e.id id - FROM buy c - JOIN `entry` e ON e.id = c.entryFk - JOIN travel tr ON tr.id = e.travelFk - WHERE tr.shipped >= vDateInventory - AND c.itemFk = vItemFk - AND NOT e.isRaid - AND c.quantity <> 0 - UNION ALL - SELECT t.shipped `date`, + FROM buy c + JOIN `entry` e ON e.id = c.entryFk + JOIN travel tr ON tr.id = e.travelFk + WHERE tr.shipped >= vDateInventory + AND c.itemFk = vItemFk + AND NOT e.isRaid + AND c.quantity <> 0 + UNION ALL + SELECT t.shipped `date`, NULL input, m.quantity `output`, - warehouseInFk warehouse, + tr.warehouseInFk warehouse, (m.isPicked <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) ok, t.refFk reference, t.id id - FROM sale m - JOIN ticket t ON t.id = m.ticketFk - WHERE t.shipped >= vDateInventory - AND m.itemFk = vItemFk - ) history - JOIN warehouse ON warehouse.id = history.warehouse - ORDER BY `date`, input DESC, ok DESC; + FROM sale m + JOIN ticket t ON t.id = m.ticketFk + WHERE t.shipped >= vDateInventory + AND m.itemFk = vItemFk + ) history + JOIN warehouse ON warehouse.id = history.warehouse + ORDER BY `date`, input DESC, ok DESC; DROP TEMPORARY TABLE IF EXISTS tMultipleHistory2; DROP TEMPORARY TABLE IF EXISTS tMultipleHistory3; @@ -86,76 +86,76 @@ BEGIN CREATE TEMPORARY TABLE tMultipleHistory8 SELECT * FROM tMultipleHistory1 WHERE warehouse = 55; SELECT * - FROM ( - SELECT `date`, input BOGinput, `output` BOGoutput, ok BOGok, reference BOGreference, id BOGid, - NULL VNHinput, NULL VNHoutput, NULL VNHok, NULL VNHreference, NULL VNHid, - NULL ALGinput, NULL ALGoutput, NULL ALGok, NULL ALGreference, NULL ALGid, - NULL MADinput, NULL MADoutput, NULL MADok, NULL MADreference, NULL MADid, - NULL MCFinput, NULL MCFoutput, NULL MCFok, NULL MCFreference, NULL MCFid, - NULL VILinput, NULL VILoutput, NULL VILok, NULL VILreference, NULL VILid, - NULL BARinput, NULL BARoutput, NULL BARok, NULL BARreference, NULL BARid - FROM tMultipleHistory2 - UNION ALL - SELECT `date`, - NULL, NULL, NULL, NULL, NULL, - input, `output`, ok, reference, id, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL - FROM tMultipleHistory3 - UNION ALL - SELECT `date`, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - input, `output`, ok, reference, id, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL - FROM tMultipleHistory4 - UNION ALL - SELECT `date`, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - input, `output`, ok, reference, id, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL - FROM tMultipleHistory5 - UNION ALL - SELECT `date`, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - input, `output`, ok, reference, id, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL - FROM tMultipleHistory6 - UNION ALL - SELECT `date`, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - input, `output`, ok, reference, id, - NULL, NULL, NULL, NULL, NULL - FROM tMultipleHistory7 - UNION ALL - SELECT `date`, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, - input, `output`, ok, reference, id - FROM tMultipleHistory8 - ) sub - ORDER BY `date`, BOGinput IS NULL, VNHinput IS NULL, ALGinput IS NULL, MADinput IS NULL, MCFinput IS NULL, VILinput IS NULL, BARinput IS NULL; + FROM ( + SELECT `date`, input BOGinput, `output` BOGoutput, ok BOGok, reference BOGreference, id BOGid, + NULL VNHinput, NULL VNHoutput, NULL VNHok, NULL VNHreference, NULL VNHid, + NULL ALGinput, NULL ALGoutput, NULL ALGok, NULL ALGreference, NULL ALGid, + NULL MADinput, NULL MADoutput, NULL MADok, NULL MADreference, NULL MADid, + NULL MCFinput, NULL MCFoutput, NULL MCFok, NULL MCFreference, NULL MCFid, + NULL VILinput, NULL VILoutput, NULL VILok, NULL VILreference, NULL VILid, + NULL BARinput, NULL BARoutput, NULL BARok, NULL BARreference, NULL BARid + FROM tMultipleHistory2 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory3 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory4 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory5 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory6 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id, + NULL, NULL, NULL, NULL, NULL + FROM tMultipleHistory7 + UNION ALL + SELECT `date`, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, + input, `output`, ok, reference, id + FROM tMultipleHistory8 + ) sub + ORDER BY `date`, BOGinput IS NULL, VNHinput IS NULL, ALGinput IS NULL, MADinput IS NULL, MCFinput IS NULL, VILinput IS NULL, BARinput IS NULL; END$$ DELIMITER ; \ No newline at end of file diff --git a/db/versions/10932-azureEucalyptus/00-firstScript.sql b/db/versions/10932-azureEucalyptus/00-firstScript.sql index 55eea3211..399819cc4 100644 --- a/db/versions/10932-azureEucalyptus/00-firstScript.sql +++ b/db/versions/10932-azureEucalyptus/00-firstScript.sql @@ -1,2 +1,22 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`multipleInventoryHistory`( + vItemFk INT) +BEGIN + DECLARE vDateInventory DATETIME; + SELECT inventoried INTO vDateInventory FROM config; + +END$$ +DELIMITER ; + +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`( + vItemFk INT, vWarehouse INT, vDate DATETIME) +BEGIN + DECLARE vCalculatedInventory INT; + SET vCalculatedInventory = 0; + +END$$ +DELIMITER ; + GRANT EXECUTE ON PROCEDURE vn.absoluteInventoryHistory TO buyer; GRANT EXECUTE ON PROCEDURE vn.multipleInventoryHistory TO buyer; From 2f0c1612c2770fd300090e45fe84ff7446c911e7 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 6 Mar 2024 12:02:34 +0100 Subject: [PATCH 053/456] feat: refs #6500 delete procedure --- db/routines/vn/procedures/riskAllClients.sql | 24 +++--- .../vn/procedures/solunionRiskRequest.sql | 16 ++-- db/routines/vn2008/events/raidUpdate.sql | 8 -- db/routines/vn2008/procedures/raidUpdate.sql | 28 ------- db/routines/vn2008/procedures/rateView.sql | 37 -------- .../vn2008/procedures/recobro_credito.sql | 45 ---------- .../vn2008/procedures/risk_vs_client_list.sql | 84 ------------------- 7 files changed, 20 insertions(+), 222 deletions(-) delete mode 100644 db/routines/vn2008/events/raidUpdate.sql delete mode 100644 db/routines/vn2008/procedures/raidUpdate.sql delete mode 100644 db/routines/vn2008/procedures/rateView.sql delete mode 100644 db/routines/vn2008/procedures/recobro_credito.sql delete mode 100644 db/routines/vn2008/procedures/risk_vs_client_list.sql diff --git a/db/routines/vn/procedures/riskAllClients.sql b/db/routines/vn/procedures/riskAllClients.sql index 66c0a0dd5..621d047ae 100644 --- a/db/routines/vn/procedures/riskAllClients.sql +++ b/db/routines/vn/procedures/riskAllClients.sql @@ -3,27 +3,27 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`riskAllClients`(max BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.client_list; - CREATE TEMPORARY TABLE tmp.client_list - (PRIMARY KEY (Id_Cliente)) + CREATE TEMPORARY TABLE tmp.client_list + (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY SELECT id Id_Cliente, null grade FROM vn.client; - - CALL vn2008.risk_vs_client_list(maxRiskDate); - + + CALL client_getDebt (maxRiskDate); + SELECT c.RazonSocial, - c.Id_Cliente, - c.Credito, - CAST(r.risk as DECIMAL (10,2)) risk, - CAST(c.Credito - r.risk as DECIMAL (10,2)) Diferencia, - c.Id_Pais + c.Id_Cliente, + c.Credito, + CAST(r.risk as DECIMAL (10,2)) risk, + CAST(c.Credito - r.risk as DECIMAL (10,2)) Diferencia, + c.Id_Pais FROM vn2008.Clientes c JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente GROUP BY c.Id_cliente; - + DROP TEMPORARY TABLE IF EXISTS tmp.risk; - DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/solunionRiskRequest.sql b/db/routines/vn/procedures/solunionRiskRequest.sql index b735bea33..7a7102782 100644 --- a/db/routines/vn/procedures/solunionRiskRequest.sql +++ b/db/routines/vn/procedures/solunionRiskRequest.sql @@ -8,15 +8,15 @@ BEGIN ENGINE = MEMORY SELECT * FROM (SELECT cc.client Id_Cliente, ci.grade FROM vn.creditClassification cc JOIN vn.creditInsurance ci ON cc.id = ci.creditClassification - WHERE dateEnd IS NULL - ORDER BY ci.creationDate DESC + WHERE dateEnd IS NULL + ORDER BY ci.creationDate DESC LIMIT 10000000000000000000) t1 GROUP BY Id_Cliente; - - CALL vn2008.risk_vs_client_list(util.VN_CURDATE()); - + + CALL client_getDebt (util.VN_CURDATE()); + SELECT c.Id_Cliente, c.Cliente, c.Credito credito_vn, c.creditInsurance solunion, cast(r.risk as DECIMAL(10,0)) riesgo_vivo, - cast(c.creditInsurance - r.risk as decimal(10,0)) margen_vivo, + cast(c.creditInsurance - r.risk as decimal(10,0)) margen_vivo, f.Consumo consumo_anual, c.Vencimiento, ci.grade FROM vn2008.Clientes c @@ -24,8 +24,8 @@ BEGIN JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente JOIN bi.facturacion_media_anual f ON c.Id_Cliente = f.Id_Cliente GROUP BY Id_cliente; - + DROP TEMPORARY TABLE IF EXISTS tmp.risk; - DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; END$$ DELIMITER ; diff --git a/db/routines/vn2008/events/raidUpdate.sql b/db/routines/vn2008/events/raidUpdate.sql deleted file mode 100644 index aacfd6dcd..000000000 --- a/db/routines/vn2008/events/raidUpdate.sql +++ /dev/null @@ -1,8 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn2008`.`raidUpdate` - ON SCHEDULE EVERY 1 DAY - STARTS '2017-12-29 00:05:00.000' - ON COMPLETION PRESERVE - ENABLE -DO CALL raidUpdate$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/raidUpdate.sql b/db/routines/vn2008/procedures/raidUpdate.sql deleted file mode 100644 index 9746f3cf9..000000000 --- a/db/routines/vn2008/procedures/raidUpdate.sql +++ /dev/null @@ -1,28 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`raidUpdate`() -BEGIN - - UPDATE Entradas e - JOIN Entradas_Auto ea USING (Id_Entrada) - JOIN travel t ON t.id = e.travel_id - JOIN ( - SELECT * - FROM ( - SELECT id, landing, warehouse_id, warehouse_id_out - FROM travel - JOIN ( - SELECT warehouse_id, warehouse_id_out - FROM Entradas_Auto ea - JOIN Entradas e USING(Id_Entrada) - JOIN travel t ON t.id = e.travel_id - GROUP BY warehouse_id, warehouse_id_out - ) t USING (warehouse_id, warehouse_id_out) - WHERE shipment > util.VN_CURDATE() AND delivered = FALSE - ORDER BY landing - LIMIT 10000000000000000000 - ) t - GROUP BY warehouse_id, warehouse_id_out - ) t USING (warehouse_id, warehouse_id_out) - SET e.travel_id = t.id; -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/rateView.sql b/db/routines/vn2008/procedures/rateView.sql deleted file mode 100644 index 91e317be6..000000000 --- a/db/routines/vn2008/procedures/rateView.sql +++ /dev/null @@ -1,37 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`rateView`() -BEGIN - - SELECT - t.year as año, - t.month as mes, - pagos.dolares, - pagos.cambioPractico, - CAST(sum(divisa) / sum(bi) as DECIMAL(5,4)) as cambioTeorico, - pagos.cambioOficial - FROM recibida r - JOIN time t ON t.date = r.fecha - JOIN recibida_iva ri ON r.id = ri.recibida_id - JOIN - ( - SELECT - t.year as Año, - t.month as Mes, - cast(sum(divisa) as DECIMAL(10,2)) as dolares, - cast(sum(divisa) / sum(importe) as DECIMAL(5,4)) as cambioPractico, - cast(rr.rate * 0.998 as DECIMAL(5,4)) as cambioOficial - FROM pago p - JOIN time t ON t.date = p.fecha - JOIN reference_rate rr ON rr.date = p.fecha AND moneda_id = 2 - WHERE divisa - AND fecha >= '2015-01-11' - GROUP BY t.year, t.month - ) pagos ON t.year = pagos.Año AND t.month = pagos.Mes - WHERE moneda_id = 2 - AND fecha >= '2015-01-01' - AND divisa - AND bi - GROUP BY t.year, t.month; - -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/recobro_credito.sql b/db/routines/vn2008/procedures/recobro_credito.sql deleted file mode 100644 index 3657f2b9b..000000000 --- a/db/routines/vn2008/procedures/recobro_credito.sql +++ /dev/null @@ -1,45 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`recobro_credito`() -BEGIN - DECLARE EXIT HANDLER FOR SQLSTATE '45000' - BEGIN - ROLLBACK; - RESIGNAL; - END; - - START TRANSACTION; - UPDATE vn.`client` c - JOIN vn.payMethod pm ON pm.id = c.payMethodFk - SET credit = 0 - WHERE pm.`code` = 'card'; - - DROP TEMPORARY TABLE IF EXISTS clientes_credit; - CREATE TEMPORARY TABLE clientes_credit - SELECT Id_Cliente, if (Credito > Recobro ,Credito - Recobro,0) AS newCredit - FROM ( - SELECT r.Id_Cliente, r.amount AS Recobro, - timestampadd(DAY, period, UltimaFecha) AS Deadline, sub2.amount AS Credito - FROM vn2008.recovery r - JOIN ( - SELECT Id_Cliente, amount , odbc_date AS UltimaFecha - FROM ( - SELECT * FROM credit - ORDER BY odbc_date DESC - LIMIT 10000000000000000000 - ) sub - GROUP BY Id_Cliente - ) sub2 USING(Id_Cliente) - WHERE dend IS NULL or dend >= util.VN_CURDATE() - GROUP BY Id_Cliente - HAVING Deadline <= util.VN_CURDATE() - ) sub3 - WHERE Credito > 0; - - UPDATE Clientes - JOIN clientes_credit USING(Id_Cliente) - SET Clientes.Credito = newCredit; - - DROP TEMPORARY TABLE clientes_credit; - COMMIT; -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/risk_vs_client_list.sql b/db/routines/vn2008/procedures/risk_vs_client_list.sql deleted file mode 100644 index 92f94eb9f..000000000 --- a/db/routines/vn2008/procedures/risk_vs_client_list.sql +++ /dev/null @@ -1,84 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`risk_vs_client_list`(maxRiskDate DATE) -BEGIN -/** - * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list - * - * @deprecated usar vn.client_getDebt - * @param maxRiskDate Fecha maxima de los registros - * @return table tmp.risk - */ - DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(util.VN_CURDATE()) - 60, util.VN_CURDATE()); - DECLARE endingDate DATETIME; - DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; - - SET maxRiskDate = IFNULL(maxRiskDate, util.VN_CURDATE()); - SET endingDate = TIMESTAMP(maxRiskDate, '23:59:59'); - - DROP TEMPORARY TABLE IF EXISTS tmp.client_list_2; - CREATE TEMPORARY TABLE tmp.client_list_2 - (PRIMARY KEY (Id_Cliente)) - ENGINE = MEMORY - SELECT * - FROM tmp.client_list; - - DROP TEMPORARY TABLE IF EXISTS tmp.client_list_3; - CREATE TEMPORARY TABLE tmp.client_list_3 - (PRIMARY KEY (Id_Cliente)) - ENGINE = MEMORY - SELECT * - FROM tmp.client_list; - - DROP TEMPORARY TABLE IF EXISTS tmp.tickets_sin_facturar; - CREATE TEMPORARY TABLE tmp.tickets_sin_facturar - (PRIMARY KEY (Id_Cliente)) - ENGINE = MEMORY - SELECT t.Id_Cliente, floor(IF(cl.isVies, 1, 1.1) * sum(Cantidad * Preu * (100 - Descuento) / 100)) as total - FROM Movimientos m - JOIN Tickets t on m.Id_Ticket = t.Id_Ticket - JOIN tmp.client_list c on c.Id_Cliente = t.Id_Cliente - JOIN vn.client cl ON cl.id = t.Id_Cliente - WHERE Factura IS NULL - AND Fecha BETWEEN startingDate AND endingDate - GROUP BY t.Id_Cliente; - - DROP TEMPORARY TABLE IF EXISTS tmp.risk; - CREATE TEMPORARY TABLE tmp.risk - (PRIMARY KEY (Id_Cliente)) - ENGINE = MEMORY - SELECT Id_Cliente, SUM(amount) risk, sum(saldo) saldo - FROM Clientes c - JOIN ( - SELECT clientFk, SUM(amount) amount,SUM(amount) saldo - FROM vn.clientRisk - JOIN tmp.client_list on Id_Cliente = clientFk - GROUP BY clientFk - UNION ALL - SELECT Id_Cliente, SUM(Entregado),SUM(Entregado) - FROM Recibos - JOIN tmp.client_list_2 using(Id_Cliente) - WHERE Fechacobro > endingDate - GROUP BY Id_Cliente - UNION ALL - SELECT Id_Cliente, total,0 - FROM tmp.tickets_sin_facturar - UNION ALL - SELECT t.clientFk, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)), CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) - FROM hedera.tpvTransaction t - JOIN tmp.client_list_3 on Id_Cliente = t.clientFk - WHERE t.receiptFk IS NULL - AND t.status = 'ok' - GROUP BY t.clientFk - ) t ON c.Id_Cliente = t.clientFk - WHERE c.activo != FALSE - GROUP BY c.Id_Cliente; - - DELETE r.* - FROM tmp.risk r - JOIN vn2008.Clientes c on c.Id_Cliente = r.Id_Cliente - JOIN vn2008.pay_met pm on pm.id = c.pay_met_id - WHERE IFNULL(r.saldo,0) < 10 - AND r.risk <= MAX_RISK_ALLOWED - AND pm.`name` = 'TARJETA'; -END$$ -DELIMITER ; From 7947d6644e5de63988e8845185b7d968efb997ca Mon Sep 17 00:00:00 2001 From: ivanm Date: Wed, 6 Mar 2024 12:44:59 +0100 Subject: [PATCH 054/456] refs #6498 Correcion errores --- .../procedures/absoluteInventoryHistory.sql | 25 ++++++++++--------- .../procedures/multipleInventoryHistory.sql | 24 ++++++++---------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/db/routines/vn/procedures/absoluteInventoryHistory.sql b/db/routines/vn/procedures/absoluteInventoryHistory.sql index a1e143185..7dce6e252 100644 --- a/db/routines/vn/procedures/absoluteInventoryHistory.sql +++ b/db/routines/vn/procedures/absoluteInventoryHistory.sql @@ -1,6 +1,9 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`absoluteInventoryHistory`( - vItemFk INT, vWarehouse INT, vDate DATETIME) + vItemFk INT, + vWarehouseFk INT, + vDate DATETIME +) BEGIN /** * Calcula y proporciona un historial de inventario absoluto @@ -8,13 +11,11 @@ BEGIN * hasta una fecha determinada. * * @param vItemFk Id de artículo -* @param vWarehouse Almacén +* @param vWarehouseFk Id de almacén * @param vDate Fecha */ DECLARE vCalculatedInventory INT; - DECLARE vToday DATETIME; - - SET vToday = util.VN_CURDATE(); + DECLARE vToday DATETIME DEFAULT util.VN_CURDATE(); CREATE OR REPLACE TEMPORARY TABLE tHistoricalPast ENGINE = MEMORY @@ -23,7 +24,7 @@ BEGIN SELECT tr.landed `date`, b.quantity input, NULL `output`, - (tr.isReceived != FALSE) ok, + tr.isReceived ok, s.name alias, e.invoiceNumber reference, e.id id, @@ -34,7 +35,7 @@ BEGIN JOIN supplier s ON s.id = e.supplierFk WHERE tr.landed >= '2001-01-01' AND s.id <> 4 - AND vWarehouse IN (tr.warehouseInFk, 0) + AND vWarehouseFk IN (tr.warehouseInFk, 0) AND b.itemFk = vItemFk AND NOT e.isExcludedFromAvailable AND NOT e.isRaid @@ -52,7 +53,7 @@ BEGIN JOIN travel tr ON tr.id = e.travelFk JOIN supplier s ON s.id = e.supplierFk WHERE tr.shipped >= '2001-01-01' - AND vWarehouse = tr.warehouseOutFk + AND vWarehouseFk = tr.warehouseOutFk AND s.id <> 4 AND b.itemFk = vItemFk AND NOT e.isExcludedFromAvailable @@ -61,7 +62,7 @@ BEGIN SELECT t.shipped `date`, NULL input, m.quantity `output`, - (m.isPicked <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) ok, + (m.isPicked OR t.isLabeled OR t.refFk IS NOT NULL) ok, t.nickname alias, t.refFk reference, t.id, @@ -71,16 +72,16 @@ BEGIN JOIN client c ON c.id = t.clientFk WHERE t.shipped >= '2001-01-01' AND m.itemFk = vItemFk - AND vWarehouse IN (t.warehouseFk , 0) + AND vWarehouseFk IN (t.warehouseFk , 0) ) t1 ORDER BY `date`, input DESC, ok DESC; - SELECT sum(input) - sum(`output`) INTO vCalculatedInventory + SELECT SUM(input) - SUM(`output`) INTO vCalculatedInventory FROM tHistoricalPast WHERE `date` < vDate; SELECT p1.*, NULL v_virtual - FROM( + FROM ( SELECT vDate `date`, vCalculatedInventory input, NULL `output`, diff --git a/db/routines/vn/procedures/multipleInventoryHistory.sql b/db/routines/vn/procedures/multipleInventoryHistory.sql index b15cab549..ec151a6ff 100644 --- a/db/routines/vn/procedures/multipleInventoryHistory.sql +++ b/db/routines/vn/procedures/multipleInventoryHistory.sql @@ -29,16 +29,16 @@ BEGIN c.quantity input, NULL `output`, IF(warehouseInFk = 44, 1, warehouseInFk) warehouse, - (tr.isReceived <> FALSE) ok, + tr.isReceived ok, e.invoiceNumber reference, - e.id id + e.id FROM buy c JOIN `entry` e ON e.id = c.entryFk JOIN travel tr ON tr.id = e.travelFk WHERE tr.landed >= vDateInventory AND c.itemFk = vItemFk AND NOT e.isRaid - AND c.quantity <> 0 + AND c.quantity UNION ALL SELECT tr.shipped `date`, NULL input, @@ -46,20 +46,20 @@ BEGIN tr.warehouseOutFk warehouse, tr.isDelivered ok, e.invoiceNumber reference, - e.id id + e.id FROM buy c JOIN `entry` e ON e.id = c.entryFk JOIN travel tr ON tr.id = e.travelFk WHERE tr.shipped >= vDateInventory AND c.itemFk = vItemFk AND NOT e.isRaid - AND c.quantity <> 0 + AND c.quantity UNION ALL SELECT t.shipped `date`, NULL input, m.quantity `output`, tr.warehouseInFk warehouse, - (m.isPicked <> 0 OR t.isLabeled <> 0 OR t.refFk IS NOT NULL) ok, + (m.isPicked OR t.isLabeled OR t.refFk IS NOT NULL) ok, t.refFk reference, t.id id FROM sale m @@ -70,13 +70,8 @@ BEGIN JOIN warehouse ON warehouse.id = history.warehouse ORDER BY `date`, input DESC, ok DESC; - DROP TEMPORARY TABLE IF EXISTS tMultipleHistory2; - DROP TEMPORARY TABLE IF EXISTS tMultipleHistory3; - DROP TEMPORARY TABLE IF EXISTS tMultipleHistory4; - DROP TEMPORARY TABLE IF EXISTS tMultipleHistory5; - DROP TEMPORARY TABLE IF EXISTS tMultipleHistory6; - DROP TEMPORARY TABLE IF EXISTS tMultipleHistory7; - DROP TEMPORARY TABLE IF EXISTS tMultipleHistory8; + DROP TEMPORARY TABLE IF EXISTS tMultipleHistory2, tMultipleHistory3, + tMultipleHistory4, tMultipleHistory5, tMultipleHistory6, tMultipleHistory7, tMultipleHistory8; CREATE TEMPORARY TABLE tMultipleHistory2 SELECT * FROM tMultipleHistory1 WHERE warehouse = 19; CREATE TEMPORARY TABLE tMultipleHistory3 SELECT * FROM tMultipleHistory1 WHERE warehouse = 7; CREATE TEMPORARY TABLE tMultipleHistory4 SELECT * FROM tMultipleHistory1 WHERE warehouse = 60; @@ -156,6 +151,7 @@ BEGIN input, `output`, ok, reference, id FROM tMultipleHistory8 ) sub - ORDER BY `date`, BOGinput IS NULL, VNHinput IS NULL, ALGinput IS NULL, MADinput IS NULL, MCFinput IS NULL, VILinput IS NULL, BARinput IS NULL; + ORDER BY `date`, BOGinput IS NULL, VNHinput IS NULL, ALGinput IS NULL, + MADinput IS NULL, MCFinput IS NULL, VILinput IS NULL, BARinput IS NULL; END$$ DELIMITER ; \ No newline at end of file From 194947dc9a0cf3dccd0bb9ed69acd357e6fb41a4 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 6 Mar 2024 14:11:07 +0100 Subject: [PATCH 055/456] feat: refs #6500 procRefactor8 --- db/routines/vn/procedures/client_getDebt.sql | 6 ++-- db/routines/vn/procedures/creditRecovery.sql | 2 +- db/routines/vn/procedures/riskAllClients.sql | 32 +++++++++---------- .../vn/procedures/solunionRiskRequest.sql | 25 ++++++++------- 4 files changed, 34 insertions(+), 31 deletions(-) diff --git a/db/routines/vn/procedures/client_getDebt.sql b/db/routines/vn/procedures/client_getDebt.sql index ad7b5b7d2..3eaace4e9 100644 --- a/db/routines/vn/procedures/client_getDebt.sql +++ b/db/routines/vn/procedures/client_getDebt.sql @@ -17,15 +17,15 @@ BEGIN SET vEnded = util.dayEnd(IFNULL(vDate, util.VN_CURDATE())); - CREATE OR REPLACE TEMPORARY TABLE tClientRisk + CREATE OR REPLACE TEMPORARY TABLE tClientRisk ENGINE = MEMORY - SELECT cr.clientFk, SUM(cr.amount) amount + SELECT cr.clientFk, SUM(cr.amount) amount FROM clientRisk cr JOIN tmp.clientGetDebt c ON c.clientFk = cr.clientFk GROUP BY cr.clientFk; INSERT INTO tClientRisk - SELECT c.clientFk, SUM(r.amountPaid) + SELECT c.clientFk, SUM(r.amountPaid) FROM receipt r JOIN tmp.clientGetDebt c ON c.clientFk = r.clientFk WHERE r.payed > vEnded diff --git a/db/routines/vn/procedures/creditRecovery.sql b/db/routines/vn/procedures/creditRecovery.sql index 5a32a87f8..e598661af 100644 --- a/db/routines/vn/procedures/creditRecovery.sql +++ b/db/routines/vn/procedures/creditRecovery.sql @@ -40,7 +40,7 @@ BEGIN UPDATE client c JOIN tCreditClients cc ON cc.clientFk = c.clientFk - SET Clientes.Credito = newCredit; + SET c.credit = newCredit; DROP TEMPORARY TABLE tCreditClients; COMMIT; diff --git a/db/routines/vn/procedures/riskAllClients.sql b/db/routines/vn/procedures/riskAllClients.sql index 621d047ae..c818c715c 100644 --- a/db/routines/vn/procedures/riskAllClients.sql +++ b/db/routines/vn/procedures/riskAllClients.sql @@ -2,28 +2,28 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`riskAllClients`(maxRiskDate DATE) BEGIN - DROP TEMPORARY TABLE IF EXISTS tmp.client_list; - CREATE TEMPORARY TABLE tmp.client_list - (PRIMARY KEY (Id_Cliente)) + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; + CREATE TEMPORARY TABLE tmp.clientGetDebt + (PRIMARY KEY (clientFk)) ENGINE = MEMORY - SELECT id Id_Cliente, null grade FROM vn.client; + SELECT id clientFk, null grade FROM client; CALL client_getDebt (maxRiskDate); SELECT - c.RazonSocial, - c.Id_Cliente, - c.Credito, - CAST(r.risk as DECIMAL (10,2)) risk, - CAST(c.Credito - r.risk as DECIMAL (10,2)) Diferencia, - c.Id_Pais - FROM - vn2008.Clientes c - JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente - JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente - GROUP BY c.Id_cliente; + c.RazonSocial, + c.Id_Cliente, + c.Credito, + CAST(r.risk as DECIMAL (10,2)) risk, + CAST(c.Credito - r.risk as DECIMAL (10,2)) Diferencia, + c.Id_Pais + FROM + vn2008.Clientes c + JOIN tmp.risk r ON r.clientFk = c.Id_Cliente + JOIN tmp.clientGetDebt ci ON c.Id_Cliente = ci.clientFk + GROUP BY c.Id_cliente; DROP TEMPORARY TABLE IF EXISTS tmp.risk; - DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/solunionRiskRequest.sql b/db/routines/vn/procedures/solunionRiskRequest.sql index 7a7102782..f5af4d0ad 100644 --- a/db/routines/vn/procedures/solunionRiskRequest.sql +++ b/db/routines/vn/procedures/solunionRiskRequest.sql @@ -2,15 +2,18 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`solunionRiskRequest`() BEGIN - DROP TEMPORARY TABLE IF EXISTS tmp.client_list; - CREATE TEMPORARY TABLE tmp.client_list - (PRIMARY KEY (Id_Cliente)) + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; + CREATE TEMPORARY TABLE tmp.clientGetDebt + (PRIMARY KEY (clientFk)) ENGINE = MEMORY - SELECT * FROM (SELECT cc.client Id_Cliente, ci.grade FROM vn.creditClassification cc - JOIN vn.creditInsurance ci ON cc.id = ci.creditClassification - WHERE dateEnd IS NULL - ORDER BY ci.creationDate DESC - LIMIT 10000000000000000000) t1 GROUP BY Id_Cliente; + SELECT * + FROM (SELECT cc.client clientFk, ci.grade + FROM vn.creditClassification cc + JOIN vn.creditInsurance ci ON cc.id = ci.creditClassification + WHERE dateEnd IS NULL + ORDER BY ci.creationDate DESC + LIMIT 10000000000000000000) t1 + GROUP BY clientFk; CALL client_getDebt (util.VN_CURDATE()); @@ -20,12 +23,12 @@ BEGIN f.Consumo consumo_anual, c.Vencimiento, ci.grade FROM vn2008.Clientes c - JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente - JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente + JOIN tmp.risk r ON r.clientFk = c.Id_Cliente + JOIN tmp.clientGetDebt ci ON c.Id_Cliente = ci.clientFk JOIN bi.facturacion_media_anual f ON c.Id_Cliente = f.Id_Cliente GROUP BY Id_cliente; DROP TEMPORARY TABLE IF EXISTS tmp.risk; - DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; END$$ DELIMITER ; From a44359762b188ac5b223b3fe26499dab4db2fb5b Mon Sep 17 00:00:00 2001 From: pablone Date: Wed, 6 Mar 2024 14:51:34 +0100 Subject: [PATCH 056/456] feat(delay): refs #6005 add new restriction --- .../email/backup-printer-selected/backup-printer-selected.js | 4 +--- .../backup-printer-selected/sql/previousNotifications.sql | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/print/templates/email/backup-printer-selected/backup-printer-selected.js b/print/templates/email/backup-printer-selected/backup-printer-selected.js index 04a82b0c7..3578d0476 100755 --- a/print/templates/email/backup-printer-selected/backup-printer-selected.js +++ b/print/templates/email/backup-printer-selected/backup-printer-selected.js @@ -5,10 +5,8 @@ const name = 'backup-printer-selected'; module.exports = { name: name, async serverPrefetch() { - const notifications1 = await this.rawSqlFromDef('previousNotificationscopy', [name]); - console.log('notifications: ', notifications1); const notifications = await this.rawSqlFromDef('previousNotifications', [name]); - if (!notifications.length && checkDuplicates(notifications, this.labelerId, this.sectorId)) + if (!notifications.length || checkDuplicates(notifications, this.labelerId, this.sectorId)) throw new Error('Previous notification sended with the same parameters'); this.sector = await this.findOneFromDef('sector', [this.sectorId]); diff --git a/print/templates/email/backup-printer-selected/sql/previousNotifications.sql b/print/templates/email/backup-printer-selected/sql/previousNotifications.sql index bd44b05e4..2e2a8b93f 100644 --- a/print/templates/email/backup-printer-selected/sql/previousNotifications.sql +++ b/print/templates/email/backup-printer-selected/sql/previousNotifications.sql @@ -1,4 +1,4 @@ -SELECT nq.params +SELECT nq.params, created, status FROM util.notificationQueue nq JOIN util.notification n ON n.name = nq.notificationFk WHERE n.name = ? From 6b2533cfb122ddd832ae9c6a447fe5bbac8b96fa Mon Sep 17 00:00:00 2001 From: ivanm Date: Wed, 6 Mar 2024 15:16:55 +0100 Subject: [PATCH 057/456] refs #6498 correccion errores 2 --- .../procedures/absoluteInventoryHistory.sql | 41 ++++++++++--------- .../procedures/multipleInventoryHistory.sql | 31 +++++++------- 2 files changed, 37 insertions(+), 35 deletions(-) diff --git a/db/routines/vn/procedures/absoluteInventoryHistory.sql b/db/routines/vn/procedures/absoluteInventoryHistory.sql index 7dce6e252..627b7c8be 100644 --- a/db/routines/vn/procedures/absoluteInventoryHistory.sql +++ b/db/routines/vn/procedures/absoluteInventoryHistory.sql @@ -16,6 +16,7 @@ BEGIN */ DECLARE vCalculatedInventory INT; DECLARE vToday DATETIME DEFAULT util.VN_CURDATE(); + DECLARE vStartDate DATE DEFAULT '2001-01-01'; CREATE OR REPLACE TEMPORARY TABLE tHistoricalPast ENGINE = MEMORY @@ -33,46 +34,46 @@ BEGIN JOIN `entry` e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk JOIN supplier s ON s.id = e.supplierFk - WHERE tr.landed >= '2001-01-01' - AND s.id <> 4 + WHERE tr.landed >= vStartDate + AND s.id <> (SELECT supplierFk FROM inventoryConfig) AND vWarehouseFk IN (tr.warehouseInFk, 0) AND b.itemFk = vItemFk AND NOT e.isExcludedFromAvailable AND NOT e.isRaid UNION ALL - SELECT tr.shipped `date`, - NULL input, - b.quantity `output`, - tr.isDelivered ok, - s.name alias, - e.invoiceNumber reference, - e.id id, - tr.isDelivered f5 + SELECT tr.shipped, + NULL, + b.quantity, + tr.isDelivered, + s.name, + e.invoiceNumber, + e.id, + tr.isDelivered FROM buy b JOIN `entry` e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk JOIN supplier s ON s.id = e.supplierFk - WHERE tr.shipped >= '2001-01-01' + WHERE tr.shipped >= vStartDate AND vWarehouseFk = tr.warehouseOutFk - AND s.id <> 4 + AND s.id <> (SELECT supplierFk FROM inventoryConfig) AND b.itemFk = vItemFk AND NOT e.isExcludedFromAvailable AND NOT e.isRaid UNION ALL - SELECT t.shipped `date`, - NULL input, - m.quantity `output`, - (m.isPicked OR t.isLabeled OR t.refFk IS NOT NULL) ok, - t.nickname alias, - t.refFk reference, + SELECT t.shipped, + NULL, + m.quantity, + (m.isPicked OR t.isLabeled OR t.refFk IS NOT NULL), + t.nickname, + t.refFk, t.id, t.isPrinted FROM sale m JOIN ticket t ON t.id = m.ticketFk JOIN client c ON c.id = t.clientFk - WHERE t.shipped >= '2001-01-01' + WHERE t.shipped >= vStartDate AND m.itemFk = vItemFk - AND vWarehouseFk IN (t.warehouseFk , 0) + AND vWarehouseFk IN (t.warehouseFk, 0) ) t1 ORDER BY `date`, input DESC, ok DESC; diff --git a/db/routines/vn/procedures/multipleInventoryHistory.sql b/db/routines/vn/procedures/multipleInventoryHistory.sql index ec151a6ff..dc19e615a 100644 --- a/db/routines/vn/procedures/multipleInventoryHistory.sql +++ b/db/routines/vn/procedures/multipleInventoryHistory.sql @@ -1,6 +1,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`multipleInventoryHistory`( - vItemFk INT) + vItemFk INT +) BEGIN /** * Calcula y proporciona un historial de inventario detallado @@ -28,7 +29,7 @@ BEGIN SELECT tr.landed `date`, c.quantity input, NULL `output`, - IF(warehouseInFk = 44, 1, warehouseInFk) warehouse, + tr.warehouseInFk warehouse, tr.isReceived ok, e.invoiceNumber reference, e.id @@ -40,12 +41,12 @@ BEGIN AND NOT e.isRaid AND c.quantity UNION ALL - SELECT tr.shipped `date`, - NULL input, - c.quantity `output`, - tr.warehouseOutFk warehouse, - tr.isDelivered ok, - e.invoiceNumber reference, + SELECT tr.shipped, + NULL, + c.quantity, + tr.warehouseOutFk, + tr.isDelivered, + e.invoiceNumber, e.id FROM buy c JOIN `entry` e ON e.id = c.entryFk @@ -55,13 +56,13 @@ BEGIN AND NOT e.isRaid AND c.quantity UNION ALL - SELECT t.shipped `date`, - NULL input, - m.quantity `output`, - tr.warehouseInFk warehouse, - (m.isPicked OR t.isLabeled OR t.refFk IS NOT NULL) ok, - t.refFk reference, - t.id id + SELECT t.shipped, + NULL, + m.quantity, + t.warehouseFk, + (m.isPicked OR t.isLabeled OR t.refFk IS NOT NULL), + t.refFk, + t.id FROM sale m JOIN ticket t ON t.id = m.ticketFk WHERE t.shipped >= vDateInventory From b588b9807ce73a19f6f2a7f48828a6ab487990e5 Mon Sep 17 00:00:00 2001 From: Pako Date: Thu, 7 Mar 2024 13:45:53 +0100 Subject: [PATCH 058/456] fixtures local --- db/dump/fixtures.after.sql | 411 ------------------------------------- 1 file changed, 411 deletions(-) diff --git a/db/dump/fixtures.after.sql b/db/dump/fixtures.after.sql index 13e423d68..4c5f89d97 100644 --- a/db/dump/fixtures.after.sql +++ b/db/dump/fixtures.after.sql @@ -292,418 +292,7 @@ INSERT INTO `hedera`.`tpvConfig` (currency, terminal, transactionType, maxAmount */ INSERT INTO hedera.tpvMerchantEnable (merchantFk, companyFk) VALUES (1, 442); --- XXX: floranet -INSERT IGNORE INTO vn.intrastat(id, description, taxClassFk, taxCodeFk) -VALUES(6031970, 'Flores y capullos frescos (Otras: ramos, coronas)', 1, 63); - - -INSERT IGNORE INTO vn.itemType (code, name, categoryFk, workerFk) - VALUES('FNR', 'Floranet Ramos', 1, 1); - -INSERT IGNORE INTO vn.itemType (code, name, categoryFk, workerFk) - VALUES('FNP', 'Floranet Plantas', 1, 1); - --- Generación de items -SELECT id - INTO @FNR - FROM vn.itemType - WHERE code = 'FNR'; - -SELECT id - INTO @FNP - FROM vn.itemType - WHERE code = 'FNP'; - -DELETE - FROM vn.item - WHERE typeFk IN (@FNR,@FNP); - -SELECT MAX(id) + 1 - INTO @item - FROM vn.item; - -INSERT INTO vn.item - ( - id, - name, - longName, - `size`, - originFk, - intrastatFk, - typeFk, - inkFk, - image, - description - ) - VALUES - ( - @item := @item + 1, - @r := 'Ramo Terranova', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin ORDER BY RAND() LIMIT 1), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1CwtEK5_GReAzconaJsPTCXxV7zajbTos/view?usp=drive_link', - CONCAT('Hemos elegido una selección de flores muy especiales para realizar ', - 'esta composición: brásicas, flor de cera, astrantia, espigas, lisiantum, ', - 'paniculata eucaliptus.') - ), - ( - @item := @item + 1, - @r := 'Ramo Tasmania', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1_149uYZ-sehw3vWH68Quttk8QJe5T_bG/view?usp=drive_link', - CONCAT('La elegancia de este ramo es por la elección de todas las flores que lo componen: ', - 'eringium, verdes variados, rosas proteas, margaritas, astrantia, esta selección de ', - 'flores será un acierto seguro para hacer un regalo muy especial.') - ), - ( - @item := @item + 1, - @r := 'Ramo Pasion', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1-dH1UilV-nOH9XNK23uooZoezlwMT-Jq/view?usp=drive_link', - CONCAT('La unión de las rosas rojas con el lilium rosa hace de este ramo uno de ', - 'los más especiales , el juego de las dos tonalidades con los diferentes verdes ', - 'que cuidadosamente selecionamos para darle el toque final a la composicion hace ', - 'que este ramo sea al mismo tiempo elegante y atrevido, para amantes de lo inesperado ', - 'que quieren decorar alguna estancia de su hogar o hacer un ragalo muy especial') - ), - ( - @item := @item + 1, - @r := 'Ramo Florencia', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1PWKo5N8kg8H3xQtELdeQTQIc1HMZCc1P/view?usp=drive_link', - CONCAT('Este ramo evoca los colores del atardecer en Florencia, las rosas ramificadas ', - 'de pitimini con diferentes tonalidades y la paniculata nos transpotan al ambiente ', - 'sofisticado del norte de Italia y la frescura de los verdes variados nos recuerda ', - 'a la campiña italiana .Este ramo es ideal para regalar pensando en alguien muy especial.') - ), - ( - @item := @item + 1, - @r := 'Ramo Atardecer', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink WHERE name = 'Yellow'), - 'https://drive.google.com/file/d/1eM4gtftQuXN5xUjAHIRUYNPZNmuHVRA_/view?usp=drive_link', - CONCAT('Las rosas amarillas simbolizan la alegría de vivir, la calidez ,el ', - 'optimismo y la energía, por eso son el regalo perfecto para una ocasión muy ', - 'especial o para celebrar la alegría de una amistad o de un encuentro, a estas ', - 'preciosas rosas les añadimos un toque desenfadado a través de los verdes ', - 'variados que unidos a la belleza de la rosa que seguro serán una apuesta segura.') - ), - ( - @item := @item + 1, - @r := 'Ramo Arcoíris', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1Hxk5yqo7891gfK1VKIYfWxO5a_0K2Qej/view?usp=drive_link', - CONCAT('Llega la primavera a tu casa con el ramo Arco Iris , conseguirás iluminar ', - 'cualquier estancia gracias a la combinacón de las gerberas holandesas de gran ', - 'tamaño con colores muy vivos que a su vez contrastan a la perfección con las ', - 'margaritas coconut y el estatice variado, todo ello acompañado de verdes entre ', - 'los que destaca el ruscus danae , para dulcificar la explosión de color , ', - 'añadimos paniculata , una flor sencilla pero que aporta gran armonía al ramo') - ), - ( - @item := @item + 1, - @r := 'Ramo Provenza', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1TA9SBwjqnrEqG1bzwDL37sxtX9CNyLJk/view?usp=drive_link', - CONCAT('La delicada composición de este ramo escogida de forma minuciosa hecho ', - 'con liliums rosa, lisiantum blanco y rosas de color rosa todo ello unificado ', - 'con una selección de maravillosos verdes variados, hacen que esta combinación ', - 'sea muy especial para decorar cualquier estancia de tu casa a la que aportará una luz especial.') - ), - ( - @item := @item + 1, - @r := 'Ramo Alegria', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1sOf2isj84P9OxR3E3x6n2PjPnWVamLCE/view?usp=drive_link', - CONCAT('Hemos elegido el nombre de Alegría para este ramo ya que sus intensos ', - 'y variados colores nos producen esa sensación, la combinación de rosas blancas ', - ', alstroemeria rosa unida a la paniculata tambien de color rosa y a la sutileza ', - 'de la combinación de verdes variados, hace de este ramo una opción perfecta de ', - 'regalo que a todo el mundo le gusta por su armoniosa combinacion de colores.') - ), - ( - @item := @item + 1, - @r := 'Planta Orquídeas ', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNP, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/14BIkDDonFaIiTyJer1CWju1YzZNzt3XQ/view?usp=drive_link', - CONCAT('Elegimos personalmente en nuestra tienda dos plantas de orquídeas ', - 'con las mejores características combinadas con diferentes elementos de ', - 'decoración consiguiendo una composición ideal para cualquier ambiente.El ', - 'recipiente de cerámica se puede utilizar para múltiples funciones y sacar ', - 'de el las dos plantas de orquídeas para colocarlas en dos puntos diferentes ', - 'de nuestro hogar, ya que se respeta siempre las macetas originales de cada orquídea') - ), - ( - @item := @item + 1, - @r := 'Planta Kentia', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNP, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1rKe2RicfWha-VIm1LbbXckbA41glA99K/view?usp=drive_link', - CONCAT('La Kentia es una de las plantas más decorativas debido al porte que ', - 'le otorgan sus largas finas hojas arqueadas, ideal para un regalo que dejará ', - 'sin palabras a quien lo reciba o para decorar una estancia de tu hogar, ', - 'desde un espacio super moderno hasta el ambiente más clásico. Nuestras Kentias ', - 'proceden de uno de los mejores productores de kentias del mundo, con el añadido ', - 'de ser un producto nacional producido en Canarias de una calidad extrema.') - ), - ( - @item := @item + 1, - @r := 'Planta Calathea', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNP, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/11CKm5rqVFVPOELciuyXUrkc2oeTHJzBE/view?usp=drive_link', - CONCAT('Esta planta originaria de América tropical, principalmente de Brasil y Perú ', - ', son plantas ideales para embellecer el interior de una estancia . Debido a su ', - 'llamativo y original colorido, tambien es un regalo perfecto para ', - 'cualquier compromiso que tengamos .') - ), - ( - @item := @item + 1, - @r := 'Planta Anthurium ', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNP, - (SELECT id FROM vn.ink WHERE name = 'Red'), - 'https://drive.google.com/file/d/1j4il_N9VJGaP4f6CPZM0u6GjxwIeYcBt/view?usp=drive_link', - CONCAT('Nos encanta el color rojo de sus flores .Esta planta original de ', - 'Costa Rica ,proviene de las zonas tropicales de America Central y del Sur, ', - 'su llamativo color alegrará cualquier celebración') - ), - ( - @item := @item + 1, - @r := 'Ramo Mindanao', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1lsGDuC6xmv3SyGukfLTVYsQvbGf1Bzxy/view?usp=drive_link', - CONCAT('La combinación de rosas ramificadas amarillas, las hortensias blancas, ', - 'el estatice, el limonium Tanacetum y los verdes variados hace de este ramo uno ', - 'de los que más gustan tanto si es para regalar como para decorar un rincón de tu casa.') - ), - ( - @item := @item + 1, - @r := 'Ramo Guinea', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1MtF0oghv-ahogaAaVpJNzDiIfyeCCmAi/view?usp=drive_link', - CONCAT('Hemos elegido una selección de flores muy especiales para realizar esta composición:', - ' brásicas, flor de cera, astrantia, espigas, lisiantum, paniculata eucaliptus.') - ), - ( - @item := @item + 1, - @r := 'Ramo Eterno', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/1AOMqlZAKqImnnWSmeq1DW1Krj78mACCG/view?usp=drive_link', - CONCAT('La perfecta combinación de los diferentes tonos de estatice y el eucaliptus ', - 'cinerea hacen de este ramo un recuerdo inolvidable ya que ambos materiales son de ', - 'larga duración por lo que podrás conservar tu ramo junto con las bonitas vivencias ', - 'de ese día durante mucho tiempo, además le añadimos un toque especial que le dan ', - 'las raices las cuales combinan con los tonos del ramo, unas bonitas cintas del colores ', - 'rematan el acabado del ramo. Este ramo se puede secar y mantenerse en perfecto estado.') - ), - ( - @item := @item + 1, - @r := 'Ramo Cielo', - @r, - 20 + CEIL(RAND() * 55), - (SELECT id FROM vn.origin WHERE code = 'SPA'), - 6031970, - @FNR, - (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), - 'https://drive.google.com/file/d/168DikIOwVT5OO4BHARBoWwLB1wjpAS7s/view?usp=drive_link', - CONCAT('Las hortensias son unas de las flores más elegantes que existen y ', - 'la combinación que proponemos para este ramo te resultará de lo más armoniosa ', - ', ya que intercalamos flores de mayor tamaño como las hortensias azules y ', - 'blancas junto con flores más pequeñas y delicadas como el estatice , todo ello', - ' combinado con el eucaliptus cinerea que te aportará un sueve aroma en toda ', - 'la estancia, el atado del ramo es de rafia natural, siguiendo la tonalidad ', - 'clara de todo el conjunto. ') - ); - - -- Ramo Terranova: 1er elemento -INSERT INTO vn.item( - name, - longName, - `size`, - stems, - inkFk, - intrastatFk, - typeFk, - originFk) - SELECT - @r:= 'Rosa roja', - @r, - 60, - 1, - 'RED', - 6031970, - id, - 1 - FROM vn.itemType - WHERE code LIKE 'FNE'; - -SELECT LAST_INSERT_ID() INTO @itemFk; - -INSERT INTO floranet.`element` - SET itemFk = @itemFk; - -INSERT INTO floranet.builder( - itemFk, - elementFk, - quantity) - SELECT - id, - @itemFk, - 12 - FROM vn.item - WHERE name = 'Ramo Terranova'; - - -- Ramo Terranova: 2º elemento - -INSERT INTO vn.item( - name, - longName, - `size`, - stems, - inkFk, - intrastatFk, - typeFk, - originFk) - SELECT - @r:= 'Hoja de helecho', - @r, - 60, - 1, - 'BAS', - 6031970, - id, - 1 - FROM vn.itemType - WHERE code LIKE 'FNE'; - -SELECT LAST_INSERT_ID() INTO @itemFk; - -INSERT INTO floranet.`element` - SET itemFk = @itemFk; - -INSERT INTO floranet.builder( - itemFk, - elementFk, - quantity) - SELECT - id, - @itemFk, - 4 - FROM vn.item - WHERE name = 'Ramo Terranova'; - - - -- Ramo Terranova: 3er elemento -INSERT INTO vn.item( - name, - longName, - `size`, - stems, - inkFk, - intrastatFk, - typeFk, - originFk) - SELECT - @r:= 'Paniculata', - @r, - 60, - 1, - 'SLV', - 6031970, - id, - 1 - FROM vn.itemType - WHERE code LIKE 'FNE'; - -SELECT LAST_INSERT_ID() INTO @itemFk; - -INSERT INTO floranet.`element` - SET itemFk = @itemFk; - -INSERT INTO floranet.builder( - itemFk, - elementFk, - quantity) - SELECT - id, - @itemFk, - 5 - FROM vn.item - WHERE name = 'Ramo Terranova'; - - - -- XXX SET foreign_key_checks = 1; From 45bcf8043f03cb4eea2a621abb5c59af38661e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Thu, 7 Mar 2024 19:03:57 +0100 Subject: [PATCH 059/456] feat: permissions to vn.entry.isBooked refs#6724 --- db/versions/10944-tealLaurel/00-firstScript.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 db/versions/10944-tealLaurel/00-firstScript.sql diff --git a/db/versions/10944-tealLaurel/00-firstScript.sql b/db/versions/10944-tealLaurel/00-firstScript.sql new file mode 100644 index 000000000..d11bcb333 --- /dev/null +++ b/db/versions/10944-tealLaurel/00-firstScript.sql @@ -0,0 +1,10 @@ + + REVOKE UPDATE ON vn.entry FROM entryEditor; + GRANT UPDATE ON vn.entry TO administrative; + + GRANT UPDATE (id, supplierFk, dated, invoiceNumber, isExcludedFromAvailable, + isConfirmed, isOrdered, isRaid,commission, created, evaNotes, travelFk, + currencyFk,companyFk, gestDocFk, invoiceInFk, isBlocked, loadPriority, + kop, sub, pro, auction, invoiceAmount, buyerFk, typeFk, reference, + observationEditorFk, clonedFrom, editorFk, lockerUserFk, locked + ) ON vn.entry TO entryEditor; From ae25ba3fb6b2d827de39345f41e18d9d8608ef02 Mon Sep 17 00:00:00 2001 From: pablone Date: Fri, 8 Mar 2024 13:44:19 +0100 Subject: [PATCH 060/456] feat(notify): refs #6005 add restriction on created notification time --- back/methods/notification/send.js | 2 +- .../back/methods/operator/spec/operator.spec.js | 2 -- .../backup-printer-selected.js | 13 ++++++++----- .../sql/previousNotifications.sql | 4 +++- .../sql/previousNotificationscopy.sql | 4 ---- 5 files changed, 12 insertions(+), 13 deletions(-) delete mode 100644 print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql diff --git a/back/methods/notification/send.js b/back/methods/notification/send.js index b2748477d..0232c59bd 100644 --- a/back/methods/notification/send.js +++ b/back/methods/notification/send.js @@ -67,7 +67,7 @@ module.exports = Self => { continue; } - const newParams = Object.assign({}, queueParams, sendParams); + const newParams = Object.assign({}, queueParams, sendParams, {created: queue.created}); const email = new Email(queueName, newParams); if (process.env.NODE_ENV != 'test') diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index a39fcf791..0a8fc5b5d 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -80,8 +80,6 @@ fdescribe('Operator', () => { console.log('lastNotification: ', lastNotification); - expect(1).toEqual('Is already Notified'); - await tx.rollback(); } catch (e) { await tx.rollback(); diff --git a/print/templates/email/backup-printer-selected/backup-printer-selected.js b/print/templates/email/backup-printer-selected/backup-printer-selected.js index 3578d0476..0e20ed0d8 100755 --- a/print/templates/email/backup-printer-selected/backup-printer-selected.js +++ b/print/templates/email/backup-printer-selected/backup-printer-selected.js @@ -5,7 +5,7 @@ const name = 'backup-printer-selected'; module.exports = { name: name, async serverPrefetch() { - const notifications = await this.rawSqlFromDef('previousNotifications', [name]); + const notifications = await this.rawSqlFromDef('previousNotifications', [name, this.created, this.created]); if (!notifications.length || checkDuplicates(notifications, this.labelerId, this.sectorId)) throw new Error('Previous notification sended with the same parameters'); @@ -32,18 +32,21 @@ module.exports = { workerId: { type: Number, required: true + }, + created: { + type: Date, + required: true } + } }; function checkDuplicates(notifications, labelerFk, printerFk) { - const criteria = { - labelerId: labelerFk, - sectorId: printerFk - }; + const criteria = {labelerId: labelerFk, sectorId: printerFk}; const filteredNotifications = notifications.filter(notification => { const paramsObj = JSON.parse(notification.params); return Object.keys(criteria).every(key => criteria[key] === paramsObj[key]); }); + return filteredNotifications.length > 1; } diff --git a/print/templates/email/backup-printer-selected/sql/previousNotifications.sql b/print/templates/email/backup-printer-selected/sql/previousNotifications.sql index 2e2a8b93f..312daacbb 100644 --- a/print/templates/email/backup-printer-selected/sql/previousNotifications.sql +++ b/print/templates/email/backup-printer-selected/sql/previousNotifications.sql @@ -2,4 +2,6 @@ SELECT nq.params, created, status FROM util.notificationQueue nq JOIN util.notification n ON n.name = nq.notificationFk WHERE n.name = ? - AND TIMESTAMPDIFF(SECOND, nq.created, util.VN_NOW()) <= n.delay \ No newline at end of file + AND nq.created BETWEEN ? - INTERVAL IFNULL(n.delay, 0) SECOND AND ? + AND nq.status <> 'error' + ORDER BY created \ No newline at end of file diff --git a/print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql b/print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql deleted file mode 100644 index f8f30e7f1..000000000 --- a/print/templates/email/backup-printer-selected/sql/previousNotificationscopy.sql +++ /dev/null @@ -1,4 +0,0 @@ -SELECT nq.params - FROM util.notificationQueue nq - JOIN util.notification n ON n.name = nq.notificationFk - WHERE n.name = ? \ No newline at end of file From 8815f078505f87c2765799d5d8fdb1b096dcd463 Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 11 Mar 2024 12:18:03 +0100 Subject: [PATCH 061/456] feat(spec): refs #6005 add spec to backup Notify --- back/methods/notification/getList.js | 1 - back/methods/notification/specs/send.spec.js | 32 +++++ .../methods/operator/spec/operator.spec.js | 124 ++++++++++++++---- 3 files changed, 129 insertions(+), 28 deletions(-) diff --git a/back/methods/notification/getList.js b/back/methods/notification/getList.js index 49e88e093..cd9cfcd1d 100644 --- a/back/methods/notification/getList.js +++ b/back/methods/notification/getList.js @@ -45,7 +45,6 @@ module.exports = Self => { }); availableNotificationsMap.delete(active.notificationFk); } - console.log(activeNotificationsMap); return { active: [...activeNotificationsMap.entries()], available: [...availableNotificationsMap.entries()] diff --git a/back/methods/notification/specs/send.spec.js b/back/methods/notification/specs/send.spec.js index f0b186e06..c506dc4b0 100644 --- a/back/methods/notification/specs/send.spec.js +++ b/back/methods/notification/specs/send.spec.js @@ -1,6 +1,38 @@ const models = require('vn-loopback/server/server').models; describe('Notification Send()', () => { + beforeAll(async() => { + await models.NotificationQueue.destroyAll(); + await models.NotificationQueue.create( + [ + { + id: 1, + params: '{"id": "1"}', + status: 'pending', + created: '2000-12-31T23:00:00.000Z', + notificationFk: 'print-email', + authorFk: 9 + }, + { + id: 2, + params: '{"id": "2"}', + status: 'pending', + created: '2000-12-31T23:00:00.000Z', + notificationFk: 'print-email', + authorFk: null + }, + { + id: 3, + params: null, + status: 'pending', + created: '2000-12-31T23:00:00.000Z', + notificationFk: 'print-email', + authorFk: null + } + ] + ); + }); + it('should send notification', async() => { const statusPending = 'pending'; const tx = await models.NotificationQueue.beginTransaction({}); diff --git a/modules/worker/back/methods/operator/spec/operator.spec.js b/modules/worker/back/methods/operator/spec/operator.spec.js index 0a8fc5b5d..39a473a38 100644 --- a/modules/worker/back/methods/operator/spec/operator.spec.js +++ b/modules/worker/back/methods/operator/spec/operator.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -fdescribe('Operator', () => { +describe('Operator', () => { const authorFk = 9; const sectorId = 1; const labeler = 1; @@ -13,6 +13,8 @@ fdescribe('Operator', () => { sectorFk: sectorId }; + const errorStatus = 'error'; + async function createOperator(labelerFk, options) { operator.labelerFk = labelerFk; await models.Operator.create(operator, options); @@ -62,31 +64,6 @@ fdescribe('Operator', () => { } }); - fit('should not create notification when is already notified by another worker', async() => { - const tx = await models.Operator.beginTransaction({}); - - try { - const options = {transaction: tx, accessToken: {userId: authorFk}}; - await models.NotificationQueue.create({ - authorFk: 1, - notificationFk: notificationName, - params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 10}), - created: Date.vnNow(), - }, options); - - await createOperator(labeler, options); - await models.Notification.send(options); - const lastNotification = await models.NotificationQueue.find({order: 'id DESC'}, options); - - console.log('lastNotification: ', lastNotification); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); - it('should create notification when delay is null', async() => { const tx = await models.Operator.beginTransaction({}); @@ -96,7 +73,7 @@ fdescribe('Operator', () => { await models.NotificationQueue.create({ authorFk: 1, notificationFk: notificationName, - params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 10}), + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 1}), created: Date.vnNow(), }, options); @@ -118,4 +95,97 @@ fdescribe('Operator', () => { throw e; } }); + + it('should not sent notification when is already notified by another worker', async() => { + await models.NotificationQueue.create({ + authorFk: 2, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 2}), + created: '2001-01-01 12:30:00', + }); + + await models.NotificationQueue.create({ + authorFk: 1, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 1}), + created: '2001-01-01 12:31:00', + }); + await models.Notification.send(); + + const lastNotification = await models.NotificationQueue.findOne({order: 'id DESC'}); + + await models.NotificationQueue.destroyAll({notificationFk: notificationName}); + + expect(lastNotification.status).toEqual(errorStatus); + }); + + it('should send a notification when the previous one is on errorStatus status', async() => { + await models.NotificationQueue.create({ + authorFk: 2, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 2}), + created: '2001-01-01 12:30:00', + status: errorStatus + }); + + await models.NotificationQueue.create({ + authorFk: 1, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 1}), + created: '2001-01-01 12:31:00', + }); + await models.Notification.send(); + + const lastNotification = await models.NotificationQueue.findOne({order: 'id DESC'}); + + await models.NotificationQueue.destroyAll({notificationFk: notificationName}); + + expect(lastNotification.status).toEqual('sent'); + }); + + it('should send a notification when the previous one has distinct params', async() => { + await models.NotificationQueue.create({ + authorFk: 2, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': 2, 'workerId': 1}), + created: '2001-01-01 12:30:00', + }); + + await models.NotificationQueue.create({ + authorFk: 1, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 1}), + created: '2001-01-01 12:31:00', + }); + await models.Notification.send(); + + const lastNotification = await models.NotificationQueue.findOne({order: 'id DESC'}); + + await models.NotificationQueue.destroyAll({notificationFk: notificationName}); + + expect(lastNotification.status).toEqual('sent'); + }); + + it('should respect de configured delay for the notification', async() => { + await models.NotificationQueue.create({ + authorFk: 2, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 2}), + created: '2001-01-01 12:30:00', + }); + + await models.NotificationQueue.create({ + authorFk: 1, + notificationFk: notificationName, + params: JSON.stringify({'labelerId': labeler, 'sectorId': sectorId, 'workerId': 1}), + created: '2001-01-01 13:29:00', + }); + await models.Notification.send(); + + const lastNotification = await models.NotificationQueue.findOne({order: 'id DESC'}); + + await models.NotificationQueue.destroyAll({notificationFk: notificationName}); + + expect(lastNotification.status).toEqual('error'); + }); }); From 421ca8654da847a07d3c80da645b2ddb9368712c Mon Sep 17 00:00:00 2001 From: pablone Date: Mon, 11 Mar 2024 13:39:03 +0100 Subject: [PATCH 062/456] fix(changes): refs #6005 remove changes files --- back/methods/notification/send.js | 2 +- db/changes/235201/00-printerChangeIdType.sql | 10 --------- db/changes/235201/01-printerChangeIdType.sql | 21 ------------------- .../235201/03-sectorBackUpLabelerFk.sql | 18 ---------------- .../backup-printer-selected.js | 10 ++++++--- 5 files changed, 8 insertions(+), 53 deletions(-) delete mode 100644 db/changes/235201/00-printerChangeIdType.sql delete mode 100644 db/changes/235201/01-printerChangeIdType.sql delete mode 100644 db/changes/235201/03-sectorBackUpLabelerFk.sql diff --git a/back/methods/notification/send.js b/back/methods/notification/send.js index 0232c59bd..ee3127631 100644 --- a/back/methods/notification/send.js +++ b/back/methods/notification/send.js @@ -67,7 +67,7 @@ module.exports = Self => { continue; } - const newParams = Object.assign({}, queueParams, sendParams, {created: queue.created}); + const newParams = Object.assign({}, queueParams, sendParams, {queueCreated: queue.created}); const email = new Email(queueName, newParams); if (process.env.NODE_ENV != 'test') diff --git a/db/changes/235201/00-printerChangeIdType.sql b/db/changes/235201/00-printerChangeIdType.sql deleted file mode 100644 index 759ac7939..000000000 --- a/db/changes/235201/00-printerChangeIdType.sql +++ /dev/null @@ -1,10 +0,0 @@ -ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY `packingSite_FK_4`; -ALTER TABLE `vn`.`arcRead` DROP FOREIGN KEY `worker_printer_FK`; -ALTER TABLE `vn`.`host` DROP FOREIGN KEY `configHost_FK`; -ALTER TABLE `vn`.`operator` DROP FOREIGN KEY `operator_FK_5`; -ALTER TABLE `vn`.`packingSite` DROP FOREIGN KEY `packingSite_FK_1`; -ALTER TABLE `vn`.`printQueue` DROP FOREIGN KEY `printQueue_printerFk`; -ALTER TABLE `vn`.`sector` DROP FOREIGN KEY `sector_FK_1`; -ALTER TABLE `vn`.`worker` DROP FOREIGN KEY `worker_FK`; - - diff --git a/db/changes/235201/01-printerChangeIdType.sql b/db/changes/235201/01-printerChangeIdType.sql deleted file mode 100644 index 3fd7d3798..000000000 --- a/db/changes/235201/01-printerChangeIdType.sql +++ /dev/null @@ -1,21 +0,0 @@ -ALTER TABLE `vn`.`printer` MODIFY COLUMN `id` int unsigned auto_increment NOT NULL; - -ALTER TABLE `vn`.`arcRead` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; -ALTER TABLE `vn`.`arcRead` ADD CONSTRAINT `arcRead_FK` FOREIGN KEY (printerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `vn`.`host` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; -ALTER TABLE `vn`.`host` ADD CONSTRAINT `host_FK` FOREIGN KEY (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE `vn`.`operator` MODIFY COLUMN `labelerFk` int unsigned DEFAULT NULL NULL; -ALTER TABLE `vn`.`operator` ADD CONSTRAINT `operator_FK_4` FOREIGN KEY (labelerFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `vn`.`packingSite` MODIFY COLUMN `printerRfidFk` int unsigned DEFAULT NULL NULL; -ALTER TABLE `vn`.`packingSite` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; -ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_1` FOREIGN KEY (printerFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE RESTRICT; -ALTER TABLE `vn`.`packingSite` ADD CONSTRAINT `packingSite_FK_4` FOREIGN KEY (printerRfidFk) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE `vn`.`printQueue` MODIFY COLUMN `printerFk` int unsigned DEFAULT NULL NULL; -ALTER TABLE `vn`.`printQueue` ADD CONSTRAINT `printQueue_FK` FOREIGN KEY (id) REFERENCES vn.printer(id) ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE `vn`.`sector` MODIFY COLUMN `mainPrinterFk` int unsigned DEFAULT NULL NULL; -ALTER TABLE `vn`.`sector` ADD CONSTRAINT `sector_FK` FOREIGN KEY (mainPrinterFk) REFERENCES vn.printer(id) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/db/changes/235201/03-sectorBackUpLabelerFk.sql b/db/changes/235201/03-sectorBackUpLabelerFk.sql deleted file mode 100644 index 8ca12e7e4..000000000 --- a/db/changes/235201/03-sectorBackUpLabelerFk.sql +++ /dev/null @@ -1,18 +0,0 @@ -ALTER TABLE `util`.`notification` ADD delay INT NULL - COMMENT 'Minimum Milliseconds Interval to Prevent Spam from Same-Type Notifications'; - -ALTER TABLE vn.sector DROP FOREIGN KEY sector_FK; - -ALTER TABLE `vn`.`sector` CHANGE `mainPrinterFk` `backupPrinterFk` int unsigned DEFAULT NULL NULL; - -ALTER TABLE `util`.`notificationSubscription` DROP FOREIGN KEY `notificationSubscription_ibfk_1`; -ALTER TABLE `util`.`notificationQueue` DROP FOREIGN KEY `nnotificationQueue_ibfk_1`; -ALTER TABLE `util`.`notificationAcl` DROP FOREIGN KEY `notificationAcl_ibfk_1`; - -ALTER TABLE `util`.`notification` MODIFY COLUMN `id` int(11) auto_increment NOT NULL; - -ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`name`) ON DELETE CASCADE ON UPDATE CASCADE; -ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_Fk` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; - - diff --git a/print/templates/email/backup-printer-selected/backup-printer-selected.js b/print/templates/email/backup-printer-selected/backup-printer-selected.js index 0e20ed0d8..edce70344 100755 --- a/print/templates/email/backup-printer-selected/backup-printer-selected.js +++ b/print/templates/email/backup-printer-selected/backup-printer-selected.js @@ -5,8 +5,12 @@ const name = 'backup-printer-selected'; module.exports = { name: name, async serverPrefetch() { - const notifications = await this.rawSqlFromDef('previousNotifications', [name, this.created, this.created]); - if (!notifications.length || checkDuplicates(notifications, this.labelerId, this.sectorId)) + const notifications = await this.rawSqlFromDef( + 'previousNotifications', + [name, this.queueCreated, this.queueCreated] + ); + + if (checkDuplicates(notifications, this.labelerId, this.sectorId)) throw new Error('Previous notification sended with the same parameters'); this.sector = await this.findOneFromDef('sector', [this.sectorId]); @@ -33,7 +37,7 @@ module.exports = { type: Number, required: true }, - created: { + queueCreated: { type: Date, required: true } From 5531639027138950a1b73565be11ce3162c858b3 Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 12 Mar 2024 09:34:12 +0100 Subject: [PATCH 063/456] feat: refs #6951 create procedure --- db/routines/vn/procedures/ticketClon.sql | 54 ++----------------- db/routines/vn/procedures/ticket_Clone.sql | 4 +- db/routines/vn/procedures/ticket_CloneAll.sql | 54 +++++++++++++++++++ 3 files changed, 61 insertions(+), 51 deletions(-) create mode 100644 db/routines/vn/procedures/ticket_CloneAll.sql diff --git a/db/routines/vn/procedures/ticketClon.sql b/db/routines/vn/procedures/ticketClon.sql index 81328bc11..00386c6aa 100644 --- a/db/routines/vn/procedures/ticketClon.sql +++ b/db/routines/vn/procedures/ticketClon.sql @@ -1,55 +1,11 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketClon`(vTicketFk INT, vNewShipped DATE) BEGIN - - DECLARE done INT DEFAULT FALSE; - DECLARE vNewTicketFk INT; - DECLARE vOldSaleFk INT; - DECLARE vNewSaleFk INT; - - DECLARE cur1 CURSOR FOR - SELECT id - FROM vn.sale - WHERE ticketFk = vTicketFk; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - SET vNewShipped = IFNULL(vNewShipped, util.VN_CURDATE()); - - CALL vn.ticket_Clone(vTicketFk, vNewTicketFk); - - UPDATE vn.ticket - SET landed = TIMESTAMPADD(DAY, DATEDIFF(vNewShipped, shipped), landed), - shipped = vNewShipped - WHERE id = vNewTicketFk; - - OPEN cur1; - - read_loop: LOOP - - FETCH cur1 INTO vOldSaleFk; - - IF done THEN - LEAVE read_loop; - END IF; - - INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed) - SELECT vNewTicketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed - FROM vn.sale - WHERE id = vOldSaleFk; - - SELECT max(id) INTO vNewSaleFk - FROM vn.sale - WHERE ticketFk = vNewTicketFk; - - INSERT INTO vn.saleComponent(saleFk, componentFk, value, isGreuge) - SELECT vNewSaleFk, componentFk, value, isGreuge - FROM vn.saleComponent - WHERE saleFk = vOldSaleFk; - - END LOOP; - CLOSE cur1; - + DECLARE vNewTicketFk INT; + + CALL ticket_CloneAll(vTicketFk, vNewShipped, TRUE, vNewTicketFk); + SELECT vNewTicketFk; + END$$ DELIMITER ; diff --git a/db/routines/vn/procedures/ticket_Clone.sql b/db/routines/vn/procedures/ticket_Clone.sql index 7670e832e..cdddd6225 100644 --- a/db/routines/vn/procedures/ticket_Clone.sql +++ b/db/routines/vn/procedures/ticket_Clone.sql @@ -1,5 +1,5 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_Clone`(vOriginalTicket INT, OUT vNewTicket INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_Clone`(vOriginalTicket INT, OUT vNewTicket INT,vWithWarehouse BOOLEAN) BEGIN /** * Clona el contenido de un ticket en otro @@ -32,7 +32,7 @@ BEGIN addressFk, agencyModeFk, nickname, - warehouseFk, + IF(vWithWarehouse, warehouseFk, NULL), companyFk, landed, zoneFk, diff --git a/db/routines/vn/procedures/ticket_CloneAll.sql b/db/routines/vn/procedures/ticket_CloneAll.sql new file mode 100644 index 000000000..4adb50a10 --- /dev/null +++ b/db/routines/vn/procedures/ticket_CloneAll.sql @@ -0,0 +1,54 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_CloneAll`(vTicketFk INT, vNewShipped DATE, vWithWarehouse BOOLEAN, OUT vNewTicketFk INT) +BEGIN + + DECLARE done INT DEFAULT FALSE; + DECLARE vOldSaleFk INT; + DECLARE vNewSaleFk INT; + + DECLARE cur1 CURSOR FOR + SELECT id + FROM vn.sale + WHERE ticketFk = vTicketFk; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + SET vNewShipped = IFNULL(vNewShipped, util.VN_CURDATE()); + + CALL vn.ticket_Clone(vTicketFk, vNewTicketFk, vWithWarehouse); + + UPDATE vn.ticket + SET landed = TIMESTAMPADD(DAY, DATEDIFF(vNewShipped, shipped), landed), + shipped = vNewShipped + WHERE id = vNewTicketFk; + + OPEN cur1; + + read_loop: LOOP + + FETCH cur1 INTO vOldSaleFk; + + IF done THEN + LEAVE read_loop; + END IF; + + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed) + SELECT vNewTicketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed + FROM vn.sale + WHERE id = vOldSaleFk; + + SELECT max(id) INTO vNewSaleFk + FROM vn.sale + WHERE ticketFk = vNewTicketFk; + + INSERT INTO vn.saleComponent(saleFk, componentFk, value, isGreuge) + SELECT vNewSaleFk, componentFk, value, isGreuge + FROM vn.saleComponent + WHERE saleFk = vOldSaleFk; + + END LOOP; + + CLOSE cur1; + +END$$ +DELIMITER ; From 10c2d25cbd0ad65163e140d6183e0711cfc891ad Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 12 Mar 2024 12:57:34 +0100 Subject: [PATCH 064/456] feat: refs #6492 create procedures & grant privileges --- db/dump/fixtures.before.sql | 26 +++++++- .../vn/procedures/addAccountConciliation.sql | 66 +++++++++++++++++++ db/routines/vn/procedures/agencyVolume.sql | 38 +++++++++++ .../00-addConciliationConfig.sql | 10 +++ .../01-addConciliationConfig.vn.sql | 2 + .../10948-azureSalal/02-grantPrivileges.sql | 6 ++ 6 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 db/routines/vn/procedures/addAccountConciliation.sql create mode 100644 db/routines/vn/procedures/agencyVolume.sql create mode 100644 db/versions/10948-azureSalal/00-addConciliationConfig.sql create mode 100644 db/versions/10948-azureSalal/01-addConciliationConfig.vn.sql create mode 100644 db/versions/10948-azureSalal/02-grantPrivileges.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 4ad007f5c..77439aaf3 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -3732,4 +3732,28 @@ UPDATE vn.saleTracking SET stateFk = 26 WHERE id = 5; INSERT INTO vn.report (name) VALUES ('LabelCollection'); INSERT INTO vn.parkingLog(originFk, userFk, `action`, creationDate, description, changedModel,oldInstance, newInstance, changedModelId, changedModelValue) - VALUES(1, 18, 'update', util.VN_CURDATE(), NULL, 'SaleGroup', '{"parkingFk":null}', '{"parkingFk":1}', 1, NULL); \ No newline at end of file + VALUES(1, 18, 'update', util.VN_CURDATE(), NULL, 'SaleGroup', '{"parkingFk":null}', '{"parkingFk":1}', 1, NULL); + +INSERT INTO `vn`.`accountReconciliation` ( + supplierAccountFk, + operationDated, + valueDated, + amount, + concept, + debitCredit, + calculatedCode, + created +) + VALUES + (241,'2023-12-13 00:00:00.000','2023-12-07 00:00:00.000',19.36,'BEL 1',1,'2','2023-12-14 08:39:53.000'), + (241,'2023-12-13 00:00:00.000','2023-12-07 00:00:00.000',30226.43,'BEL 2',1,'1','2023-12-14 08:39:53.000'), + (241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',118.81,'RCBO',1,'10','2023-12-14 08:39:53.000'), + (241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',150.03,'TJ',1,'12','2023-12-14 08:39:53.000'), + (241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',150.03,'TJ',1,'12','2023-12-14 08:39:53.000'), + (241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',2149.71,'RCBO.AMAZON',1,'122','2023-12-14 08:39:53.000'), + (241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',3210.5,'RCBO.VOLVO',1,'121','2023-12-14 08:39:53.000'), + (241,'2023-12-13 00:00:00.000','2023-12-13 00:00:00.000',6513.7,'RCBO.ENERPLUS',1,'120','2023-12-14 08:39:53.000'); + +INSERT INTO `vn`.`accountReconciliationConfig`(debitCredit, debitCredit2, currencyFk, warehouseFk) + VALUES + (1, 2, 1, 1); \ No newline at end of file diff --git a/db/routines/vn/procedures/addAccountConciliation.sql b/db/routines/vn/procedures/addAccountConciliation.sql new file mode 100644 index 000000000..0db018109 --- /dev/null +++ b/db/routines/vn/procedures/addAccountConciliation.sql @@ -0,0 +1,66 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`addAccountReconciliation`() +BEGIN +/** + * Updates duplicate records in the accountReconciliation table, + * by assigning them a new identifier and then inserts a new entry in the till table. + */ + UPDATE accountReconciliation ar + JOIN ( + SELECT id, + calculatedId, + CONCAT( + calculatedId, + '(', + ROW_NUMBER() OVER (PARTITION BY calculatedId ORDER BY id), + ')' + ) newId + FROM accountReconciliation + WHERE calculatedId IN ( + SELECT calculatedId + FROM accountReconciliation + GROUP BY calculatedId + HAVING COUNT(*) > 1 + ) + ORDER BY calculatedId, id + ) sub2 ON ar.id = sub2.id + SET ar.calculatedId = sub2.newId; + + INSERT INTO till( + dated, + isAccountable, + serie, + concept, + `in`, + `out`, + bankFk, + companyFk, + warehouseFk, + supplierAccountFk, + calculatedCode, + InForeignValue, + OutForeignValue, + workerFk + ) + SELECT ar.operationDate dated, + TRUE isAccountable, + 'MB' serie, + ar.concept concept, + @totalIn := IF(ar.debitCredit = arc.debitCredit2 AND a.currencyFk = arc.currencyFk, ar.amount, NULL) `in`, + @totalOut := IF(ar.debitCredit = arc.debitCredit AND a.currencyFk = arc.currencyFk, ar.amount, NULL) `out`, + a.id bankFk, + sa.supplierFk companyFk, + arc.warehouseFk warehouseFk, + ar.supplierAccountFk supplierAccountFk, + ar.calculatedId calculatedCode, + @totalIn InForeignValue, + @totalOut OutForeignValue, + account.myUser_getId() user + FROM accountReconciliation ar + JOIN supplierAccount sa ON sa.id = ar.supplierAccountFk + JOIN accounting a ON a.id = sa.accountingFk + LEFT JOIN till t ON t.calculatedCode = ar.calculatedId + JOIN accountReconciliationConfig arc + WHERE t.id IS NULL; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/procedures/agencyVolume.sql b/db/routines/vn/procedures/agencyVolume.sql new file mode 100644 index 000000000..2b92eae44 --- /dev/null +++ b/db/routines/vn/procedures/agencyVolume.sql @@ -0,0 +1,38 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyVolume`() +BEGIN +/** + * Calcula y presenta información sobre volúmenes de expediciones y empaques + * para agencias que no son propias durante un período específico. + */ + DECLARE vStarted DATETIME DEFAULT util.VN_CURDATE(); + DECLARE vEnded DATETIME DEFAULT util.dayEnd(util.VN_CURDATE()); + + SELECT ag.id agency_id, + CONCAT(RPAD(c.country, 16,' _') ,' ',ag.name) Agencia, + COUNT(*) expediciones, + SUM(t.packages) Bultos, + SUM(tpe.boxes) Faltan + FROM ticket t + JOIN warehouse w ON w.id = t.warehouseFk + JOIN country c ON w.countryFk = c.id + JOIN address a ON a.id = t.addressFk + JOIN agencyMode am ON am.id = t.agencyModeFk + JOIN agency ag ON ag.id = am.agencyFk + JOIN ( + SELECT sv.ticketFk, + CEIL(1000 * SUM(sv.volume) / vc.standardFlowerBox) + FROM ticket t + JOIN saleVolume sv ON sv.ticketFk = t.id + JOIN volumeConfig vc + WHERE t.shipped BETWEEN vStarted AND vEnded + AND (t.packages IS NULL OR NOT t.packages) + GROUP BY t.id + ) tpe ON tpe.ticketFk = t.id + WHERE t.shipped BETWEEN vStarted AND vEnded + AND NOT ag.isOwn + GROUP BY ag.id + ORDER BY Agencia; + +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/versions/10948-azureSalal/00-addConciliationConfig.sql b/db/versions/10948-azureSalal/00-addConciliationConfig.sql new file mode 100644 index 000000000..efb45b5fa --- /dev/null +++ b/db/versions/10948-azureSalal/00-addConciliationConfig.sql @@ -0,0 +1,10 @@ + CREATE OR REPLACE TABLE `vn`.`accountReconciliationConfig` ( + `id` INT AUTO_INCREMENT, + `debitCredit` INT(6), + `debitCredit2` INT(6), + `currencyFk` TINYINT(3) unsigned, + `warehouseFk` SMALLINT(6) unsigned, + PRIMARY KEY (`id`), + CONSTRAINT `account_fk_currency` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`), + CONSTRAINT `account_fk_warehouse` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; \ No newline at end of file diff --git a/db/versions/10948-azureSalal/01-addConciliationConfig.vn.sql b/db/versions/10948-azureSalal/01-addConciliationConfig.vn.sql new file mode 100644 index 000000000..db2e1ba0a --- /dev/null +++ b/db/versions/10948-azureSalal/01-addConciliationConfig.vn.sql @@ -0,0 +1,2 @@ +INSERT INTO `vn`.`accountReconciliationConfig`(debitCredit, debitCredit2, currencyFk, warehouseFk) + VALUES (1, 2, 1, 1); \ No newline at end of file diff --git a/db/versions/10948-azureSalal/02-grantPrivileges.sql b/db/versions/10948-azureSalal/02-grantPrivileges.sql new file mode 100644 index 000000000..0e786e3e4 --- /dev/null +++ b/db/versions/10948-azureSalal/02-grantPrivileges.sql @@ -0,0 +1,6 @@ +REVOKE EXECUTE ON PROCEDURE `agencia_volume` FROM `agency`; +GRANT EXECUTE ON PROCEDURE `agencyVolume` TO `agency`; + +REVOKE EXECUTE ON PROCEDURE `account_conciliacion_add` FROM `financial`; +GRANT EXECUTE ON PROCEDURE `addAccountConciliation` TO `financial`; + From 9e596e65256cef5de94b5ea2401f41c56b647ce7 Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 12 Mar 2024 15:27:09 +0100 Subject: [PATCH 065/456] fix: refs #6492 file names --- ...ciliation.sql => addAccountReconciliation.sql} | 0 db/routines/vn/procedures/agencyVolume.sql | 4 ++-- ...nConfig.sql => 00-addReconciliationConfig.sql} | 0 ...g.vn.sql => 01-addReconciliationConfig.vn.sql} | 0 .../10948-azureSalal/02-grantPrivileges.sql | 15 +++++++++++---- 5 files changed, 13 insertions(+), 6 deletions(-) rename db/routines/vn/procedures/{addAccountConciliation.sql => addAccountReconciliation.sql} (100%) rename db/versions/10948-azureSalal/{00-addConciliationConfig.sql => 00-addReconciliationConfig.sql} (100%) rename db/versions/10948-azureSalal/{01-addConciliationConfig.vn.sql => 01-addReconciliationConfig.vn.sql} (100%) diff --git a/db/routines/vn/procedures/addAccountConciliation.sql b/db/routines/vn/procedures/addAccountReconciliation.sql similarity index 100% rename from db/routines/vn/procedures/addAccountConciliation.sql rename to db/routines/vn/procedures/addAccountReconciliation.sql diff --git a/db/routines/vn/procedures/agencyVolume.sql b/db/routines/vn/procedures/agencyVolume.sql index 2b92eae44..295ae50ae 100644 --- a/db/routines/vn/procedures/agencyVolume.sql +++ b/db/routines/vn/procedures/agencyVolume.sql @@ -2,8 +2,8 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyVolume`() BEGIN /** - * Calcula y presenta información sobre volúmenes de expediciones y empaques - * para agencias que no son propias durante un período específico. + * Calculates and presents information on shipment and packaging volumes + * for agencies that are not owned for a specific period. */ DECLARE vStarted DATETIME DEFAULT util.VN_CURDATE(); DECLARE vEnded DATETIME DEFAULT util.dayEnd(util.VN_CURDATE()); diff --git a/db/versions/10948-azureSalal/00-addConciliationConfig.sql b/db/versions/10948-azureSalal/00-addReconciliationConfig.sql similarity index 100% rename from db/versions/10948-azureSalal/00-addConciliationConfig.sql rename to db/versions/10948-azureSalal/00-addReconciliationConfig.sql diff --git a/db/versions/10948-azureSalal/01-addConciliationConfig.vn.sql b/db/versions/10948-azureSalal/01-addReconciliationConfig.vn.sql similarity index 100% rename from db/versions/10948-azureSalal/01-addConciliationConfig.vn.sql rename to db/versions/10948-azureSalal/01-addReconciliationConfig.vn.sql diff --git a/db/versions/10948-azureSalal/02-grantPrivileges.sql b/db/versions/10948-azureSalal/02-grantPrivileges.sql index 0e786e3e4..d6853f759 100644 --- a/db/versions/10948-azureSalal/02-grantPrivileges.sql +++ b/db/versions/10948-azureSalal/02-grantPrivileges.sql @@ -1,6 +1,13 @@ -REVOKE EXECUTE ON PROCEDURE `agencia_volume` FROM `agency`; -GRANT EXECUTE ON PROCEDURE `agencyVolume` TO `agency`; +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`agencyVolume`() +BEGIN +END; -REVOKE EXECUTE ON PROCEDURE `account_conciliacion_add` FROM `financial`; -GRANT EXECUTE ON PROCEDURE `addAccountConciliation` TO `financial`; +REVOKE EXECUTE ON PROCEDURE `vn2008`.`agencia_volume` FROM `agency`; +GRANT EXECUTE ON PROCEDURE `vn`.`agencyVolume` TO `agency`; +CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`addAccountReconciliation`() +BEGIN +END; + +REVOKE EXECUTE ON PROCEDURE `vn2008`.`account_conciliacion_add` FROM `financial`; +GRANT EXECUTE ON PROCEDURE `vn`.`addAccountReconciliation` TO `financial`; From a6de9fd370899d82e3e391a9bac8a83a6182c777 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 13 Mar 2024 07:19:06 +0100 Subject: [PATCH 066/456] feat: refs #6738 modificar a nombres propuestos --- db/routines/vn2008/views/Proveedores_cargueras.sql | 2 +- db/routines/vn2008/views/Tramos.sql | 2 +- db/versions/10930-wheatDendro/01-Tramos.sql | 4 ++-- db/versions/10930-wheatDendro/03-Proveedores_cargueras.sql | 4 ++-- db/versions/10930-wheatDendro/04-Permisos.sql | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/db/routines/vn2008/views/Proveedores_cargueras.sql b/db/routines/vn2008/views/Proveedores_cargueras.sql index 51a02556a..c1dc6ad23 100644 --- a/db/routines/vn2008/views/Proveedores_cargueras.sql +++ b/db/routines/vn2008/views/Proveedores_cargueras.sql @@ -2,4 +2,4 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn2008`.`Proveedores_cargueras` AS SELECT `fs`.`supplierFk` AS `Id_Proveedor` -FROM `vn`.`freightSupplier` `fs` +FROM `vn`.`supplierFreight` `fs` diff --git a/db/routines/vn2008/views/Tramos.sql b/db/routines/vn2008/views/Tramos.sql index 47a2cb653..6919a610b 100644 --- a/db/routines/vn2008/views/Tramos.sql +++ b/db/routines/vn2008/views/Tramos.sql @@ -3,4 +3,4 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` VIEW `vn2008`.`Tramos` AS SELECT `s`.`id` AS `id`, `s`.`section` AS `Tramo` -FROM `vn`.`section` `s` \ No newline at end of file +FROM `vn`.`timeSlots` `s` \ No newline at end of file diff --git a/db/versions/10930-wheatDendro/01-Tramos.sql b/db/versions/10930-wheatDendro/01-Tramos.sql index ad8e2f9c4..595aa5dcb 100644 --- a/db/versions/10930-wheatDendro/01-Tramos.sql +++ b/db/versions/10930-wheatDendro/01-Tramos.sql @@ -1,5 +1,5 @@ -- Place your SQL code here -ALTER TABLE IF EXISTS `vn2008`.`Tramos` RENAME `vn`.`section`; +ALTER TABLE IF EXISTS `vn2008`.`Tramos` RENAME `vn`.`timeSlots`; -ALTER TABLE IF EXISTS `vn`.`section` +ALTER TABLE IF EXISTS `vn`.`timeSlots` CHANGE COLUMN IF EXISTS `Tramo` `section` time NOT NULL; \ No newline at end of file diff --git a/db/versions/10930-wheatDendro/03-Proveedores_cargueras.sql b/db/versions/10930-wheatDendro/03-Proveedores_cargueras.sql index 0de477f88..148174215 100644 --- a/db/versions/10930-wheatDendro/03-Proveedores_cargueras.sql +++ b/db/versions/10930-wheatDendro/03-Proveedores_cargueras.sql @@ -1,5 +1,5 @@ -- Place your SQL code here -ALTER TABLE IF EXISTS `vn2008`.`Proveedores_cargueras` RENAME `vn`.`freightSupplier`; +ALTER TABLE IF EXISTS `vn2008`.`Proveedores_cargueras` RENAME `vn`.`supplierFreight`; -ALTER TABLE IF EXISTS `vn`.`freightSupplier` +ALTER TABLE IF EXISTS `vn`.`supplierFreight` CHANGE COLUMN IF EXISTS `Id_Proveedor` `supplierFk` int(10) unsigned NOT NULL; \ No newline at end of file diff --git a/db/versions/10930-wheatDendro/04-Permisos.sql b/db/versions/10930-wheatDendro/04-Permisos.sql index a7defb75f..0c445755b 100644 --- a/db/versions/10930-wheatDendro/04-Permisos.sql +++ b/db/versions/10930-wheatDendro/04-Permisos.sql @@ -4,7 +4,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SELECT 1; GRANT SELECT ON TABLE vn2008.Tramos TO `employee`; -GRANT SELECT ON TABLE vn.section TO `employee`; +GRANT SELECT ON TABLE vn.timeSlots TO `employee`; CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER @@ -12,4 +12,4 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SELECT 1; GRANT SELECT ON TABLE vn2008.Proveedores_cargueras TO `buyer`; -GRANT SELECT ON TABLE vn.freightSupplier TO `buyer`; \ No newline at end of file +GRANT SELECT ON TABLE vn.supplierFreight TO `buyer`; \ No newline at end of file From ff459ea3be23e076474551f90d18a0fdaf158e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 13 Mar 2024 12:18:43 +0100 Subject: [PATCH 067/456] fix: closeTicket idem salix refs #6549 --- db/routines/vn/procedures/invoiceOut_new.sql | 9 ++- .../10949-limeLaurel/00-firstScript.sql | 5 ++ .../ticket/back/methods/ticket/closeAll.js | 67 +++++++++++++++++++ .../assets/css/import.js | 11 +++ .../invoice-ticket-closure.html | 13 ++++ .../invoice-ticket-closure.js | 19 ++++++ .../invoice-ticket-closure/locale/en.yml | 5 ++ .../invoice-ticket-closure/locale/es.yml | 4 ++ 8 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 db/versions/10949-limeLaurel/00-firstScript.sql create mode 100644 print/templates/email/invoice-ticket-closure/assets/css/import.js create mode 100644 print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html create mode 100644 print/templates/email/invoice-ticket-closure/invoice-ticket-closure.js create mode 100644 print/templates/email/invoice-ticket-closure/locale/en.yml create mode 100644 print/templates/email/invoice-ticket-closure/locale/es.yml diff --git a/db/routines/vn/procedures/invoiceOut_new.sql b/db/routines/vn/procedures/invoiceOut_new.sql index 8c35ce75f..1b486df86 100644 --- a/db/routines/vn/procedures/invoiceOut_new.sql +++ b/db/routines/vn/procedures/invoiceOut_new.sql @@ -68,16 +68,21 @@ BEGIN DELETE ti.* FROM tmp.ticketToInvoice ti JOIN ticket t ON t.id = ti.id + LEFT JOIN address a ON a.id = t.addressFk JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk JOIN supplier su ON su.id = t.companyFk JOIN client c ON c.id = t.clientFk - LEFT JOIN itemTaxCountry itc ON itc.itemFk = i.id AND itc.countryFk = su.countryFk + LEFT JOIN itemTaxCountry itc ON itc.itemFk = i.id + AND itc.countryFk = su.countryFk WHERE (YEAR(t.shipped) < 2001 AND t.isDeleted) OR c.isTaxDataChecked = FALSE OR t.isDeleted OR c.hasToInvoice = FALSE - OR itc.id IS NULL; + OR itc.id IS NULL + OR a.id IS NULL + OR (vTaxArea = 'WORLD' + AND (a.customsAgentFk IS NULL OR a.incotermsFk IS NULL)); SELECT SUM(s.quantity * s.price * (100 - s.discount)/100) <> 0 INTO vIsAnySaleToInvoice diff --git a/db/versions/10949-limeLaurel/00-firstScript.sql b/db/versions/10949-limeLaurel/00-firstScript.sql new file mode 100644 index 000000000..0e2fdaf0c --- /dev/null +++ b/db/versions/10949-limeLaurel/00-firstScript.sql @@ -0,0 +1,5 @@ +INSERT INTO util.notification (id, name, description) + SELECT MAX(id) + 1, + 'invoice-ticket-closure', + 'Tickets not invoiced during the nightly closure ticket process' + FROM util.notification; diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js index 46c45aa92..829889e9c 100644 --- a/modules/ticket/back/methods/ticket/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -58,6 +58,73 @@ module.exports = Self => { GROUP BY t.id `, [toDate, toDate]); + await Self.rawSql(` + WITH ticketNotInvoiceable AS( + SELECT JSON_OBJECT( + 'tickets', + JSON_ARRAYAGG( + JSON_OBJECT( + 'ticketId', ticketFk, + 'reason', + LEFT(reason,LENGTH(reason) - 2) + ) + ))errors + FROM ( + SELECT ticketFk, + CONCAT_WS('', + IF(hasErrorToInvoice, 'Facturar, ', ''), + IF(hasErrorTaxDataChecked, 'Datos comprobados, ', ''), + IF(hasErrorDeleted, 'Eliminado, ', ''), + IF(hasErrorItemTaxCountry, 'Impuesto no informado, ', ''), + IF(hasErrorAddress, 'Sin dirección, ', ''), + IF(hasErrorInfoTaxAreaWorld, 'Datos exportaciones, ', '')) reason + FROM ( + SELECT t.id ticketFk, + SUM(NOT c.hasToInvoice) hasErrorToInvoice, + SUM(NOT c.isTaxDataChecked) hasErrorTaxDataChecked, + SUM(t.isDeleted) hasErrorDeleted, + SUM(itc.id IS NULL) hasErrorItemTaxCountry, + SUM(a.id IS NULL) hasErrorAddress, + SUM(ios.code IS NOT NULL + AND(ad.customsAgentFk IS NULL + OR ad.incotermsFk IS NULL)) hasErrorInfoTaxAreaWorld + FROM ticket t + LEFT JOIN address ad ON ad.id = t.addressFk + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + JOIN supplier su ON su.id = t.companyFk + JOIN agencyMode am ON am.id = t.agencyModeFk + JOIN warehouse wh ON wh.id = t.warehouseFk AND wh.hasComission + JOIN ticketState ts ON ts.ticketFk = t.id + JOIN alertLevel al ON al.id = ts.alertLevel + JOIN client c ON c.id = t.clientFk + JOIN province p ON p.id = c.provinceFk + LEFT JOIN autonomy a ON a.id = p.autonomyFk + JOIN country co ON co.id = p.countryFk + LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk + LEFT JOIN itemTaxCountry itc ON itc.itemFk = i.id + AND itc.countryFk = su.countryFk + LEFT JOIN vn.invoiceOutSerial ios ON ios.taxAreaFk = 'WORLD' + AND ios.code = invoiceSerial(t.clientFk, t.companyFk, 'M') + WHERE (al.code = 'PACKED' + OR (am.code = 'refund' AND al.code != 'delivered')) + AND DATE(t.shipped) BETWEEN DATE_ADD(?, INTERVAL -2 DAY) AND util.dayEnd(?) + AND t.refFk IS NULL + AND IFNULL(a.hasDailyInvoice, co.hasDailyInvoice) + GROUP BY ticketFk + HAVING hasErrorToInvoice + OR NOT hasErrorTaxDataChecked + OR hasErrorDeleted + OR hasErrorItemTaxCountry + OR hasErrorAddress + OR hasErrorInfoTaxAreaWorld + )sub + )sub2 + ) SELECT IF(errors = '{"tickets": null}', + 'No errors', + util.notification_send('invoice-ticket-closure', errors, NULL)) + FROM ticketNotInvoiceable`, [toDate, toDate]); + await closure(ctx, Self, tickets); await Self.rawSql(` diff --git a/print/templates/email/invoice-ticket-closure/assets/css/import.js b/print/templates/email/invoice-ticket-closure/assets/css/import.js new file mode 100644 index 000000000..4b4bb7086 --- /dev/null +++ b/print/templates/email/invoice-ticket-closure/assets/css/import.js @@ -0,0 +1,11 @@ +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); + +module.exports = new Stylesheet([ + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/email.css`]) + .mergeStyles(); diff --git a/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html b/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html new file mode 100644 index 000000000..051fa2cf8 --- /dev/null +++ b/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.html @@ -0,0 +1,13 @@ + +
+
+

{{ $t('title') }} {{ $t('total') }}: {{tickets.length}}

+
+
+
+

{{ $t('ticketId') }}: {{ticket.ticketId}}

+

{{ $t('description') }}: {{ticket.description}}

+
+
+
+
\ No newline at end of file diff --git a/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.js b/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.js new file mode 100644 index 000000000..6d12aa247 --- /dev/null +++ b/print/templates/email/invoice-ticket-closure/invoice-ticket-closure.js @@ -0,0 +1,19 @@ +const Component = require(`vn-print/core/component`); +const emailBody = new Component(); + +module.exports = { + name: 'invoice-ticket-closure', + components: { + 'email-body': emailBody.build(), + }, + props: { + ticketId: { + type: Number, + required: true + }, + description: { + type: String, + required: true + } + } +}; diff --git a/print/templates/email/invoice-ticket-closure/locale/en.yml b/print/templates/email/invoice-ticket-closure/locale/en.yml new file mode 100644 index 000000000..70345dc81 --- /dev/null +++ b/print/templates/email/invoice-ticket-closure/locale/en.yml @@ -0,0 +1,5 @@ + +subject: Nightly ticket closing process report +title: Nightly ticket closing process report +description: Description +ticketId: Ticket No \ No newline at end of file diff --git a/print/templates/email/invoice-ticket-closure/locale/es.yml b/print/templates/email/invoice-ticket-closure/locale/es.yml new file mode 100644 index 000000000..e21332f1b --- /dev/null +++ b/print/templates/email/invoice-ticket-closure/locale/es.yml @@ -0,0 +1,4 @@ +subject: Informe proceso de cierre de tickets nocturno +title: Informe proceso de cierre de tickets nocturno +description: Descripción +ticketId: Ticket nº \ No newline at end of file From 0413707061d32326a92e868b53f40dcb02d2a79d Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 13 Mar 2024 12:50:27 +0100 Subject: [PATCH 068/456] feat: refs #6738 --- db/dump/fixtures.after.sql | 18 +++++++++--------- db/routines/vn2008/views/payrollWorker.sql | 6 ++++++ db/routines/vn2008/views/payroll_centros.sql | 6 ++++++ db/routines/vn2008/views/payroll_conceptos.sql | 9 +++++++++ .../10930-wheatDendro/04-payroll_employee.sql | 13 +++++++++++++ .../10930-wheatDendro/05-payroll_centros.sql | 13 +++++++++++++ .../10930-wheatDendro/06-payroll_conceptos.sql | 6 ++++++ .../{04-Permisos.sql => 07-Permisos.sql} | 0 8 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 db/routines/vn2008/views/payrollWorker.sql create mode 100644 db/routines/vn2008/views/payroll_centros.sql create mode 100644 db/routines/vn2008/views/payroll_conceptos.sql create mode 100644 db/versions/10930-wheatDendro/04-payroll_employee.sql create mode 100644 db/versions/10930-wheatDendro/05-payroll_centros.sql create mode 100644 db/versions/10930-wheatDendro/06-payroll_conceptos.sql rename db/versions/10930-wheatDendro/{04-Permisos.sql => 07-Permisos.sql} (100%) diff --git a/db/dump/fixtures.after.sql b/db/dump/fixtures.after.sql index bda625a96..3d5fbfa90 100644 --- a/db/dump/fixtures.after.sql +++ b/db/dump/fixtures.after.sql @@ -156,16 +156,16 @@ INSERT INTO `vn`.`occupationCode` (`code`, `name`) ('b', 'Representantes de comercio'), ('c', 'Personal de oficios en trabajos de construcción en general, y en instalac.,edificios y obras'); -INSERT INTO `vn2008`.`payroll_employee` (`CodTrabajador`,`nss`,`codpuesto`,`codempresa`,`codcontrato`,`FAntiguedad`,`grupotarifa`,`codcategoria`,`ContratoTemporal`) +INSERT INTO `vn2008`.`payroll_employee` (`CodTrabajador`,`codempresa`) VALUES - (36,'46/10515497-58',6,20,189,'2009-01-02',5,10,0), - (43,'46/10235353-50',7,20,189,'2009-04-21',5,10,0), - (76,'46/10250562-30',1,20,189,'2009-09-07',9,5,0), - (1106,'46/10297768-94',4,20,100,'2021-03-09',7,18,0), - (1107,'46/1627085-11',15,20,402,'2021-03-15',9,6,1), - (1108,'46/10446901-41',25,20,502,'2021-03-22',10,29,1), - (1109,'46/10552113-8',3,20,402,'2021-03-23',9,9,1), - (1110,'46/10723579-75',3,20,402,'2021-03-23',9,9,1); + (36,20), + (43,20), + (76,20), + (1106,20), + (1107,20), + (1108,20), + (1109,20), + (1110,20); INSERT INTO `vn`.`trainingCourseType` (`id`, `name`) VALUES diff --git a/db/routines/vn2008/views/payrollWorker.sql b/db/routines/vn2008/views/payrollWorker.sql new file mode 100644 index 000000000..83ba02ecf --- /dev/null +++ b/db/routines/vn2008/views/payrollWorker.sql @@ -0,0 +1,6 @@ +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`payroll_employee` +AS SELECT `pw`.`workerCodeFk` AS `CodTrabajador`, + `pw`.`companyCodeFk` AS `codempresa` +FROM `vn`.`payrollWorker` `pw` diff --git a/db/routines/vn2008/views/payroll_centros.sql b/db/routines/vn2008/views/payroll_centros.sql new file mode 100644 index 000000000..b7e162f90 --- /dev/null +++ b/db/routines/vn2008/views/payroll_centros.sql @@ -0,0 +1,6 @@ +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`payroll_centros` +AS SELECT `pwc`.`workCenterFkA3` AS `cod_centro`, + `pwc`.`companyFkA3` AS `codempresa` +FROM `vn`.`payrollWorkCenter` `pwc` diff --git a/db/routines/vn2008/views/payroll_conceptos.sql b/db/routines/vn2008/views/payroll_conceptos.sql new file mode 100644 index 000000000..54be27d0b --- /dev/null +++ b/db/routines/vn2008/views/payroll_conceptos.sql @@ -0,0 +1,9 @@ +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`payroll_conceptos` +AS SELECT `pc`.`id` AS `conceptoid`, + `pc`.`concept` AS `concepto`, + `pc`.`isSalaryAgreed` AS `isSalaryAgreed`, + `pc`.`isVariable` AS `isVariable`, + `pc`.`isException` AS `isException` +FROM `vn`.`payrollComponent` `pc` diff --git a/db/versions/10930-wheatDendro/04-payroll_employee.sql b/db/versions/10930-wheatDendro/04-payroll_employee.sql new file mode 100644 index 000000000..2e128ff59 --- /dev/null +++ b/db/versions/10930-wheatDendro/04-payroll_employee.sql @@ -0,0 +1,13 @@ +-- Place your SQL code here +ALTER TABLE IF EXISTS `vn2008`.`payroll_employee` RENAME `vn`.`payrollWorker`; + +ALTER TABLE IF EXISTS `vn`.`payrollWorker` +CHANGE COLUMN IF EXISTS `CodTrabajador` `workerCodeFk` int(11) NOT NULL, +CHANGE COLUMN IF EXISTS `nss` `nss__` varchar(23) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `codpuesto` `codpuesto__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `codempresa` `companyCodeFk` int(10) NOT NULL, +CHANGE COLUMN IF EXISTS `codcontrato` `codcontrato__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `FAntiguedad` `FAntiguedad__` date NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `grupotarifa` `grupotarifa__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `codcategoria` `codcategoria__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `ContratoTemporal` `ContratoTemporal__` tinyint(1) NOT NULL DEFAULT 0 COMMENT '@Deprecated refs #6738 15/03/2024'; \ No newline at end of file diff --git a/db/versions/10930-wheatDendro/05-payroll_centros.sql b/db/versions/10930-wheatDendro/05-payroll_centros.sql new file mode 100644 index 000000000..4911c8707 --- /dev/null +++ b/db/versions/10930-wheatDendro/05-payroll_centros.sql @@ -0,0 +1,13 @@ +-- Place your SQL code here +ALTER TABLE IF EXISTS `vn2008`.`payroll_centros` RENAME `vn`.`payrollWorkCenter`; + +ALTER TABLE IF EXISTS `vn`.`payrollWorkCenter` +CHANGE COLUMN IF EXISTS `cod_centro` `workCenterFkA3` int(11) NOT NULL COMMENT 'Columna que hace referencia a A3.', +CHANGE COLUMN IF EXISTS `Centro` `Centro__` varchar(255) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `nss_cotizacion` `nss_cotizacion__` varchar(15) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `domicilio` `domicilio__` varchar(255) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `poblacion` `poblacion__` varchar(45) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `cp` `cp__` varchar(5) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `empresa_id` `empresa_id__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', +CHANGE COLUMN IF EXISTS `codempresa` `companyFkA3` int(11) DEFAULT NULL COMMENT 'Columna que hace referencia a A3.'; +; \ No newline at end of file diff --git a/db/versions/10930-wheatDendro/06-payroll_conceptos.sql b/db/versions/10930-wheatDendro/06-payroll_conceptos.sql new file mode 100644 index 000000000..45ab7a374 --- /dev/null +++ b/db/versions/10930-wheatDendro/06-payroll_conceptos.sql @@ -0,0 +1,6 @@ +-- Place your SQL code here +ALTER TABLE IF EXISTS `vn2008`.`payroll_conceptos` RENAME `vn`.`payrollComponent`; + +ALTER TABLE IF EXISTS `vn`.`payrollComponent` +CHANGE COLUMN IF EXISTS `conceptoid` `id` int(11) NOT NULL, +CHANGE COLUMN IF EXISTS `concepto` `concept` varchar(255) DEFAULT NULL; \ No newline at end of file diff --git a/db/versions/10930-wheatDendro/04-Permisos.sql b/db/versions/10930-wheatDendro/07-Permisos.sql similarity index 100% rename from db/versions/10930-wheatDendro/04-Permisos.sql rename to db/versions/10930-wheatDendro/07-Permisos.sql From 2d9a106fabafddcdf2681d6550ad20698a00e570 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 13 Mar 2024 12:59:45 +0100 Subject: [PATCH 069/456] feat: refs #6738 premisos --- db/versions/10930-wheatDendro/07-Permisos.sql | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/db/versions/10930-wheatDendro/07-Permisos.sql b/db/versions/10930-wheatDendro/07-Permisos.sql index 0c445755b..5a3dc1413 100644 --- a/db/versions/10930-wheatDendro/07-Permisos.sql +++ b/db/versions/10930-wheatDendro/07-Permisos.sql @@ -12,4 +12,29 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SELECT 1; GRANT SELECT ON TABLE vn2008.Proveedores_cargueras TO `buyer`; -GRANT SELECT ON TABLE vn.supplierFreight TO `buyer`; \ No newline at end of file +GRANT SELECT ON TABLE vn.supplierFreight TO `buyer`; + +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`payroll_employee` AS +SELECT 1; + +GRANT SELECT,INSERT ON TABLE vn2008.payroll_employee TO `hr`; +GRANT SELECT,INSERT ON TABLE vn.payrollWorker TO `hr`; + + +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`payroll_centros` AS +SELECT 1; + +GRANT SELECT ON TABLE vn2008.payroll_centros TO `hr`; +GRANT SELECT ON TABLE vn.payrollWorkCenter TO `hr`; + +CREATE OR REPLACE DEFINER=`root`@`localhost` + SQL SECURITY DEFINER + VIEW `vn2008`.`payroll_conceptos` AS +SELECT 1; + +GRANT SELECT,UPDATE ON TABLE vn2008.payroll_conceptos TO `hr`; +GRANT SELECT,UPDATE ON TABLE vn.payrollComponent TO `hr`; \ No newline at end of file From 052acdcc0874f36b2e5e1913eca080c243a75126 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 13 Mar 2024 13:20:14 +0100 Subject: [PATCH 070/456] feat: refs #7029 packaging --- db/versions/10950-greenArborvitae/00-firstScript.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 db/versions/10950-greenArborvitae/00-firstScript.sql diff --git a/db/versions/10950-greenArborvitae/00-firstScript.sql b/db/versions/10950-greenArborvitae/00-firstScript.sql new file mode 100644 index 000000000..e8d4e31f2 --- /dev/null +++ b/db/versions/10950-greenArborvitae/00-firstScript.sql @@ -0,0 +1,3 @@ +-- Place your SQL code here +ALTER TABLE vn.packaging +MODIFY COLUMN volume decimal(10,2) CHECK (volume >= COALESCE(width, 1) * COALESCE(depth, 1) * COALESCE(height, 1)); From 25f979156ade5b2fe7afe9fcd103f0a2fe183c1c Mon Sep 17 00:00:00 2001 From: Pako Date: Wed, 13 Mar 2024 14:00:59 +0100 Subject: [PATCH 071/456] nuevo url para catalogue y sliders_get --- .../floranet/procedures/catalogue_get.sql | 2 +- ...ontact_Request.sql => contact_request.sql} | 4 ++-- .../floranet/procedures/sliders_get.sql | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) rename db/routines/floranet/procedures/{contact_Request.sql => contact_request.sql} (68%) create mode 100644 db/routines/floranet/procedures/sliders_get.sql diff --git a/db/routines/floranet/procedures/catalogue_get.sql b/db/routines/floranet/procedures/catalogue_get.sql index 914b5d27f..b6ec61522 100644 --- a/db/routines/floranet/procedures/catalogue_get.sql +++ b/db/routines/floranet/procedures/catalogue_get.sql @@ -36,7 +36,7 @@ BEGIN vLanded, vPostalCode, it.name, - i.image, + CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image), i.description FROM vn.item i JOIN vn.itemType it ON it.id = i.typeFk diff --git a/db/routines/floranet/procedures/contact_Request.sql b/db/routines/floranet/procedures/contact_request.sql similarity index 68% rename from db/routines/floranet/procedures/contact_Request.sql rename to db/routines/floranet/procedures/contact_request.sql index 7673c2203..044c22c6f 100644 --- a/db/routines/floranet/procedures/contact_Request.sql +++ b/db/routines/floranet/procedures/contact_request.sql @@ -1,9 +1,9 @@ -DROP PROCEDURE IF EXISTS floranet.contact_Request; +DROP PROCEDURE IF EXISTS floranet.contact_request; DELIMITER $$ $$ CREATE DEFINER=`root`@`localhost` -PROCEDURE floranet.contact_Request( +PROCEDURE floranet.contact_request( vName VARCHAR(100), vPhone VARCHAR(15), vEmail VARCHAR(100), diff --git a/db/routines/floranet/procedures/sliders_get.sql b/db/routines/floranet/procedures/sliders_get.sql new file mode 100644 index 000000000..2f77b8534 --- /dev/null +++ b/db/routines/floranet/procedures/sliders_get.sql @@ -0,0 +1,19 @@ +DROP PROCEDURE IF EXISTS floranet.sliders_get; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.sliders_get() +READS SQL DATA +BEGIN +/** + * Returns list of url for sliders + */ + SELECT + CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image) url, + i.longName + FROM vn.item i + JOIN vn.itemType it ON it.id = i.typeFk + WHERE it.code IN ('FNR','FNP'); + +END$$ +DELIMITER ; \ No newline at end of file From fad30eb56d2e1e15eabbcb1c7cc828907272ea0d Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 13 Mar 2024 14:08:14 +0100 Subject: [PATCH 072/456] feat: refs #6738 --- db/versions/10930-wheatDendro/04-payroll_employee.sql | 4 ++-- db/versions/10930-wheatDendro/06-payroll_conceptos.sql | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/db/versions/10930-wheatDendro/04-payroll_employee.sql b/db/versions/10930-wheatDendro/04-payroll_employee.sql index 2e128ff59..538c636f4 100644 --- a/db/versions/10930-wheatDendro/04-payroll_employee.sql +++ b/db/versions/10930-wheatDendro/04-payroll_employee.sql @@ -2,10 +2,10 @@ ALTER TABLE IF EXISTS `vn2008`.`payroll_employee` RENAME `vn`.`payrollWorker`; ALTER TABLE IF EXISTS `vn`.`payrollWorker` -CHANGE COLUMN IF EXISTS `CodTrabajador` `workerCodeFk` int(11) NOT NULL, +CHANGE COLUMN IF EXISTS `CodTrabajador` `workerFkA3` int(11) NOT NULL COMMENT 'Columna que hace referencia a A3.',, CHANGE COLUMN IF EXISTS `nss` `nss__` varchar(23) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', CHANGE COLUMN IF EXISTS `codpuesto` `codpuesto__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', -CHANGE COLUMN IF EXISTS `codempresa` `companyCodeFk` int(10) NOT NULL, +CHANGE COLUMN IF EXISTS `codempresa` `companyFkA3` int(10) NOT NULL COMMENT 'Columna que hace referencia a A3.', CHANGE COLUMN IF EXISTS `codcontrato` `codcontrato__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', CHANGE COLUMN IF EXISTS `FAntiguedad` `FAntiguedad__` date NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', CHANGE COLUMN IF EXISTS `grupotarifa` `grupotarifa__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', diff --git a/db/versions/10930-wheatDendro/06-payroll_conceptos.sql b/db/versions/10930-wheatDendro/06-payroll_conceptos.sql index 45ab7a374..1803dc2a3 100644 --- a/db/versions/10930-wheatDendro/06-payroll_conceptos.sql +++ b/db/versions/10930-wheatDendro/06-payroll_conceptos.sql @@ -3,4 +3,4 @@ ALTER TABLE IF EXISTS `vn2008`.`payroll_conceptos` RENAME `vn`.`payrollComponent ALTER TABLE IF EXISTS `vn`.`payrollComponent` CHANGE COLUMN IF EXISTS `conceptoid` `id` int(11) NOT NULL, -CHANGE COLUMN IF EXISTS `concepto` `concept` varchar(255) DEFAULT NULL; \ No newline at end of file +CHANGE COLUMN IF EXISTS `concepto` `name` varchar(255) DEFAULT NULL; \ No newline at end of file From 67b55ae845b7843038032038f57f7a37aceafbaf Mon Sep 17 00:00:00 2001 From: Pako Date: Wed, 13 Mar 2024 14:16:27 +0100 Subject: [PATCH 073/456] fixtures local --- db/.gitignore | 2 +- db/dump/fixtures.local.sql | 406 +++++++++++++++++++++++++++++++++++++ 2 files changed, 407 insertions(+), 1 deletion(-) create mode 100644 db/dump/fixtures.local.sql diff --git a/db/.gitignore b/db/.gitignore index 54ed9df77..231f0dfe0 100644 --- a/db/.gitignore +++ b/db/.gitignore @@ -4,7 +4,7 @@ remotes/*.ini !remotes/local.ini !remotes/docker.ini dump/.changes -dump/fixtures.local.sql +#dump/fixtures.local.sql .dBeaver .idea .project diff --git a/db/dump/fixtures.local.sql b/db/dump/fixtures.local.sql new file mode 100644 index 000000000..64d22f480 --- /dev/null +++ b/db/dump/fixtures.local.sql @@ -0,0 +1,406 @@ +-- XXX: floranet + +INSERT IGNORE INTO vn.intrastat(id, description, taxClassFk, taxCodeFk) +VALUES(6031970, 'Flores y capullos frescos (Otras: ramos, coronas)', 1, 63); + + +INSERT IGNORE INTO vn.itemType (code, name, categoryFk, workerFk) + VALUES('FNR', 'Floranet Ramos', 1, 1); + +INSERT IGNORE INTO vn.itemType (code, name, categoryFk, workerFk) + VALUES('FNP', 'Floranet Plantas', 1, 1); + +-- Generación de items +SELECT id + INTO @FNR + FROM vn.itemType + WHERE code = 'FNR'; + +SELECT id + INTO @FNP + FROM vn.itemType + WHERE code = 'FNP'; + +DELETE + FROM vn.item + WHERE typeFk IN (@FNR,@FNP); + +INSERT INTO vn.item + ( + id, + name, + longName, + `size`, + originFk, + intrastatFk, + typeFk, + inkFk, + image, + description + ) + VALUES + ( + 147791, + @r := 'Ramo Terranova', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin ORDER BY RAND() LIMIT 1), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147791', + CONCAT('Hemos elegido una selección de flores muy especiales para realizar ', + 'esta composición: brásicas, flor de cera, astrantia, espigas, lisiantum, ', + 'paniculata eucaliptus.') + ), + ( + 147792, + @r := 'Ramo Tasmania', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147792', + CONCAT('La elegancia de este ramo es por la elección de todas las flores que lo componen: ', + 'eringium, verdes variados, rosas proteas, margaritas, astrantia, esta selección de ', + 'flores será un acierto seguro para hacer un regalo muy especial.') + ), + ( + 147793, + @r := 'Ramo Pasion', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147793', + CONCAT('La unión de las rosas rojas con el lilium rosa hace de este ramo uno de ', + 'los más especiales , el juego de las dos tonalidades con los diferentes verdes ', + 'que cuidadosamente selecionamos para darle el toque final a la composicion hace ', + 'que este ramo sea al mismo tiempo elegante y atrevido, para amantes de lo inesperado ', + 'que quieren decorar alguna estancia de su hogar o hacer un ragalo muy especial') + ), + ( + 147794, + @r := 'Ramo Florencia', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147794', + CONCAT('Este ramo evoca los colores del atardecer en Florencia, las rosas ramificadas ', + 'de pitimini con diferentes tonalidades y la paniculata nos transpotan al ambiente ', + 'sofisticado del norte de Italia y la frescura de los verdes variados nos recuerda ', + 'a la campiña italiana .Este ramo es ideal para regalar pensando en alguien muy especial.') + ), + ( + 147795, + @r := 'Ramo Atardecer', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink WHERE name = 'Yellow'), + '147795', + CONCAT('Las rosas amarillas simbolizan la alegría de vivir, la calidez ,el ', + 'optimismo y la energía, por eso son el regalo perfecto para una ocasión muy ', + 'especial o para celebrar la alegría de una amistad o de un encuentro, a estas ', + 'preciosas rosas les añadimos un toque desenfadado a través de los verdes ', + 'variados que unidos a la belleza de la rosa que seguro serán una apuesta segura.') + ), + ( + 147796, + @r := 'Ramo Arcoíris', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147796', + CONCAT('Llega la primavera a tu casa con el ramo Arco Iris , conseguirás iluminar ', + 'cualquier estancia gracias a la combinacón de las gerberas holandesas de gran ', + 'tamaño con colores muy vivos que a su vez contrastan a la perfección con las ', + 'margaritas coconut y el estatice variado, todo ello acompañado de verdes entre ', + 'los que destaca el ruscus danae , para dulcificar la explosión de color , ', + 'añadimos paniculata , una flor sencilla pero que aporta gran armonía al ramo') + ), + ( + 147797, + @r := 'Ramo Provenza', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147797', + CONCAT('La delicada composición de este ramo escogida de forma minuciosa hecho ', + 'con liliums rosa, lisiantum blanco y rosas de color rosa todo ello unificado ', + 'con una selección de maravillosos verdes variados, hacen que esta combinación ', + 'sea muy especial para decorar cualquier estancia de tu casa a la que aportará una luz especial.') + ), + ( + 147798, + @r := 'Ramo Alegria', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147798', + CONCAT('Hemos elegido el nombre de Alegría para este ramo ya que sus intensos ', + 'y variados colores nos producen esa sensación, la combinación de rosas blancas ', + ', alstroemeria rosa unida a la paniculata tambien de color rosa y a la sutileza ', + 'de la combinación de verdes variados, hace de este ramo una opción perfecta de ', + 'regalo que a todo el mundo le gusta por su armoniosa combinacion de colores.') + ), + ( + 147799, + @r := 'Planta Orquídeas ', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147799', + CONCAT('Elegimos personalmente en nuestra tienda dos plantas de orquídeas ', + 'con las mejores características combinadas con diferentes elementos de ', + 'decoración consiguiendo una composición ideal para cualquier ambiente.El ', + 'recipiente de cerámica se puede utilizar para múltiples funciones y sacar ', + 'de el las dos plantas de orquídeas para colocarlas en dos puntos diferentes ', + 'de nuestro hogar, ya que se respeta siempre las macetas originales de cada orquídea') + ), + ( + 147800, + @r := 'Planta Kentia', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147800', + CONCAT('La Kentia es una de las plantas más decorativas debido al porte que ', + 'le otorgan sus largas finas hojas arqueadas, ideal para un regalo que dejará ', + 'sin palabras a quien lo reciba o para decorar una estancia de tu hogar, ', + 'desde un espacio super moderno hasta el ambiente más clásico. Nuestras Kentias ', + 'proceden de uno de los mejores productores de kentias del mundo, con el añadido ', + 'de ser un producto nacional producido en Canarias de una calidad extrema.') + ), + ( + 147801, + @r := 'Planta Calathea', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147801', + CONCAT('Esta planta originaria de América tropical, principalmente de Brasil y Perú ', + ', son plantas ideales para embellecer el interior de una estancia . Debido a su ', + 'llamativo y original colorido, tambien es un regalo perfecto para ', + 'cualquier compromiso que tengamos .') + ), + ( + 147802, + @r := 'Planta Anthurium ', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNP, + (SELECT id FROM vn.ink WHERE name = 'Red'), + '147802', + CONCAT('Nos encanta el color rojo de sus flores .Esta planta original de ', + 'Costa Rica ,proviene de las zonas tropicales de America Central y del Sur, ', + 'su llamativo color alegrará cualquier celebración') + ), + ( + 147803, + @r := 'Ramo Mindanao', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147803', + CONCAT('La combinación de rosas ramificadas amarillas, las hortensias blancas, ', + 'el estatice, el limonium Tanacetum y los verdes variados hace de este ramo uno ', + 'de los que más gustan tanto si es para regalar como para decorar un rincón de tu casa.') + ), + ( + 147804, + @r := 'Ramo Guinea', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147804', + CONCAT('Hemos elegido una selección de flores muy especiales para realizar esta composición:', + ' brásicas, flor de cera, astrantia, espigas, lisiantum, paniculata eucaliptus.') + ), + ( + 147805, + @r := 'Ramo Eterno', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147805', + CONCAT('La perfecta combinación de los diferentes tonos de estatice y el eucaliptus ', + 'cinerea hacen de este ramo un recuerdo inolvidable ya que ambos materiales son de ', + 'larga duración por lo que podrás conservar tu ramo junto con las bonitas vivencias ', + 'de ese día durante mucho tiempo, además le añadimos un toque especial que le dan ', + 'las raices las cuales combinan con los tonos del ramo, unas bonitas cintas del colores ', + 'rematan el acabado del ramo. Este ramo se puede secar y mantenerse en perfecto estado.') + ), + ( + 147806, + @r := 'Ramo Cielo', + @r, + 20 + CEIL(RAND() * 55), + (SELECT id FROM vn.origin WHERE code = 'SPA'), + 6031970, + @FNR, + (SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1), + '147806', + CONCAT('Las hortensias son unas de las flores más elegantes que existen y ', + 'la combinación que proponemos para este ramo te resultará de lo más armoniosa ', + ', ya que intercalamos flores de mayor tamaño como las hortensias azules y ', + 'blancas junto con flores más pequeñas y delicadas como el estatice , todo ello', + ' combinado con el eucaliptus cinerea que te aportará un sueve aroma en toda ', + 'la estancia, el atado del ramo es de rafia natural, siguiendo la tonalidad ', + 'clara de todo el conjunto. ') + ); + + -- Ramo Terranova: 1er elemento +INSERT INTO vn.item( + name, + longName, + `size`, + stems, + inkFk, + intrastatFk, + typeFk, + originFk) + SELECT + @r:= 'Rosa roja', + @r, + 60, + 1, + 'RED', + 6031970, + id, + 1 + FROM vn.itemType + WHERE code LIKE 'FNE'; + +SELECT LAST_INSERT_ID() INTO @itemFk; + +INSERT INTO floranet.`element` + SET itemFk = @itemFk; + +INSERT INTO floranet.builder( + itemFk, + elementFk, + quantity) + SELECT + id, + @itemFk, + 12 + FROM vn.item + WHERE name = 'Ramo Terranova'; + + -- Ramo Terranova: 2º elemento + +INSERT INTO vn.item( + name, + longName, + `size`, + stems, + inkFk, + intrastatFk, + typeFk, + originFk) + SELECT + @r:= 'Hoja de helecho', + @r, + 60, + 1, + 'BAS', + 6031970, + id, + 1 + FROM vn.itemType + WHERE code LIKE 'FNE'; + +SELECT LAST_INSERT_ID() INTO @itemFk; + +INSERT INTO floranet.`element` + SET itemFk = @itemFk; + +INSERT INTO floranet.builder( + itemFk, + elementFk, + quantity) + SELECT + id, + @itemFk, + 4 + FROM vn.item + WHERE name = 'Ramo Terranova'; + + + -- Ramo Terranova: 3er elemento +INSERT INTO vn.item( + name, + longName, + `size`, + stems, + inkFk, + intrastatFk, + typeFk, + originFk) + SELECT + @r:= 'Paniculata', + @r, + 60, + 1, + 'SLV', + 6031970, + id, + 1 + FROM vn.itemType + WHERE code LIKE 'FNE'; + +SELECT LAST_INSERT_ID() INTO @itemFk; + +INSERT INTO floranet.`element` + SET itemFk = @itemFk; + +INSERT INTO floranet.builder( + itemFk, + elementFk, + quantity) + SELECT + id, + @itemFk, + 5 + FROM vn.item + WHERE name = 'Ramo Terranova'; + From 6163cad8a5184e731c11a8e17dfa831aaaea2ec0 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 13 Mar 2024 14:17:10 +0100 Subject: [PATCH 074/456] refs #6738 --- db/routines/vn2008/views/payrollWorker.sql | 4 ++-- db/routines/vn2008/views/payroll_conceptos.sql | 2 +- db/versions/10930-wheatDendro/04-payroll_employee.sql | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/db/routines/vn2008/views/payrollWorker.sql b/db/routines/vn2008/views/payrollWorker.sql index 83ba02ecf..d4ada9aa0 100644 --- a/db/routines/vn2008/views/payrollWorker.sql +++ b/db/routines/vn2008/views/payrollWorker.sql @@ -1,6 +1,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn2008`.`payroll_employee` -AS SELECT `pw`.`workerCodeFk` AS `CodTrabajador`, - `pw`.`companyCodeFk` AS `codempresa` +AS SELECT `pw`.`workerFkA3` AS `CodTrabajador`, + `pw`.`companyFkA3` AS `codempresa` FROM `vn`.`payrollWorker` `pw` diff --git a/db/routines/vn2008/views/payroll_conceptos.sql b/db/routines/vn2008/views/payroll_conceptos.sql index 54be27d0b..a7c6ece5b 100644 --- a/db/routines/vn2008/views/payroll_conceptos.sql +++ b/db/routines/vn2008/views/payroll_conceptos.sql @@ -2,7 +2,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vn2008`.`payroll_conceptos` AS SELECT `pc`.`id` AS `conceptoid`, - `pc`.`concept` AS `concepto`, + `pc`.`name` AS `concepto`, `pc`.`isSalaryAgreed` AS `isSalaryAgreed`, `pc`.`isVariable` AS `isVariable`, `pc`.`isException` AS `isException` diff --git a/db/versions/10930-wheatDendro/04-payroll_employee.sql b/db/versions/10930-wheatDendro/04-payroll_employee.sql index 538c636f4..c346fbf8d 100644 --- a/db/versions/10930-wheatDendro/04-payroll_employee.sql +++ b/db/versions/10930-wheatDendro/04-payroll_employee.sql @@ -2,7 +2,7 @@ ALTER TABLE IF EXISTS `vn2008`.`payroll_employee` RENAME `vn`.`payrollWorker`; ALTER TABLE IF EXISTS `vn`.`payrollWorker` -CHANGE COLUMN IF EXISTS `CodTrabajador` `workerFkA3` int(11) NOT NULL COMMENT 'Columna que hace referencia a A3.',, +CHANGE COLUMN IF EXISTS `CodTrabajador` `workerFkA3` int(11) NOT NULL COMMENT 'Columna que hace referencia a A3.', CHANGE COLUMN IF EXISTS `nss` `nss__` varchar(23) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', CHANGE COLUMN IF EXISTS `codpuesto` `codpuesto__` int(10) NOT NULL COMMENT '@Deprecated refs #6738 15/03/2024', CHANGE COLUMN IF EXISTS `codempresa` `companyFkA3` int(10) NOT NULL COMMENT 'Columna que hace referencia a A3.', From 77d1a38a87eac61c3ce19fc217b3aaf2aaa29636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Wed, 13 Mar 2024 18:51:11 +0100 Subject: [PATCH 075/456] fix: closeTicket idem salix refs #6549 --- db/versions/10949-limeLaurel/00-firstScript.sql | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/db/versions/10949-limeLaurel/00-firstScript.sql b/db/versions/10949-limeLaurel/00-firstScript.sql index 0e2fdaf0c..7b1758285 100644 --- a/db/versions/10949-limeLaurel/00-firstScript.sql +++ b/db/versions/10949-limeLaurel/00-firstScript.sql @@ -3,3 +3,12 @@ INSERT INTO util.notification (id, name, description) 'invoice-ticket-closure', 'Tickets not invoiced during the nightly closure ticket process' FROM util.notification; + +INSERT IGNORE INTO util.notificationAcl (notificationFk, roleFk) + SELECT MAX(id), 108 + FROM util.notification; + +INSERT IGNORE INTO util.notificationSubscription (notificationFk, userFk) + SELECT MAX(id), 108 + FROM util.notification; + \ No newline at end of file From fbeb9b058d4ca6367b4e003142b29c4ec09ffb5c Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 14 Mar 2024 09:34:37 +0100 Subject: [PATCH 076/456] hotfix: itemProposal added optimizer_search_depth --- db/routines/vn/procedures/itemProposal.sql | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/db/routines/vn/procedures/itemProposal.sql b/db/routines/vn/procedures/itemProposal.sql index 0dc04124d..da9e757aa 100644 --- a/db/routines/vn/procedures/itemProposal.sql +++ b/db/routines/vn/procedures/itemProposal.sql @@ -18,21 +18,17 @@ BEGIN DECLARE vCalcFk INT; DECLARE vTypeFk INT; DECLARE vPriority INT DEFAULT 1; - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; SELECT warehouseFk, shipped INTO vWarehouseFk, vShipped FROM ticket WHERE id = vTicketFk; - START TRANSACTION; - CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vShipped); + SET @_optimizer_search_depth = @@optimizer_search_depth; + SET SESSION optimizer_search_depth = 0; + WITH itemTags AS ( SELECT i.id, typeFk, @@ -99,6 +95,7 @@ BEGIN match7 DESC, (i.tag8 = its.tag8) DESC, match8 DESC; - COMMIT; + + SET SESSION optimizer_search_depth = @_optimizer_search_depth; END$$ DELIMITER ; From 3e458281e6a5c5a09fc7071de95a564c9297d2a2 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 14 Mar 2024 09:42:54 +0100 Subject: [PATCH 077/456] fix: refs #6492 boxes alias --- db/routines/vn/procedures/agencyVolume.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/routines/vn/procedures/agencyVolume.sql b/db/routines/vn/procedures/agencyVolume.sql index 295ae50ae..176b77726 100644 --- a/db/routines/vn/procedures/agencyVolume.sql +++ b/db/routines/vn/procedures/agencyVolume.sql @@ -21,7 +21,7 @@ BEGIN JOIN agency ag ON ag.id = am.agencyFk JOIN ( SELECT sv.ticketFk, - CEIL(1000 * SUM(sv.volume) / vc.standardFlowerBox) + CEIL(1000 * SUM(sv.volume) / vc.standardFlowerBox) boxes FROM ticket t JOIN saleVolume sv ON sv.ticketFk = t.id JOIN volumeConfig vc From 184a3a3c7a453a1337e171d02970ecce9fb32db1 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 14 Mar 2024 10:05:25 +0100 Subject: [PATCH 078/456] refs #6395 Requested changes --- db/routines/vn/triggers/buy_beforeInsert.sql | 9 ++++++++- db/routines/vn/triggers/buy_beforeUpdate.sql | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/db/routines/vn/triggers/buy_beforeInsert.sql b/db/routines/vn/triggers/buy_beforeInsert.sql index c698e23e6..a05f2810b 100644 --- a/db/routines/vn/triggers/buy_beforeInsert.sql +++ b/db/routines/vn/triggers/buy_beforeInsert.sql @@ -9,6 +9,7 @@ trig: BEGIN DECLARE vGroupingMode TINYINT; DECLARE vGenericFk INT; DECLARE vGenericInDate BOOL; + DECLARE vBuyerFk INT; IF @isModeInventory THEN LEAVE trig; @@ -19,7 +20,13 @@ trig: BEGIN END IF; SET NEW.editorFk = account.myUser_getId(); - SET NEW.buyerFk = NEW.editorFk; + + SELECT it.workerFk INTO vBuyerFk + FROM item i + JOIN itemType it ON it.id = i.typeFk + WHERE i.id = NEW.itemFk; + + SET NEW.buyerFk = vBuyerFk; CALL buy_checkGrouping(NEW.`grouping`); diff --git a/db/routines/vn/triggers/buy_beforeUpdate.sql b/db/routines/vn/triggers/buy_beforeUpdate.sql index b41418bcc..40e0df984 100644 --- a/db/routines/vn/triggers/buy_beforeUpdate.sql +++ b/db/routines/vn/triggers/buy_beforeUpdate.sql @@ -7,6 +7,7 @@ trig:BEGIN DECLARE vGenericInDate BOOL; DECLARE vIsInventory BOOL; DECLARE vDefaultEntry INT; + DECLARE vBuyerFk INT; IF @isTriggerDisabled THEN LEAVE trig; @@ -66,7 +67,12 @@ trig:BEGIN END IF; IF NOT (NEW.itemFk <=> OLD.itemFk) THEN - SET NEW.buyerFk = NEW.editorFk; + SELECT it.workerFk INTO vBuyerFk + FROM item i + JOIN itemType it ON it.id = i.typeFk + WHERE i.id = NEW.itemFk; + + SET NEW.buyerFk = vBuyerFk; END IF; IF NOT (NEW.itemFk <=> OLD.itemFk) OR From ff130b773dcb9e6d83694346377e736896fce622 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 14 Mar 2024 11:49:21 +0100 Subject: [PATCH 079/456] fix: refs #6492 drop useless insert --- .../procedures/addAccountReconciliation.sql | 55 +++---------------- 1 file changed, 9 insertions(+), 46 deletions(-) diff --git a/db/routines/vn/procedures/addAccountReconciliation.sql b/db/routines/vn/procedures/addAccountReconciliation.sql index 0db018109..e396e57dc 100644 --- a/db/routines/vn/procedures/addAccountReconciliation.sql +++ b/db/routines/vn/procedures/addAccountReconciliation.sql @@ -8,59 +8,22 @@ BEGIN UPDATE accountReconciliation ar JOIN ( SELECT id, - calculatedId, + calculatedCode, CONCAT( - calculatedId, + calculatedCode, '(', - ROW_NUMBER() OVER (PARTITION BY calculatedId ORDER BY id), + ROW_NUMBER() OVER (PARTITION BY calculatedCode ORDER BY id), ')' ) newId - FROM accountReconciliation - WHERE calculatedId IN ( - SELECT calculatedId + FROM accountReconciliation ar + WHERE calculatedCode IN ( + SELECT calculatedCode FROM accountReconciliation - GROUP BY calculatedId + GROUP BY calculatedCode HAVING COUNT(*) > 1 ) - ORDER BY calculatedId, id + ORDER BY calculatedCode, id ) sub2 ON ar.id = sub2.id - SET ar.calculatedId = sub2.newId; - - INSERT INTO till( - dated, - isAccountable, - serie, - concept, - `in`, - `out`, - bankFk, - companyFk, - warehouseFk, - supplierAccountFk, - calculatedCode, - InForeignValue, - OutForeignValue, - workerFk - ) - SELECT ar.operationDate dated, - TRUE isAccountable, - 'MB' serie, - ar.concept concept, - @totalIn := IF(ar.debitCredit = arc.debitCredit2 AND a.currencyFk = arc.currencyFk, ar.amount, NULL) `in`, - @totalOut := IF(ar.debitCredit = arc.debitCredit AND a.currencyFk = arc.currencyFk, ar.amount, NULL) `out`, - a.id bankFk, - sa.supplierFk companyFk, - arc.warehouseFk warehouseFk, - ar.supplierAccountFk supplierAccountFk, - ar.calculatedId calculatedCode, - @totalIn InForeignValue, - @totalOut OutForeignValue, - account.myUser_getId() user - FROM accountReconciliation ar - JOIN supplierAccount sa ON sa.id = ar.supplierAccountFk - JOIN accounting a ON a.id = sa.accountingFk - LEFT JOIN till t ON t.calculatedCode = ar.calculatedId - JOIN accountReconciliationConfig arc - WHERE t.id IS NULL; + SET ar.calculatedCode = sub2.newId; END$$ DELIMITER ; \ No newline at end of file From d7115e40c1b03c23545cbc1f56cac0201be31c26 Mon Sep 17 00:00:00 2001 From: jorgep Date: Thu, 14 Mar 2024 12:10:08 +0100 Subject: [PATCH 080/456] feat: refs #6492 dropping vn2008 procedures --- .../procedures/account_conciliacion_add.sql | 33 -------------- .../vn2008/procedures/agencia_volume.sql | 44 ------------------- db/routines/vn2008/procedures/article.sql | 15 ------- 3 files changed, 92 deletions(-) delete mode 100644 db/routines/vn2008/procedures/account_conciliacion_add.sql delete mode 100644 db/routines/vn2008/procedures/agencia_volume.sql delete mode 100644 db/routines/vn2008/procedures/article.sql diff --git a/db/routines/vn2008/procedures/account_conciliacion_add.sql b/db/routines/vn2008/procedures/account_conciliacion_add.sql deleted file mode 100644 index 94ef0b14b..000000000 --- a/db/routines/vn2008/procedures/account_conciliacion_add.sql +++ /dev/null @@ -1,33 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`account_conciliacion_add`() -BEGIN - UPDATE account_conciliacion ac - JOIN - ( - SELECT idaccount_conciliacion, @c:= if(@id = id_calculated, @c + 1, 1) contador, - @id:= id_calculated as id_calculated, concat(id_calculated,'(',@c,')') as new_id - FROM account_conciliacion - JOIN - ( - select id_calculated, count(*) rep, @c:= 0, @id:= concat('-',id_calculated) - from account_conciliacion - group by id_calculated - having rep > 1 - ) sub using(id_calculated) - ) sub2 using(idaccount_conciliacion) - SET ac.id_calculated = sub2.new_id; - - INSERT INTO Cajas(Cajafecha, Partida, Serie, Concepto, Entrada, - Salida, Id_Banco,empresa_id, warehouse_id, - Proveedores_account_id, id_calculated, InForeignValue, OutForeignValue, Id_Trabajador) - SELECT Fechaoperacion, TRUE, 'MB', ac.Concepto, IF(DebeHaber = 2 AND currencyFk = 1, importe,null), - IF(DebeHaber = 1 AND currencyFk = 1, importe, null), a.id, sa.supplierFk, 1, - ac.Id_Proveedores_account, ac.id_calculated, IF(DebeHaber = 2 AND NOT currencyFk = 1, importe, null), - IF(DebeHaber = 1 AND NOT currencyFk = 1, importe, null), account.myUser_getId() - FROM account_conciliacion ac - JOIN vn.supplierAccount sa on sa.id = ac.Id_Proveedores_account - JOIN vn.accounting a ON a.id = sa.accountingFk - LEFT JOIN Cajas c on c.id_calculated = ac.id_calculated - WHERE c.Id_Caja IS NULL; -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/agencia_volume.sql b/db/routines/vn2008/procedures/agencia_volume.sql deleted file mode 100644 index ea631793d..000000000 --- a/db/routines/vn2008/procedures/agencia_volume.sql +++ /dev/null @@ -1,44 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`agencia_volume`() -BEGIN - DECLARE vStarted DATETIME DEFAULT TIMESTAMP(util.VN_CURDATE()); - DECLARE vEnded DATETIME DEFAULT TIMESTAMP(util.VN_CURDATE(), '23:59:59'); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket_PackagingEstimated; - CREATE TEMPORARY TABLE tmp.ticket_PackagingEstimated - ( - ticketFk INT PRIMARY KEY - ,boxes INT DEFAULT 0 - ); - - INSERT INTO tmp.ticket_PackagingEstimated(ticketFk, boxes) - SELECT sv.ticketFk, CEIL(1000 * sum(sv.volume) / vc.standardFlowerBox) - FROM vn.ticket t - JOIN vn.saleVolume sv ON sv.ticketFk = t.id - JOIN vn.volumeConfig vc - WHERE t.shipped BETWEEN vStarted AND vEnded - AND IFNULL(t.packages,0) = 0 - GROUP BY t.id; - SELECT * FROM - ( - SELECT ag.id agency_id, - CONCAT(RPAD(c.country, 16,' _') ,' ',ag.name) Agencia, - count(*) expediciones, - sum(t.packages) Bultos, - sum(tpe.boxes) Faltan - FROM vn.ticket t - JOIN vn.warehouse w ON w.id = t.warehouseFk - JOIN vn.country c ON w.countryFk = c.id - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.agency ag ON ag.id = am.agencyFk - JOIN tmp.ticket_PackagingEstimated tpe ON tpe.ticketFk = t.id - WHERE t.shipped BETWEEN vStarted AND vEnded - AND ag.isOwn = FALSE - GROUP BY ag.id - ) sub - ORDER BY Agencia; - - DROP TEMPORARY TABLE tmp.ticket_PackagingEstimated; -END$$ -DELIMITER ; diff --git a/db/routines/vn2008/procedures/article.sql b/db/routines/vn2008/procedures/article.sql deleted file mode 100644 index 3c2664c0f..000000000 --- a/db/routines/vn2008/procedures/article.sql +++ /dev/null @@ -1,15 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`article`() -BEGIN -/** - * Crea la tabla temporal: article_inventory - */ - DROP TEMPORARY TABLE IF EXISTS article_inventory; - CREATE TEMPORARY TABLE article_inventory - ( - `article_id` INT(11) NOT NULL PRIMARY KEY, - `future` DATETIME - ) - ENGINE = MEMORY; -END$$ -DELIMITER ; From d8a5bf8c840c0a6b3689547267a68a7f9d48ac3c Mon Sep 17 00:00:00 2001 From: Jon Date: Thu, 14 Mar 2024 15:04:35 +0100 Subject: [PATCH 081/456] style: #6556 set default user image, set users image --- .gitignore | 1 - db/dump/fixtures.before.sql | 24 +++++++++--------- storage/image/user/1600x1600/1101.png | Bin 0 -> 1284841 bytes storage/image/user/1600x1600/1102.png | Bin 0 -> 996133 bytes storage/image/user/1600x1600/1103.png | Bin 0 -> 1710079 bytes storage/image/user/1600x1600/1104.png | Bin 0 -> 942401 bytes storage/image/user/1600x1600/1105.png | Bin 0 -> 794855 bytes storage/image/user/1600x1600/1106.png | Bin 0 -> 1569698 bytes storage/image/user/1600x1600/1107.png | Bin 0 -> 1315339 bytes storage/image/user/1600x1600/1108.png | Bin 0 -> 2089354 bytes storage/image/user/1600x1600/1109.png | Bin 0 -> 1288737 bytes storage/image/user/1600x1600/1110.png | Bin 0 -> 1611861 bytes storage/image/user/1600x1600/1111.png | Bin 0 -> 213750 bytes storage/image/user/1600x1600/1112.png | Bin 0 -> 213750 bytes .../4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd.png | Bin 112140 -> 10119 bytes storage/image/user/160x160/1101.png | Bin 0 -> 32343 bytes storage/image/user/160x160/1102.png | Bin 0 -> 24693 bytes storage/image/user/160x160/1103.png | Bin 0 -> 35365 bytes storage/image/user/160x160/1104.png | Bin 0 -> 24907 bytes storage/image/user/160x160/1105.png | Bin 0 -> 19515 bytes storage/image/user/160x160/1106.png | Bin 0 -> 35166 bytes storage/image/user/160x160/1107.png | Bin 0 -> 32684 bytes storage/image/user/160x160/1108.png | Bin 0 -> 41555 bytes storage/image/user/160x160/1109.png | Bin 0 -> 31447 bytes storage/image/user/160x160/1110.png | Bin 0 -> 43211 bytes storage/image/user/160x160/1111.png | Bin 0 -> 6941 bytes storage/image/user/160x160/1112.png | Bin 0 -> 6941 bytes .../4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd.png | Bin 63093 -> 10119 bytes storage/image/user/520x520/1101.png | Bin 0 -> 239289 bytes storage/image/user/520x520/1102.png | Bin 0 -> 185171 bytes storage/image/user/520x520/1103.png | Bin 0 -> 313680 bytes storage/image/user/520x520/1104.png | Bin 0 -> 176139 bytes storage/image/user/520x520/1105.png | Bin 0 -> 150385 bytes storage/image/user/520x520/1106.png | Bin 0 -> 294955 bytes storage/image/user/520x520/1107.png | Bin 0 -> 253694 bytes storage/image/user/520x520/1108.png | Bin 0 -> 379609 bytes storage/image/user/520x520/1109.png | Bin 0 -> 236996 bytes storage/image/user/520x520/1110.png | Bin 0 -> 305484 bytes storage/image/user/520x520/1111.png | Bin 0 -> 38746 bytes storage/image/user/520x520/1112.png | Bin 0 -> 38746 bytes .../4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd.png | Bin 112140 -> 10119 bytes storage/image/user/full/1101.png | Bin 0 -> 163235 bytes storage/image/user/full/1102.png | Bin 0 -> 126933 bytes storage/image/user/full/1103.png | Bin 0 -> 224523 bytes storage/image/user/full/1104.png | Bin 0 -> 119519 bytes storage/image/user/full/1105.png | Bin 0 -> 107375 bytes storage/image/user/full/1106.png | Bin 0 -> 211860 bytes storage/image/user/full/1107.png | Bin 0 -> 181710 bytes storage/image/user/full/1108.png | Bin 0 -> 251207 bytes storage/image/user/full/1109.png | Bin 0 -> 162780 bytes storage/image/user/full/1110.png | Bin 0 -> 210671 bytes storage/image/user/full/1111.png | Bin 0 -> 18862 bytes storage/image/user/full/1112.png | Bin 0 -> 18862 bytes .../4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd.png | Bin 112140 -> 10119 bytes 54 files changed, 12 insertions(+), 13 deletions(-) create mode 100644 storage/image/user/1600x1600/1101.png create mode 100644 storage/image/user/1600x1600/1102.png create mode 100644 storage/image/user/1600x1600/1103.png create mode 100644 storage/image/user/1600x1600/1104.png create mode 100644 storage/image/user/1600x1600/1105.png create mode 100644 storage/image/user/1600x1600/1106.png create mode 100644 storage/image/user/1600x1600/1107.png create mode 100644 storage/image/user/1600x1600/1108.png create mode 100644 storage/image/user/1600x1600/1109.png create mode 100644 storage/image/user/1600x1600/1110.png create mode 100644 storage/image/user/1600x1600/1111.png create mode 100644 storage/image/user/1600x1600/1112.png create mode 100644 storage/image/user/160x160/1101.png create mode 100644 storage/image/user/160x160/1102.png create mode 100644 storage/image/user/160x160/1103.png create mode 100644 storage/image/user/160x160/1104.png create mode 100644 storage/image/user/160x160/1105.png create mode 100644 storage/image/user/160x160/1106.png create mode 100644 storage/image/user/160x160/1107.png create mode 100644 storage/image/user/160x160/1108.png create mode 100644 storage/image/user/160x160/1109.png create mode 100644 storage/image/user/160x160/1110.png create mode 100644 storage/image/user/160x160/1111.png create mode 100644 storage/image/user/160x160/1112.png create mode 100644 storage/image/user/520x520/1101.png create mode 100644 storage/image/user/520x520/1102.png create mode 100644 storage/image/user/520x520/1103.png create mode 100644 storage/image/user/520x520/1104.png create mode 100644 storage/image/user/520x520/1105.png create mode 100644 storage/image/user/520x520/1106.png create mode 100644 storage/image/user/520x520/1107.png create mode 100644 storage/image/user/520x520/1108.png create mode 100644 storage/image/user/520x520/1109.png create mode 100644 storage/image/user/520x520/1110.png create mode 100644 storage/image/user/520x520/1111.png create mode 100644 storage/image/user/520x520/1112.png create mode 100644 storage/image/user/full/1101.png create mode 100644 storage/image/user/full/1102.png create mode 100644 storage/image/user/full/1103.png create mode 100644 storage/image/user/full/1104.png create mode 100644 storage/image/user/full/1105.png create mode 100644 storage/image/user/full/1106.png create mode 100644 storage/image/user/full/1107.png create mode 100644 storage/image/user/full/1108.png create mode 100644 storage/image/user/full/1109.png create mode 100644 storage/image/user/full/1110.png create mode 100644 storage/image/user/full/1111.png create mode 100644 storage/image/user/full/1112.png diff --git a/.gitignore b/.gitignore index b741a2d44..6232a0e99 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ coverage node_modules dist -storage .idea npm-debug.log .eslintcache diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 4ad007f5c..0fc2b7b6d 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -118,18 +118,18 @@ INSERT INTO `hedera`.`tpvConfig`(`id`, `currency`, `terminal`, `transactionType` INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`) VALUES - (1101, 'BruceWayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1102, 'PetterParker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1103, 'ClarkKent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1104, 'TonyStark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1105, 'MaxEisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1106, 'DavidCharlesHaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1107, 'HankPym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1108, 'CharlesXavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1109, 'BruceBanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), - (1110, 'JessicaJones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en', NULL), - (1111, 'Missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL), - (1112, 'Trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en', NULL); + (1101, 'BruceWayne', 'Bruce Wayne', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'BruceWayne@mydomain.com', 'es','1101'), + (1102, 'PetterParker', 'Petter Parker', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'PetterParker@mydomain.com', 'en','1102'), + (1103, 'ClarkKent', 'Clark Kent', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'ClarkKent@mydomain.com', 'fr','1103'), + (1104, 'TonyStark', 'Tony Stark', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'TonyStark@mydomain.com', 'es','1104'), + (1105, 'MaxEisenhardt', 'Max Eisenhardt', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt','1105'), + (1106, 'DavidCharlesHaller', 'David Charles Haller', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'DavidCharlesHaller@mydomain.com', 'en','1106'), + (1107, 'HankPym', 'Hank Pym', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'HankPym@mydomain.com', 'en','1107'), + (1108, 'CharlesXavier', 'Charles Xavier', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'CharlesXavier@mydomain.com', 'en','1108'), + (1109, 'BruceBanner', 'Bruce Banner', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'BruceBanner@mydomain.com', 'en','1109'), + (1110, 'JessicaJones', 'Jessica Jones', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 1, 1, 'JessicaJones@mydomain.com', 'en','1110'), + (1111, 'Missing', 'Missing', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','1111'), + (1112, 'Trash', 'Trash', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2', 2, 0, NULL, 'en','1112'); UPDATE account.`user` SET passExpired = DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR) diff --git a/storage/image/user/1600x1600/1101.png b/storage/image/user/1600x1600/1101.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf3ed5666248ae7c4fdf4e4b29d7e92c9c27450 GIT binary patch literal 1284841 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 z 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 M3vRa=UH6DST(u|6mc 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

*8LPst!hvs{J-I$@cTVi$A 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

&Z4UK7o*?|r3{Fmj;&U4V`X7i6%1 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 Mea;h8Sd7A0lh;o&DK;`pbZb>nS<)HI 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

V@ph35sbwuTgwev z;;lXA>TVMWh%V@0I$g#gsT_-xi2)HxM6g|(I`xAQ>`S#K+^JkKZdHE^$&f1HNMC#F z$X;x?X8%tfB|U9t3@R$qL))1*$lX86n{Fr$Yfs)|T3G%Yt$M8!Tdh9tV-y<-9}#)$ z-*eS|j&CZxH*n9lgkQJs|DMY^^1K5Tc6ydZ2z`RD{a&fA40`$d|H}^gzan@qAswjp zn|>pE?Fx-ls%+#0gpRZ{l_~j=k$13O2>4o4arIf8v~J(;pLHorgWuIwCJlq@ZMHL9 zwpyZAaO;&ft96@o8oG4~?fe-lEx&VfVTlqY=*Pfa_wqem5UcR=3!4GVyhMv*5jBax zCeRQ>MyFK7e$~N@&4uY4cx}JqTQ+^I_CZ#B_Ekb0T2|Iy-tX0Ff`O}_wIq@XMGObDLFOmOf^8T*l^--&yARtDSXMCv zToVtxdw*o@69~!A%{QgBy8h{-^r-)QIcFX&p1ltOuMDtfEf{Ym)#0;O0}aMl{P}~O zIHx_H5KB*hNt&nX-}&d8)Q8sjZZn8>M~~&F4vL^|2VnsV zHW2ln%(x)o-KZ#K^nXjmC1`tLvYxZtN#mZHaN;7ll54Gw! zl>o-0xr(|T&QVM$fsJ!2S*1EjNGi>^lvcmmmBf@<;M(=Sj^^nq+g?*C6ck#m)@fX>P+YB0T%>?|cv=xoI9|S8B_l4AtOOaj3(a0sLl$Vg(`ZH& zOMAxS8Llu>I*apVr+xiVr!XgC=>qNh+dwPgf3XC)r1*vp0Qdu>M1@psIHcos!M2;A z%<)ga31RaPpqD}Rew@uEg6VYEt|jN&CBHGb)~7qm2YMgok@3$~<$H1I+^%o6DkCgk z)?1(xg4mSS?Z$*0Gu19uNR6KG8qrFE>g@|s)EUizlIbR(HsgvSYO+E`AO?=A4syi9 z4`fP&eWbFwY3yGk}`k3-Z#)l0Pz8Mx9A%flj<5fkf)$2WOr36~$*bgYk=9f4^6T3QNF zOQ3ny%`)&H@lsf9`J5no`Kf9TXXu)(JoyO?9XY&XWmwy?b28J^f&%xmPlZ?J{HuTg zlW@eb5P#S7%0wcdVmw%#_LVhIyUAmzL2Wonmt2*PjHoO)`R~1Xpo0+2jfW9rjZzQP z!{)o#G&M8YBR%*X$#;!H`a-O7gdINy{$fij8H1U^a1hzg8b9a^(AXbrq{hG|jSdc2 zD_-n*8`IxtD{xKja!{3`GP-?K4d}@L=A!4!K4|-I<~NEdE^5<%s9v)ShwH|-M@?zQ z(77u%BJ!sacU%iJ4YU}|kjP&s}Ly2x+PTsSs$Y z%Wd?~A6CyzuM-*OcPD8wf766MM9|`_N94XpH4fqX#Hp(hCb_5sMWgO~SMh1I;cAnC z9_peoarzm#%2dzPBdBmAlk3Iw7T}EsdPkR?*E)%<(!QH8?GsvVZ@JgWE)tETdf)4# zS6B2JiEj)0#=ZulvG{NDdUf9d-S=XhC-;A^1pm*W6QHC2{hi{v`JSHZ_WL4GP*9j8 zyIAQwHSy<(RQwBD?mK-ORCE{473HNY&E-77b*V*#)tv3aqooG_*5kZWw@L%!+^r9X z;zYNzQKxYM_aITJeA`}Ou!i&;N!xvMe3n{3zk6Bu)%VvhFqlrzg2OE}eY7&S2bnpt zF|eP2CW|+@_Gpx=TtNNUq^kI0SPk+O`|sq|;^5jqb)`O*I%9a&PCFX@fkeW!7vU~y z_$spqHf^A=oj-{HXTNJKxTAkj-FA|&QQ1K;-W=anki`w|vyN%+)KPz@!>U}#1S$+j zCIRlbs05U?Nd$-o;N8E>n3u*=F}jLYeY-ESURG5r5PZ&bpDZ1egwtMVT%Lcb&&->B zso$BFeaAZ3rqG;xx)0nmjQU>Fc3YBpeHw>{=9tM6Ht$hQ4gn0k{oBO zW-NqIzb8(s@n;W)ue$aM*ir^w##K+ol4s_(TN#hVAlt5Gp2kyNGmB#0hk-I$+E&=D zX>>$dZF$bqiCKSj6$D25I7n?f@L@Wr!`J>fs$uxNT_>W1VAYwyr}oC{Xac00CKW)| zH2iwMV?4gq#G{5(XHWbrWS!u%-oWIJ!DYdgL{2xZ+fT209J^i| z>ilwn_Y;GhK8zZAT30AoNl*4bqP?uB9JneCnsm7Y6lnayH>Cdjv9CZSSwF*3Q5m{4 z+HpIQ`k1Yv%_WArxW_rB69Iq(!zHPmKeiFPbBwaCJ z`8fK;B`4(Em(vKfmA4+CFY2^s z^=fV|qW)s75{=U5GKKZ%fSNvD43RqaHcT+{fPh_8d)t*U$}H{eD|J<5H)v#4ZK9Jr znpSJ*rlgV19QuEx<&y!eASG42Ny*V7IY;BtC4{QS z;v~h~*#swvVDvX02u#5corgA7jRT?BbKz?639bheHaxA|&N15pV*1+&6n}x7Ja$&U z!?Z&ey8N945!DsrQXFX~^TvCI&HM#qD;qI3!mbuJ14y1NWuq9flVuSgYm>FqZvG^` z+0I4TWB0d;;ELs$2#R-0^ASRWypWYzK9FcVLtha%TvWcg1s8$ffr3FzGLx|4IQnsT z%fD>kRax3b9mD8Kn?jfgV(que>(IZqmoba_?+17RTWMs$x>E+bRkj~}k+e}@dX*Dh z*L(SKO}5RyP6V?Uf0y4^+&^R`h9xJ^PdpHG!S00$RwQKMMl*Dbn#>C!kg~^3Cy%`$ zgMUK^E$~{WzSj?y9R&=<$T^qvGD)0^nBoVNFzRUH{VMk^eOj>NDhy6A6NL2&~Xy9P>nW&&v zqXXBF;n&GFT5&6wIb}yM?IzdLpQ_yPOte-%lQY&qwoMUX9pBKjC(VF;jMp$%MXAvQ zm8&p3;+sFoZ`Q1$UsOz$1UX91BgyKCKwdIR9EyCunVBBPoT}t|IPUP<$z+xFap2IUKdw41@ zmZ*h|NsfR=6iT>E+WMqUvl{US`lA#<>F%l z6P(#H_X?!ChaxMp$*jHd)RSw+jR}5K@`JywjDr2%smYeRW_AjXvHlYdrI;ChQ&OuDpw#|6QU_q?ig~A z!5I>q&)&~bSO{k#$O$Xxe-AYde~x1wQS9a`tAl{I_eaTP86n;UkrRUFO7dW)ItY!Y zP_wsED^GXN9%uIDu66b@Q~I`p2Iqo7J;S5_sL?&?7tux?1XaZ3z6bOiwl|M6kz*Of zJ_1VSRg`OBt4T?4s^{srj%n8ew^F;!Zq2}D&@+8c-+v>(P@~bt80w^EXPSWfd07)^ z)uB26{0DD01=izHOYIggDRYrVP^@q1g9(m~6tMn04Tm}?&73?(92J_BsteIuS)yqM zsZ32BpPeliqfuv(8H)Ypbe`3%uz=#plFSgsu>hQ4&H#mgen76vxp$h%y<6EtHk$H; zPjzp(&jnQ~He@TtiUz0IojHgF+pZl4{nS*uuQOX$#Mq|E6|uaIgh9AP7{NG8J-Hz; zcIso?kI_k5yjzwS%@p)5(qaCHZUQa@4AN*T7NKt5GFJ&+EfrXK$mliqEutNCM(xoc z6WN)imP+{%Z%04KAyRX78*=Xj`tdd{I*Xz*>7Z!?^=X*L5;b5*lm^g%xi{GCe8zM? z3~krggt}bCHO37K&5jFKnmq*JK*eG&Zq?rSu|h=PIALpG<$!k{IeLmeO;RCt zYEu70%euHFiV8v|S=gAKkfiD)*!hv-&Tx{#tZ#a#!FA4-Ven0xc6+*ieg2J_;qUVP za_Z3C>D^%voJK0WC>^L< z$5Z<@-AyI%i0?tzzi)EOlE4Bp%xwtxnPdVJWTDpxIE$lB&9%j!%v~Z2_^5vycCukq zGjUD0*3ad1XK6+4*6m{br0?Korycx9F4^f{ZS2gd*2Pmt0$#l81y&~R&U!Z> z{iVS!n~uRvFqB>sPfKYFx7UBHTV(}sQZ1_fwoQDBv8?a0y_vFBQ+?mq)T;@9;8Ed>ZLU-A-Cv&=fV-@Ez6GR+A-YywKLX;fCO@(Ltl{(8^Tv#k#vO zB+pR5uh!~K604R65&muCfFb;GOu=Vle{t9qsY@PKtR`)>l2xC#Q^LOzG&DH%9S|DV zaOUAn3?qdmXSM+G?sz-NL+Js8qQ*5$Jx@9+uaPohpo-q^>Ev^y$s!*bDR9EJLQ(al zR$c{>Os^YTC&iVKJu}2^f`HLqrNPR+T+aHtiJ`JslcU*IRM-Uz_D<-}06*9C z<011;1IiQ6ouWkbaA~^CBs@vS!c8{;p4&bgW^Gl@y^4r^(lL z0MED(Tl=f`fYLd)=up;eL2$bErymC+i~POXSJEQ zYG+(05`xRma?JPxWm@vo7k-)~95PPubx~c?ZK-xFhrE!L@t2n36`;ZW>FLM7ce>cX z`}2h)U?i-~zK!mfPk@(Hzs`duitB>v*6Xd-etQc9^-A)6srOZ5%j4^;?(+;r{eL;Z zTNZgfj~Q>T-#6<&MX$$sezpGrWxx4YH3Z9vw+CtrNF%7u*ZoY?JpX@^r%JO$!8HCf z{oO|)CKlyFo#dj4$tlieV}LQW(>eaD^`}XcPrb{!N@7Fs%1pk7)b|naR#W5d5`C2O zfJ}Mc=Dr?FmH~)oH!x0Jf{F1r&(E5oseaJ|TK0!sn~r@)@augR2vMlndM|Xh6me!P zeBUsy;$ZASWoFT^mVV{~D9lzB4ppG>K)LY+j>DtCR5a0EYW6mkOk9-R71f>!t_YG-HtQgn0ykk$+=tt-yemDDvHzs@_osF+M?DDl=sL*mh)e)S%An}(wza$o+ zVj6>sY<3bSQ5WOZyQUqWcG%92M9lDW1Y*;yPxhx}J{xV76Hus-xqwPY(Y9H;?WQ;k z>i+j@KtH&G*;V{|`O#rO&CUk)y~Bu|sAA3DDqlEx87dCrfzX&=eZ@a>vn7=TU9EB# z%qO|BSartu5|8)eT0gqlk@EA|Vuz-u9gsg)k(1z^C1@sd*Ac}As|I2&!BawT z>rhX2Xl~?R@X%;4bJYD!tVznz_lU=x5n}$~r8h)T+gZGU&n;fw>S72)goq>(7Sz?6 zl)@eVdf>-n;3;EfuT?1^L%0-#z^ryQ%uK@zR!Pb^h|!pac~ojlMvEjvJNxMN_a#zmZMn*=SzQ681iqmdL zX%o4{d;8g>(FUL2z|z;vx8?O!XYhjY?Z1A#QE)nbH!fZN-@fFh z!f&l%+o#(W*Y_pO59hlHqc`U1dT0MT4(;jgz4&k{_05<&iz$pIekCY-uKPo z-xUQ*z{CM_zheuoMkg6OV9Gj8j^7*gd{}q;+5%TO*kh~KL-0}59R~o>TPUOCGivzX z^r2a(q~KLLphP9A)xpY{e3w;7{2sUjF)0Dv^BcjW+;3s2Gen)#5*=c_o~C8@B6dr9 zd_^P&v7|a=oryr&>O>pcbR~byrQ!Gqr~{2TQ$IWvW_Il{6r#T2c#uHk-=}?1Lu=`B zZMRDOg1_?xPBX+j-qO78@72%9=I~qZxET-;3^HD9njb;sxDFvO2~Ya?QR62LYMZ^x zM+SI?pZ)w25|8|)PMQgTIa&Ya^Ar|;ReC39UObTWg?#>!!!8S98S*<+> z?h!SY4{DWNOt2Cig~i2{Klkb)(?e#w={zt?LTlupmY5-28gWd|ywQ)%)u6$QI?t!0 z3ziV$4D=zw2T!8lnu^^UK^GsqCMkwF@8-~38HQeytqR(G2ey;Y{?CbvO#2;2oX)4| zXw-hfwb~nIDU{@*12naJ>0~^HxWbfXES9i;^n>|tFhze%i}2s9oBx0>v{o%e6Wm|;#mYV>Q- z)r7KBYcdxlr=)7i;ppDUvKrb8Q-c>2njbAOoHQdi1jC-YPArv1*GBgFh{mY}B2A1>F!oDU~ zIsdSON8D3}PFJ@Z7;3=ta>b&w%ZtMAhTSV7@iYX4mOu_^y zS+tSvf=Vi;Z1R)M<)GR4$$?!v8?x^h1z_Sg0~IN8SEMGz+-|(!Z=@%MDqM+WGXcPZ z^kl+Dw1ipP$i7C=w`^gU8Dgw+v=WH}moL*=v^Wr`1|8}jxO`jpwSr7b?dW5D0lzcU zX@Lrn2_`WBiPX9%ZlwDO3TH-gUHru47IHWIN#5)tSt z9xIYRZdQpa4jl=DF*Z&HX96l1a-(ZVr54p1m}qAb3Wv71l^apAE*j?F=_Kw7iww6t zR{`ywpO)UM9VYUmG^q7;db3&Dq*a9+#Z5e|3oG+{E;4ZuqA^vu(K?_|APKJ!1kt*f8I!`=Ru$9jgbbS4$>n81XvN7SVV8xw zIwVEOMERQ#Xw1*7I+Q}Urht|hbWj62kT_4(?6>IWRZ#(%KC!33`AsJosfBI({mTm9 znkv~~nE4nuswq5zprvBp%g=1mpv)xW^K(-s0EG;huxChJUyiWI(89u2u!K#i58(es zo2i@=U>M@O3Wi=y*tkW*M%CsM$d)8x7A6}#53vi9;k86yiwBd3k^`a!;rzV<G2@!JM&#$iqs{)oy<3=z2BZ`4Mphzv+L`bj zo{~t6Gx0TC1`B~A7BKmXQcjJ$3)6=&Pj8uamwVrHIGOEyl>3x?zYW^mp^_l znS-V?>PjL|IVD3T^r}C-JKnn2O>27ohIh^L8-8Q7Vg*AgYUmjRWPTN)g!Q*SSb6=r znHWI4DhKsM5~&P8)TdjckL`@dXuBtlIbKdlGZ;oD_-6tc`*B>>x2ILQrpFx4?yBIp z4YZ?7E|zb(BhX#W13C#UVhfr6vr{7*dhW!ZT{Y*#cSBukkA)?$U%Fn3_rg0xbr1vJq(6tRSfFdz*2L#eht3PY!Hn;q zZ9wsyPgt9h6F&vSV6mBNTlfmZNsYS6dAOvtc`;t2jFB`Xie$?Ufi@aD%%>cubRNOT zNHZc}1esb#T2E0d%U4Ygi~X|Ud~ zvHDPmyy>9R**Iy3d|gfOIHAcye>kKiAhWc3Qrcu_NSN||1IWBwXd*2Qk;2QxW|>06 zF0^Tw$DP^xM(v&e1lxdCygz;>WvBo_I>}yNn3M3UHJ2GQ%v?Z1o)D*{v9RAGX=GKf zdi6V!v7Xl>f-zT26qDDQ3)bT%76j_H6a_BQnC4c=dLV0z&87H_G?CF^!n z&upx8+^Ch$rtG~ z$H}+%@{J^bCIEjvca$%I>wAP_rRwqNI-~a<|3ct7;LbdcNPs_g_kUZ%QICXQBVP?~ zuLd6)UuuB9nUC*DuS zm>LonaZf-_3uV+0>anMNS|q4h;MP&F|4j z{rJA*k+zn-CEH(&Pa7o5f(|qBmvxwUGeppr~+ z+L83h7Fr(<(at#I1e~zfC9cYMZQ!uk>87Ewy>1Mk&c;B<#QEv z0xH$n^o6){q_1LO7Tx?V;NXJ`J1Cb%(IT==(wBDjC_SbCNaW;yAe}=Dj-dgu%|?4b z8_rEGN`U%v`eWo!DjLRt(&`T{TE8%)B8PIkS#>OmV8Xww9`)#Z#!#K<9s01IUSh#! z!{LJ?{WbVlvS)nTc<dWi6y)*778qs&!`|sL@H&B?|*k zaPL84bcHBVd*CKDNHJ06<}nbhP$$(DHCR0*Dxn|Ki4^LBniAL!{Hw;u)t3R4va2GyvG=ib3n=K21Y^wZN@+n<<2*R|=j^xO?!KGNtjqv|ARu_BhZ}^-4@T5e2-s{Xbi z_Mg=ZI*}13ReOyU7yEn3Wyd!PDQ=4}L~f17_r;J6HCCo4M>f?=MjNsV;7 zx^}Do>?iMvs@~xlxv8MK*G2A}4j^etJQgxrH-1`f?P%UWf~~4%fKW7!@OaE5m&J9q zrYPE$n0cAI<2ZO!>mrZJLwU=@T*KxFl$bUTRkN{U3hv}Y4!RnS+{ z6a<7dpVAVP3%|o=Tc>6ZD_1ghJYG`Hh%FXUY9D>uE^h#)f#q6=Cw3wMioU#S%MXfO zL05cCs+?5ch*aP=BuQeEI>g*jNUjPB?XTt^zoUP21rbe!8Tqw@d^vykvT2Pqr zt{UtROk>qmsLJcnpv99~@*sf)&8W?z04=N^7R0YDtqy-ECnbGkTfwE-hwz<9C6zXR znBEY9C-=!@CE)+OljYxy6cw;^Mga*8AXG-zN5n*AtAZd((XZ zuKbqgz1iS2YZv!N5RMk z>Q4H+`q<~cE#t0A1-dD9Bzi?D9lsZF^PK*8&USshjY9gEokI5C$>#q_IE%cUY4rYp zLB9A7jrHo@{l`rh8zBtx-}bo`d)wnP&GKe$IRQUoZu*e>yawf7dqJ6c827Aijgc z1@NmN7LUiRx3>ZB;aPh^p6Gvye7apwO$M!Esi}*=Zwr924j_>2Sc(-~Pepc=wo921 z9?YSCLND*d@j{IUaoLQT#ZGpT(Q|mlx9}LjPt0BHz3aC=b zKc>Tvfew-RAuqALSbycpDvu$BO>rG?rC8MFz*iz;R#y%JjCB6;9QJ3b;>tXFbVWi+ zhwzkgokBuukt0<92=(4dDvBYq0&4mk>tg6IpCNTb+Pi*loP|N)+gwbcYT5Gfi#x6M zEX2`xbkRr865EOjkEqXM9n1p;uppCHTSA!Irg6+3|&a~6) zvq*q3xdY&pZ%5RshQ&(;W5bRnq%zqHP59q@N;)H(;gUGkKVtn_x*lK1mexS%CN^Bb zJ~UdU@++c>iGC`yN(kQ6%|Nz!AxW_cb^U>n2wD&%h8)}gnTQtwE8**5-5LQMaS)cO zF=9GR8CpMLjgg$h8nUw&EQ_>{mzCCZ{T-=1y6Rk(mNi_DPaJPoQv02LQRjrCQu7Md zHWtSQ0xI#|&ZaWu6|eP#Ib^Hlb@aT6`=+6e0j*omC+mw2_>I2MOdL`W{PTLnT85Pq zRMN*sDec6PvN7QYQKC4%6w)I7-&5kZW4mtdRUZ-V4dGBsp#+I5(VFrzX#xV|3-*I8 zO47tZA=ZC+?Ehb_4bR54)LTT}b3_JU&CQnT?>EI<}d@+|H=kf_%HyieeDVGJd{v!I{=M**ulkk*!qm5#m%?esDZ(bQ3rQ5j<@0L z*Z|JpQh;_#d%|YM?LwG0VY_7ycSQ!kpLUnvSAi(t-}uqoko|dqqmqVc&E^>4_ab?g zvObLJWsVT-C*o8-h?us-dUk4%S`>(!tE+ez!k4=TIT6&N;_yjo;G-J@sC`PV zFS#Y;p4fB2&=Q=e4|32O!-hZV&C|RvhZWn4m7sY%OCYXsTbCBW#vg)zUMSPvGB4^e zmnw&fQ5t4DeXTA9s>sWF?XVuitRbr~fiIh4o2W$83Wg&lE|d&8tiC5?gD#7}f|K{M zTU-B=4Mw!x^dzOK_Q4AMQSKi!hAgV|w-qR0Gs^sTQC{ok;}YP<+Y=88C+}gm#MYm^ z2BA`@jGr>XqERb*TG9N$+U2M@5W9D42Je@TF1d8whT$?iryaWSuAlusrsF*Rtm`Wc zKw5a%Y%5zy`M1Nfq-U5w$TU^)Z>pLeWg9ImEX$P?lBeK2n=gW7(c$cl0jb@x1|DExQ_%`q3x&}K1 z?~Hb2q{O+})-;@46v&5^?egW*^wH!?1lSAmHpUZ@!4-Rdg8zk~wL%8b0BE2qlZuQJ zha`Vba>ez&+rQ(!)_o4|^lg3ceNNlILw-hm?e#ir-R!)$edeH5|1WF5YmWc*gyiXA zVV@+oRzsH_>$mTRw!mYI{qC{fE!M-$75=vG?a*iU&P&dhfS2Ej^+szc)X$l>R{kSx zuj?i^wH#_)`e-3~91PG1Xh~7z1gD@u1Y%S|EXfWjdd@(?cx$_RsKQl0z#v2In-AGGiI-DJh*y%^ecRRV=05ZGm=P_BgdN$_BM4Dze+U_T^ zqyG#DZ_imKQ6s$6hbMSUp|w#UxdaZ~G?+MZ-xGKl3es0Lgd~C!5m5v$NL5mo@aVuW z=8N+`ANEhN1UR0PF6V;5y_0Chw{$YmeA<%czs*{}aEjB z&|@4gSpUfQ#~ERuwIW9=t#75-+4(jj^bvgR&JXr92y%bUtp`x0w34rFUO>83WQQ%XEp5o`PlB zYgP-`I0p9#kKHwFrk=ZE>$Ij7V7a)YyggiOssiyOsR;VEZn-j5T-yd}K%({iTV!Kn zdkD|-iIB^5pi86@$cqPOuB#dOnTr02>Y=LKL_@+9+xKeRH3ypDr}^e6+n{#!`>)Kr-}5S!3E#uI$`QP%hU`>RyEjn{ZD1LL({d_jqEhL)J za4Eps=CF%-%fCSu;PUq{P#1{Y3wj=^Ye`xyL}`gS(Ih6_nOf=j!SnI+N>~26u;WdB z{2~v1>aAV+nmv00?k7p3zhwDqOXc8a&ni>WAPv7~a#)dHBe}uXGMecGPU<5^u42SF zf+GxIE0hu<5OfrQm?QExS^|&%6L=5k4eVoGA5H(0ut(58{YiQM@Jgxkm4mLQ>zAoG zKO2VYo%@-unJ*SmaKF#*9f8}g_qeZpxa{^}wpvFN;L3kKZ^M{;Ul;O1uLXQwgWFa# ze*g9wx$b$B@A-Vx@qM^#i&w7BTX)VK*|Oo-;v(TkaAtntsxZcYDwp4b|_fdxYpIWtQW9*u#+=S;XmI zo13e7r%Nuer?vq#Bm(=I&A6!+%!EQ_EpLct{>tGIF`=Rv122Wu+a1%wWYE7OPayh36qHhvjnG=|M;L zWKO_1MV?+vW+@*rWK-N?w~V4~n0VLHr-|>xDxjgK^bp;J9bQ-zji$=mH93R#=SC>e z0@$612Qw?8esSung8i}vcDnd`in+s!St|~?qMCGwLTZ}BX(EdnvZ4@@#`T%?vHJux zLLnM=bW#Wmiunv)xJLBN63Jh$Is&hN@@iM3MubeH@+o{wA=z*HJAL8*(s7O_e2C2t z%bk9O#z5zyWRWe)Sgq;FUTNc?=-`Z!4pDU2Y?lP6vih1;dai>JD}emfdgKGCfo_M~t<4)DrYMegvzCOE zOEb%gbwG?0Q5akEx@Kw0(g5!f)e79OOBg%HiyqFfAmrJ`-S-heL}5#KzqtocpbW3h z^lcLUJS8x`@|@shJL2RMcra0Cr1m^m7&28C}IGsziaI+-fdCuQyQ@IdKaduY|yElT% zt+<^$IpsK*Zv<&NF|epNqZ`55;qhFTpn!>PY}RJSW+-VR;aW@ii9qM7P+(h1Lnk%R zUrawa%KmD&CmcpP*54V9bAHr7?0LQ^4c0XjhL{-{T8 zN6l@34SI$DmQWA{+?*Upq$ta_#vE?(Z1=o`8hlej%AyAhAOFfoBfd6z@2_?H2ESi# zOcbEwKd(4Op!)W|lI3Q+>`~|Ht_?U!T`g;n zs{)0Jo(-I*MQE>(s#}PPI<>EoZ5m(BaB;kP$P$dE-nOKOZ%02-7=MZF!_@nGV`is; zBgV+ZR*>)V=^PEIAs=&)Hnjnu=JzDSqY=P({JE32hU@XOXSntojs}L}a{P^s9ez2< zm=v#@dvOp7(i9IXyAdK*lU~RrCbEg3B+q!dD8r_PG0Jnp;k|%-y_|#VF*bc{arMsy zBrFZvO>}E>m%Y+cLh@y}ymCf(2>bzQQq5`_Z5sK~j5BTm`O$GdE|K~&0|3is>{~ZC zC$(ZIXyG1>hxR?NLu^GXSSpI|o5uDSn%zpOi@;ej;+I(OGBNVF;9W*joIY$p6{NbJ zE)-=x1QN@UmxVtq6M;~TF9Cs*x}^;z&FQ>B6l zIR{1$iq_YC(lg&;iDI zij)<8%Q=ZxBaVS1(PwwZkbGpPg^%%tfEC_T5?iB}&aBG9jL9KJm{`*_uK8OBU6f-p z-0mMql&p9bflb?l5rGjGiSTwj=56)syxFNQ zb@aaHxA$5QJVUh&=k5?V8ohnbzBg0zBv!aDH;rX6!bZO7sS{Dd$~?tgVdm3K7Cm%R zlx8<5k1rKSZl@^0E7l=N^AP+n00Y2q508#k>Kimy@lW3KwQDn(vL)MOC z!R@-e+e-rQUiJ0i7q?>Y9{9Af0+;^3k1*Tk`PXYNKPoVf|L-@p^!#A(q@3Uoc-ocF{0Q4>do?bIlXrm>zPYvETPO^717 z*Ku}ibwj~x&7WyoGbRyu3Ioe$hFJP4iL><-2f8?oc&f7^w5Tsyl`r?KQ!*fMop%Qn zrfD~|di+U4MtYi7w)JXhA|Xv6Z6FB$b&x{AB%GaYpE(NAI{gzusr=#Gu#?jP08p>! zn%Ki6cS{{iT+UZ*p>SSp7qmsOnG_pD+2!m~r=a4VuT!EV}Q9>mTjZ8XXKE0~2W=CrH!Ha=Rj+uN!QXR__e}x<| z_ODB1t=p|rQ}sy!)S@TNwZ~&6ed;Z!r6NGo0l2x8B^lT#gCFc`y8dLaT0L16Rx+hIY8sN(!&0NE0UTj>Xpd$trjihO?HA-O3 zZ=&q}!H>mQj53%)4w%fr>BKk5O&u9?(Ktx?M*xB~j3L7o@}=hs+quBgZ3;t?Cnw0f zfCvvWPP(H*sc~Pw{dhACuSm*PY@orW(FDnrs?*o>gKshXGml|<8Y1uOp1UFpPrm25 z4YoQq3&T~?k795e2Oi`_(Nr}RTIok8tn;mTnMi~o=`i4ldlOZ=e=0b+K_Q95xfxW` zhuiWs=O4pzI(~?(u%DPTY|6x*#&tN0!ctHe{qcm}{)PMhx4GuB6H5Ii13kXqP`md%dl*7?pl*Wm0r2c?|xH2Z(1a`5^~2{p#>n79M6ELhq8ni7>%KFJeRP2{Zk?ctVc9`_)1O&58j)9 zPPm|CGe}R%yV+R`tdTYMHg|Auid)+9ujvlp&tU^|%Q}|h|ADV${baItU-?N3h?TWj z6wbiCkz5g$t_GqbZ<$=G-n_ib=2eq@9HY#N=Vwji!31Gg<*kH}i>F1y&dNU!BcWrG z9V`p|2q8h(;L5DXTqRC~VIDY4&XMP2pKUj;K4@$)@X{9>2i+jR$+s z_e_2sni`4ydPe@BlPkf~i*(36-y>%1I5}$^{b?++rKc##CDLPeuL9^Ubn{{3nwZ>$ zUIH_kn@8zTv~p+{CPAGjkR{Z=f*S0Ta(znm*;~m6K{Tut26f{P?~U+3iR)k_(Wtm> zo>-pk-9M`j?MR5q?y8(2h6eUFx5)ESO@ZewJP|B7Un(~Z!SYZ z@{u2Fur$YQ8EN`a>OM{jWy!)+*-)n=r3>CoxEfalIYtY;F+=9vElG~0N>$0Lw@v@i zsoAxB{>kx3%~CoI6P-uAKxC5nTbtN|yjO3BKdOw&KHrm*x>Za$Fzcy5{`WC4jG&i= zX>(5f8Am9KT;rMB?drS9!Aw5`F8JI4^!x6^G zMK;A7VhRcka7Vuv35oL&KDHkyu}-F=N>?p_$NQlGLOfRXy+vgB$J%TdY~#BxwHbBNiX4)<|{1 zE9R(`N5ZgMWhEF_i{4H^R^Hw0CnZ8=(ta#HByI=T(Z~7lKsre6y$mWTS>)pBrw#kyo z?~n~rjuQym*gVlo$dvp)(=;P{k5vaw%B<)AwW zqTyKAC4|To+5&7nqTP7TRMrHj*45GT%SYEA%*5p&wo3}d-@1pwUPgj=&ICMYYbZ10 z+xzS6?xROz6GZz1aKdiNAm{e|+h-PlipCCkzuZ_ zhvxYz0)Y6&#?~X%1!ls!@Am99v*IZo=h)a&A1KuIBtrIdBAUd` zBFesI{}Mm;j=r=!i})Vo419TL<@IYcyY5Y(|LZ^ReEhMZqpS?!OZj7sm|S6#NULgl z5hvFNY-Lf;?T>+Vi?URWGQUySka|co3e32jbV3dsCT#6ri}WdWGEy*Co#qz?qH?jt zRlA&9bA1&APNe?@w5Qti0ga1 zCWVGxLDRo~RWE-YRtPBRQjA9!4izQ=UI5NP7r+bi8n}i?83`47*EU> zUnh*1xy3#8%)fv9T;{3-iT#@diC}k>ZtG1Qu}}NThxmW;BR_{(P>#x!qwhbNekv?y zZj%EEx%5kf=a0{@Qk|6f8`EC5CwP*vRiA7Vzy!@qOQ5w7Op#aN;(z~YmLeZk%MYjX zB1yQW0)Bymv*tGu1zOEeNNqJ#3J2RFDK#VCPm%m|EDfJR(3zq*2}Re zqWa;A5Q_(+rW1j-NRX`ugQi`~jE<1FdSEWwdv$M=we`u$ag>b78b-GM^KplXzYD_9 zHx-0o*3l^*Vlqx7^z_Fq;i%v^b$&rXm=AdJbSkctwfq4;PuuY#A1*HjOTz>_X<1U~ zlBQ>qdER*SH|UoAJ4%_wR?(@a0D`>+hn&}f%!Jhr1cT^hY6UM4@RG@;WV00?D&6a= znXCknWr7y~^#(5nghH$=y&(4GTPEzFxSN->FNWV8;(@C-|33N$Po0=TZwrW#SL_g^qht$ALTtZYS1d{62!0 z=G$c^eCy!CG&OAJw~LWc8n%TN-7b&{nf6^N3!MxVad6>9BqumHR76zpR(_yY@={?G z5N*GvO4rtR{5$!`)9$Ac&-)VZ~|6?*M1;5e(@%)dP z+~f|K8td>nio;(;IasKYA=Vr5v&|b^X{Mqdq}DK1IEbfq`!Y$LN6EzBEfC`WhH%7% zKiQvJJDD96*@efJ8F^!S^h1V7L^!ir+6s@}=}wXY-32kA(VH*r6nR8mcUP)B`o-gP z24>p0sst_*chS@}(6?NwuUK4yS1NAjlP0swxmj9(fQjCCwfI^v4aPrY?LE}|_;~uY zyfhsnA19dRuSj$IlJvCawl63GXK3N}4axyT(yc1^$4GV3FmN0W zFbYp8!XOZK>UMULJ|USlEO#HtE@CC{+l%WU(oY6rXavnR%ps3k1AEX#Ci+7VmT5a> zi(iU_A_HEs+Ms`fJaLZ8ieAoj&H^0<7I_OJ@8=BmJtURUG_Kx1H+N(@`@{S)q}T5A zbMa6nS42|6FjXsVM;GHK%me(heemf7gK>CNc6zALTeY{bIBul`_(^NxoP~e26s_Vj zkLnOBtP?R-x~Y?$vkEK|B^D`lKvpHe2ghaK`r|CsFZk@$Px&e%Fss-=ReDK9GnQE) zr8h0@Pg(PxTN`|MMu$tVR9mdl_tudfm6;*#_TshmxKR|+&>PQxnjOreE>qerHu>~X zNFQ)oB4 zTZYagI+wHRl4QC~n?qNgKr4mxbH+hDxx3kY{-9svV+#|F>h`h~qE683%Hn{fdscqm32@ zX-9ed7~{6j@3_hL0Qc=y8=44-Bh8Uzvjv4~Tr1>%W%#oz1Q828{L(i>spR+1rWq$| z0oV6-v08`(0XE-PUpP?+>~*^f}H*`)87ulo==~PjR!Me~g4Ra{GOkJ3K@o!o@xc z(FnJ$@c&(Zeet_ddb9GmxenTRn(_ByP^3MZ+NsRP^bp>K*@GM4n>}Y~Q@PX} z=K8%heo7X!_A$AR&QwD-EJ&Lc>tmDdpipDMUFta*dIhb(D@ zB(Ol*53kUdm(gE2O&0FDfEUGkK-+iHxJ_!3gxlRfie^XupIEEhXSH6myrjz#vPFArsa zYT^BHG*8eOmb^TxO6H5Dqt^KC6*oF)uK0VqmwPdv)Jw8(inn~dUC>b;SaU3Ftmf|_ zl$$#ibq}Hl4;ezcM#PUQ3emLfkdE8y$Z?i`|19*{4i)BTb!B&>`?w&n95jr#E;j#pRHyBNEC6XV0ky0@P^_MuS#xa2_5n|Fi$oC zC1R^1fwqp--*+HN5_6N!BBHksJV)K^!fvc{y<|?Qbb6JM2$~2-`&*{N^4xp)oc-k5 z0qP;X4zWc0-v%8CJXT{ zfs)I$kLd@e;+m0>?mdZ!65G;2(lr#sR)1XAe`@vNpnSD~J0XNFIX!8>bFP|w{R_cE zsN)WD zL&D~9i`orJctorn0vQGeoel}I?x)9w%2z*y%zmOmW*z8=Vu-tpS?QK360SF7?;S@j zv8$RMPPYqAtN+T-Qg2R8c8El*|I)n>f$w59wF0V2XW~4u5npve|gZPI@_VkP{*ud3td)u)$nk~sz%6k($7fNUp z59+|PvvfI}2k|FmWhHEdo@Bp=ljxe;PE{tAxdlI_>`LB`$6_s2Za*TetgoSYuGctM5sRla_{ zM0p^D5eq|3fJUGvgx{hl07ESk4mdx83HetfHGUJ zAGco@h+M0%)gpn~gwt2aIYV49YKqbH)QnNJrtu`E;>(;&RmYHrFv1*kycz#AM{IiI z{rlf1fJcb4z`p%~)Ny6N#k`;j4T_?05~>@!b>JRS%0Z!K+Aw$pEBu_$3^zXDWte| zERZH6w*Wr?7kRLNmM9pOEd&i>ni)%6;<0RD=OA{E?#m#nzv*(U!EL*;CV}tu;RV7m z8T}z3oNg9CZ^`<#pj&1~kA`8~k!(3|-jV64?$}XpK4cq7Z8yOzT;=JHp5CP9{d-5} z|GClzL#r&qD_%7GI;TuK#-ah_hTx%bEfd<4mifSqQs#7aGa4v0S& zyeW{}pZ3x9o-&W;Aes?YWLi&15KB@_hbeYqSIXhFxv32w9y}PXg?h@%M&8%!gDW#t z)}>faNql-?k>+VgP)&aHkxL-*fEQ+s9S#QqJ42TLSctCxD*j~!xeuuHiJ#&11k+{o z7SnJ~lgV?mGflteZq*C$YR?bF;)+v@sQW}oKaEd2I9E$49D=?g+dG1+4o?nk*qjf_ zwOx)Lyq*j(ZhcYCSECoioG@WSjjz;tHnlCH;J%fn_Kg)v30F*R{jYHj{h>K^3(gND#s9 zO0^ufb!+ zh&O$GN>I|FIq$%UC4VO9t8UnaaAm97bF7Y{UQI4(OyK30|90-zhzBC$c9;B!ldTUa z&{0lenZwmL8|Ik6hfBQ&(Wf=Gj`BXT>JtwfNfY-C9>NfC$Y5G-CXNFV;4Z32ltRJ` zRvtKV40$dxu=2V8NYE12Nf{@rQo$Hgh|?ij@uCr$YUr_e6c7LI4tZs;L&LCv2|u&s zL)uskPf>js=i0cudp{sw#y9e*?4G>YJ#;Q^or|2tC`UIfj zN$#Mvtq{lsvjJ>ExkNX_>;5KQSHuZxO7BFUZo4v2gCniBI~3++NvP5-nCn>IdHtaygrNOJr{E#> zF!kXtNS>RTU`&*=%eqRUhlbp2uzJC~e4^;P{mLZrtJcPY^{dMvKRXgEB!M&mOt@DI zbo28g={lKFe-YOypTt0D?4wH*Qo9f$6AZZVLqj;tpf7wCAU=N_sH|~JZaQ!uTr^sy zH;<=o|14zt7YSheE4Gh@U#gG*=`I!bsfe`RBg5@iN>d}~D+P0Fq-oomYgWD3RUN_v zkNVwB{M$-AAnj(4OcY54zw2~g8aTv`*#{G5F%g9`ID|9UKdL+}lxHX5zSVB0tG;EJQBPJQ zw&=f`OFd8M3B;v!3Fm2*X(TOaKLtzz5zEWBEGn_!hB`-Te+7ffHq1YKuGQwb8%}*5 zk@l(#Yu({3YBt8BKT$xs4raFH8T(xxY9p{fflYbRP)A5^zGtQdSRj&&3tX6 zt`qf^=|v>0NipsU2mBZ6i63r#=8+aj=lU=8n zx9fOLHt2q??CAOacK00)@IO-BuKNxDi+R=mnA87Ho!4mg0%i7tF}$^ro{X>@Nzn{q z>Jkg&3v3lWr}I&Z=hE<0OKw#qf#r`l{-%Df8j+&vvJ$c0pkUufXy5qBY^5#eGr z_j51yGgGZe?4s%87}s9N)N;YwFWqvH>-c!*ZU&e+~9eZzLaR6K@j@`=Kx5g3wH<((-D_am|}A+ znR?|oB4!Bz zbJLi?P69DHoaiQ_qb;$d4x1WX)@_R;3dnZ&cKPs448Cfx$6O^CrN$_NM3z|EkL2b+ za-eu<((_3VO*T`)lfoVCC;H?W71-3Qmswd5izhB`h0d?zV`XAEw$wxpDTb6~^GnI{ zw$eMAfdk&#mYCdBoKJA+kxF15v0tB+q{@J2O|f$CI=rKR>hJp*`f%^L@)7cP(%1VF zNsf~lObttsrZ?{I_Uj-Mu)FLRy|nX=L-LDdvV>bf0-4F|e@X|l)f*=sWeoqss}fh{ z&xPtaF-o|UKSzO>$rLm5vC$6s`)rt*e1I)2ymju6JYKw34D4MxlB zIDbnJ`@Z7_T+xdouvBwA?F5h2;B7OdORD|lI@ZY`ZMg<*mHS?76Ngqd^&B5#Aa#z74edH4d;06jD zpGt)Y zIC>*zOrk6U!siKjp5c$;ihH@L$~4z{QM=( zqW#0dBl!u(I7wo0oEy*exl5JeLr=Tkj7Y#D?2nrFkk{>Va9qB?lGL*WB{os1!LD{e zT{@x{1|z&4k#lU{CFS7`Z){(-dlC#k_R@s0mI!Q^36CP+q8Cy%@k@i~!enCp0+|U# zCl&%;6w#O08ube8CZ#mUROa_!4iDjv+Zb~WBoCR}fJ3Zn)PQMl?e>LS5+JCcWO1*O@tk<)2O zp|p(nCTJ;*l=D1pR|KSJqL&@54*j*Wl|Lf>cI0(Ofv6Y)yjg{0Z~yMC&nl15P-!SF3W9Ee^OE zef5>hBWmq8I4jBs_=kQTn+A3g{JTOV|(b5cgw+2li~@M^FVRV%VS;Z3kFAUn73i_XMChZ3)%c(>cw#2I&!s!qB@J=8~e)zaFKmDzD!YbW`?Gmfq~FQvEO0*%b*;~p5Z*fXHW(}1ZSv%vB{8h z7$F0=B%=9S+n4_o`Xmc@k%H#RvuvM;nQF86kY!~}$#jdq| z^`Dz}{K}bxJu~z5^);B8nXB0@J*iw;#SR8rQ-!pPm=QlqLnZS4Pk0u)-n)oZiI0=! z3)iB)DRYL6`-X`;6zwZF>&>hg$xNEM@-Cr@Hqn zO@oyGVG_k*GT^+<6WO>>Y~5`=^$o_&U8&KB71x4pvX|;B>Tc*$book=RE>$*=fP;3 z(=F~uao+RW-711>@gcIJjDt=_x`*8=&tSg0G~lpVe?m9`+CQZr*_e@+Z(m=3wA)44 zL^AVPUN#9YU>tnGo@ad;k%~BFKR@>K--NmiuDr6g3i}*+UXpkOGz5dv8{}^aE$yb@ zRa1hP|6xQqFE#T9)%=<#myk>%Ay zU=Y^byTdpVSKTJooTE=UbvZ&&lJJYpAfW$=d4o>}&gf!QW5X)@plAYeR&%DB_ zm0{!}12&|a0+XKS5=~M3xc-&8(w{{=k6&j`<_lAdPhpT6-{^t(pXxe0&fuGjJ8_YXV+Y4 zCJ*<$FsIY_4{v>p5OPKO&S~+w=*s)t_prcnH;etJ~HEK@u6pW@j!eV@9S z^?WjcX}dQdA<4e2Z`4RNlTzd&lB{0DgF3j)ECHS>;qmd*$2Uk07ETB}xiLAD-JPMS zi!BjjHtux4PYTm3YiVScG$}MyR%PA8quwf}1e#|rrL^)4&_BYUd}7f_cc!*l>~?$m zo)x#41|&GB!2O{eOHFrnt)l&E+N;vr{2_uhiLB-5aO%?mr;_xb1q$U)2^C}RwC^d` zOB#68;S5Y4Y|z2Kvptb!bPpMi1%zE2B?II|bwM{PjnfW~spX`Q6p?MKr}=^Ro~X`W}$_Am@JsOZtCIb>7FQ zFQnBA5gX4B7@c=(?(gvj({Tk*RQj+ z(a4UrwxQNvc)s^eGw#e>p3Q6Thj~phxS$R|R~kf&ZA5APV=l;7i$B6xD_O;f8uytc zC|6S#Z1dsGBHsAi=gis+=X=ywir_e9%UDBUfW2YJ?NE8OXTEysEq63(5p6+u>tIZ5 zsdtwsE*Bd7R^-PpLR`fJsVq#;AAks*@$IIh-?v>+2MXPXr9#?4yC2bSfZ4U$j6i1+ z5JvQ|_^xR@4i{X$Z?aDZEWd5=jPt_+E+D5_Bz-);V)YB&4>>_@Y7nK;-OM)?W-B>{ zG?Fyl)-6*ut7`1aO;xDhl(GyiwMhL1xoe6D*)Jq!iQGA2Z-ieus~X<#UV~EssCCj` z9XAVwAcRnw(ADn4NE#JMUj1r?=oAW?Q>BI}Mk{NdDLq5lJQHg!JjmR9_=*<>=riMIgS(f@o6 zq>r#$lR`h|*Zh0SI1WuhxBPWZu)jWkvmU+lqhDOH?B}KP-^l7&MP=rR;ux;{U{`+80R)T z&GZXg9`spG6Qp~obSx=(Lyz+HhduL{+ZU#aG0C@OOs6Olb8LJ7)(@VA$j-^o6--C) zc@?+N8~PGFIgBc`qq32=dw@JIz(AB z79XDK3DMe3hnSWWgCPAC;J#-{%>0cNIhCYnngUnKI>C6h1*0AIf(+LlNSKmpNie5}r&MRuCjiBwv+kKRBv#9R}#rFtE?niD6o8ib>p3y!|TX4o`|CP!9y z>Oyz~JD}HRl}4^heeRQ+>fMNUMhZnd-s7tO(2mb3pKS>3%BJ?6+uLoj7W5wZOWJc~ z*_YmI7Jg@Vy9`3Je(=&p3wO4&A?%THY^nj^1kqi%1< zYjU1%=NWDOp7Hn0%unZTiSCW*tM=)uEgA-`1#ujeVo#`E<4^&=G3C$zb;IyOTH>;uVvGeuy z7HV&qXds5C4?)NKKpKX`sd!9tRdGmB#}P_@PHzp5V8=_H15VjtOK*M4JmPPHwC{G< z0L(nNi#^J%D+N>4`(3ahux9C%7EMB{H?0*Rdi_T*sO&d zC~xC>wDJ6iyA)9*!uo-vp6~8b*xGcqgMiyyR4T4$G>e@-6CDc<_UE$FRISP|MubmO zo8vH;EsB`k0QG+Wwy;R%aG-Roo{EU$W;Y#0!zM5-Lm)Q}JP2MDjA}2j!X8qEsOkXb z0fJbp$c(UcQeB)SV|Y~`MTVkd`GYCq{CFPPw)rq2)fd4QR<{&15G1d`;y@#kyJ{J% zYaYjvYCdy^gfYAr`0aYOEU}4A7Qx=?4n*XLI`3v_#S{0N4v6cybkiTk!PtMEim2IM zd`hRvyG&u>Z;z>rXF>9i<<`lRJhGDgNnuCu`lKp>ECi2Q#iSU^xar{Kz^*7vJ}9=V zBoR(9!i(};M^CB9e?vs-LuGLt>pjUVota*ZQ~ z?^t^gNqw?ut?o!)$aCi6=*iFMT$Ug-QT!)LXYCvq^LSNuVUPK@A{2!-=o8sk3jGJy zfjmY>B*7hJ{*~HY*JlUgz2|?c!7$Dlnl2e!X1vb7l;M>ibtdJF#jp|b$@Z4erBu?BU8^ZpQbI0TzeOjDQo zaj*8vGHXMM9TTTCS|Gj{4`s00us#}7Pw!w()b*uKYfHoYH@6O{0_%`pu@|%PBpFu$ z8WPD~VSAU^+5m*+-10G>)p>9nEPxu(m!53DB8u;g#g(rpm6=ibgndelioHhz(9ER>JRFlFE2qOCh;mp8B^ z;s)aGn4k6*VVSi(JKp*bv-@=iVuLR{bay|$#>Y)1Xm%){%X>#uc0#5iKeFNAf3v1c z-Br%z9wv^7=y0FsVj(I;0IR?oYZX24_AN5?i6aoPZNqhXxDA}(a%OuTtWu;3Jthv}m0u?VIp2eFr6EJA&7VXW=0jCb16 zz^m@c)mVcA^Pc3cf3?p#@nF?OwSTV^Y&gfo6vXzAQrA(}Z_eA(4SIg46Q4KceX7Gg z)P#j$%VVx3=gwg7`^v?6Pacd;6|Y=zF_AbW3OU7_KiLf&dxXKhaQXc#`duiNt)^_< zh*uCrLpfcGy2+P#DwOQoVP~-UNer9U7||6wpXtB>j$ocgEb5i60Gop(;OTK7ak1c`l4)G&5g?I`Gh$&+V2O`OFBx9>D3J)k59^z7Veo>M!7D& zuW()1@0I>a?`XB#Go!DullV}zKL1Akm{~x6X)UqWfOD=J|7#^BU~HP}j`6pw9E z+-LUwg98;`_i%bruejYrJ%I3q z0x1p*6*ZpP6V`xZw-;-<*n6)LxS|swe_ml*?5zof2Ny;U@FoNGN;9Dg%=Jy#Nkh~8 zjtW|};ZA8hyJ`U{%lT$Vb@sfvVGEt4V5@Z+#SmSzE9IYBigjgmqdb6X0>xLuP|0an z=uI8`N2XBK*}*~l&q!D5>qx3z#b+S#m)jE=V78P}QczEjT^m!&5a_`4cMP)m^_<~y zOl1iZf)1=kUJVHXAG)t<_-!T)ym3q$5z=bWRfdJhb3NzWXEtSebd%# zIEL>@ntC4(DSic7TH;<a7v> zvTFGHKv*%s`$HOd2u%@*`kply78Mm3V$xDRsnq?b#F|m|+GyWLVK@aTnde)EP*hWM zk35>B*y17V^M5M|Z0vwx8hC4aNZAs?mYws%9)1o3QRO@27JWZDwVFGANv})&3UOch zxj1^&F}4p8+=s!DnBx^Xaf~TFxyPsQ(slhZs7JiV0O~@{ZT>KK_$0i{cS)g|%3dp^ z*@iDJhVUb%;xh|+IVje#sAR^D=baLrdkNlDQCRpb4-=MM9!l|UCv+b3c^mmEfjPC6 zNTd<|*8htj?iNin>C|Ca@k~_*%^edcaE_%4C}w=p{E{>sD-fw39PXMU?Uekyb8_)L zH|C4;w?jX9wkd0SM!dEGd;4oqg3Rz4(So6BAt{Ot8>K?00WrNNPxgsqnQYI4ij>~R zPyP=YfF#;W9mqfaiD`kfmSk1?#+AGCwbqry8Ia_|54e<)3A23jvVP&PW>o^0BDZgDmQ{pw;nAK*`S zq)JVHXye37srV+To);u}FEuo(j=Vn+l2zC3bv>Vt&AgwV-jjb{o#+kPZM|0NR%NGh zbC<`v9SW-E*_sN9jOit;X`NO$&t0X;;p=fV>3zitSvZR4u^q^!O>o6f3;t~Dg&#-! z+f43a{k+$-L(+dF@Yd2xF+b-*@R!9zSwHq5^NN|+R)u%-VisXDDLynKAmls*@bbxB zCPIokj&$3}K|)#lSI`O%Utg;*5fK+m$dz{hH3r_6fp5wK;^VYK^Ne0KtX-a)qOH%* zH%nHS1SlOgH5(BrKg=CP@Ml54aV!Qnbz`l^sZ}WV5APokYXh*aOMtMenG70ak~YvN zvPw6bvvsEz4`q-6Dig4H{BS95=q*Ds*7&y*13**BMv|_;_h$J)o2+AHFfe!!7JwVjbD;Q((KC#TX9b0!KVM*AXQy( zQR$CiAJD?B^Mt6+c)aN->VCF9PZ+{c^feKA!t)IG-8XYi)bEcB2~1&Bp4CRZI)4*^ za4`kwdN^IaVi2qm3Qj1!$AldK!e3<{Ykk~0W3~eep3K6Auk!~UP@LlWiR5Rnbwj+h zV5`Yk?QgzljK+U=nF`{`wZkNh0aOd;Ga0)!jc&iJ5Tn@(R@CB|tfErzAZQX9f`omv zRDIYJn^FLJoG5c)@wpGTnhYG~VQmqLG4cT{uG}H#Fb8p0y9nN=n>2BfhXIbjja2Wn zXC?IQ`|HT(mpQoH34|E=u=o*ZUsO-XCv|HqvwqnMhlGQ;XIOw|+m^T3=6ZB#KFo zEVGU~$F|qk@yZO}sFY?IgEjuHqmQooU-f1pUb@!Xs|(RcFefK=+hrV@&A{TVf6ZKz z%I>Es+=~M&U5*(RitY)(eP2JY_BBb4OARj_-+}ZUY_Z2o9lJfb!G91fSx@CHK? zivUgY-_Pn+^1Dt%iTYp7K%>da!1q_p2k63EW+y`D6*UwHeKLTKK4iVMzM*!$wRXyt z&V4MBs83NP(WQ;8vAbVs_=LIZx-xPys`;(6#qMIg)3))wSGYUZ9GUM?)hM`4gPWaC zm$d?cB!KmU%)^=ywgp4wwu^GfcJzzZB8>AS<}~Ikx~u>{F%b(^|K)NP(?_fjUi)ut zEi+G92;8C<6^7o7CY9QyM7S%?Mi*d4;fiRwTOgMc1|CT!^^PDR?Yw!AwG|eon`H5( zo@!?2!yuT`VaSc7GI+4(-(@gK-)MUKf#pgBOmD)}vvN8T!v`MF4X+4phRzUy&!jtotUN2}wf zVutKNKL7ob1~H$XS%cda$1T{qQNSsdSYgE{xjH_H|0%xY+gZ1?)c}-#F)tDZql=mWfW=Ug1r9>i%Z{wf{aI5l9{=9VKMy z?*G?1%SO!>AMA+QSEP!T>Ay9G7Q^J0^RqLkAFeZvJNbZmcY7^mMZIoZY^QnPw|bkH z@B*3jw{#=sOf|BW)&Rs^{dbyu9qk{4=&2vX)0}_^g<5@$+ zUnVdskit%p&<$N*oOs2ZYCx1Hof)k2``2f8Xy{~`N6k5Q50#Hc7IRl=@@F{{9C+lI ztaU^!k4f5ebMZ&*2^UU@s-M)pkcxN&0%|>po1W1vc1^$VVH{E(unHrRQs zG}PGXVq^nU$I4Qxl@*e6sd7al!lc>%My3+@L2I+N?)@(AFE^l#Z;XJ=Ea;!NBWlso z|I}&=O^9*-Qy;_#|7!win>i~;e$=Oo$7YV)OX09Hh-vmhvEAIK*s-zthb7aD_YlWaSc+q zdvFO5+@XL15}e>}2?2t;YvCT;-7UDgySuw<;at{f?e4QzJ1^s9&etj9A7AfZo)E?o zRMGPScYR2KC>8Bb1X=jtNlz>aX+)%_i+qbgCqyIQmzZHB?@8WY-5c&uDa0v``@|2b%EQVh{q@!j#z20P#&ji}qK8gJ!z?vH}u zgfKW?x;S-M2Ph(A28&Fl+E~rR9L>08J#6S2D}j5r9zCXdZP*T&5WuPfO#*6b;V1dFGPK(&9VI20z`99S(ncq|EzGEv@gQ z(4|HCzM5vZTHhRK$o|d5Ben>XhI!y}zKh8=^bR9MvQ$Xj=YHtvy8mW_{@3xM@7Ka4 zCDxUq;`v)T9b{U_=r1Dq`j63p>~}>(&>!%WFWyiT38k?-%b(iOR(UKg!6y$@^Ow!1 zr4Q`y8q!5cOoK`BDS%QOB1vsyeDy?#cG04=%;TA`t9lYZLS2~=Lk`k~8wf9VjT%Ca z7F)OP)kA{}{E7->E@WJW+0GC?F_#fXL2+P` z`-R_XZA02V$2>{KEvR=OZNdECwvs%}?{hkt6vEP&vvEkK3Xe&N%P$p|AUv02z`O|RyRAW{7v2|Y? zDQ{hsUE-em4o}=EUPGWcsxkI$Y!p-iPO|tNpa>{olw;5eJ*ID55g?qVGG(-|a)nSE z4KTC)aW~wMft6ylF~zzXS^ZKzmSJkpu0+VN`pi7g@`t;vWCK8f8bB+q;d{|?nMICg zQ&rD_47w(SoI^}w12y6Cu2Vn5HqV?ohNvs)y=U%U96wL|H>SZBA-gjdwm+W+#E9&B=n&=!YvHNxnT9B#(L>b&EC~C zNw+EupJSjC8k|$Bnh_DNw{%DfBebjaYrL5q(3;b!vK}7;+#H%ipHadvVN-+&{7uF7)$&p#lp~Ja0Eqk92RVTJ*hc;y}E9c42 zITZYCJWOF%cx&eR7&KI*VWvsEf!{wz4;j#kaV+9Je;t*illS4)FOP!*d>OL};9XEi zL-hO_zd7n2Bq20mPDxtGfhbROs9-Zl2e>@?!$E)#V=1oL7FC?m#sp+MGo=|KEoq7z zO6eg0Ou%=ta0Mg?h)2YO)bTMIAW|v9ts{h>`wvKvOB18ItF&g!MC?ZGuTN(@HKA2Wi6B}qjl%| zF~DaT&5Mli!Qb(R6{v}Id505Q!k9r^A7!HF2C0zO)RD-nEgBk(YTYnwTieK7iQzlR zkksd%lz#FZ+e-TiD$a#ecF|wW4s09M63DdN1zaN(9-rE>)_7&ajR5Apo0;br>AM5< zR`jMlX1(j5ft1O+gq2`g1YZ1PAeLuGB041 zDNWP-(?nskR|rc+>p+AE(da96gilB)a_>K!zxSdHlK*g^i%S@D7+Kbr(CjLtptI&f zKS0OJ+RWE)UiTlX;^&qBgG2rg7FkZF?|rBC@K%7be&NCZFY>fc{J5X`=klXQwhSU* zXqJk%5<0KV@NC5tmH6>EYrD2sjX~S346l?Q$}za9%%%FI#-zr~h1aFbX_Y&`^s2US zYr;aYNhWyiP-`pA=O~96vBBpPgvu~|GaI2v{`-V!20V~g*eji^M_QNE*G(6tsor9E0mR8HZ!yq&S{oiHFFl@wxw>pc8D^#IVxbi0|Z1r2Yl!b;9?dB zwsHg8alB*2n|u{1T81TJ+&EIizv9n(8#;(;*~HS?&}+SsAO+j|OsddKD5D8OM*NNa zE718~7Z2QzVnj?8&^Iw3x5L8A6Wf=WX)|fSVKqsqS_}9_Z>z~D+sA3p)ma4NSJ;u^ zCM7b{80$icZC8TE$?*?}xGRNin9sIr7)B8c1t znfXLs?tXpaTOP;7vYSL)B)f{dUp`#@bu@Zojh-2zr#w}NI9!X`3we65Q*khTpr1m! z`MYQNcIOs;ESv~O6xeMDgfUS+)wV*9wsP)ku%rJC5t4(_eo_0iJ1|D{r9QcPmQO5= zLshw=k#1B1+C|;HCyv|lCLwZXa}Yxw{@&$c%Jy~z{J2sQ@1d$Iz( zocbk;mMdW=WT$*h@@)^=^ic^6{7~3fHGg+cBJQjv?O>yknvDaJWH8g)NRGJNco)}R zh_>o|&Lw+4%c?_2$ZrFWDQ4A+Rd-t2Su6k*QWxj<2b zDy7GRA#cA@ptZXBfARX+l@-zvwiX|4w%f6Lq(vH_Qo)g~G3jgcAQm?6=88g)2MsIu zZVyG#D+Dj(@c`qmu_pj(im{6+^Q0z0lP%Yq(F8KVPERy9o`6bHvGO9F9 z-_`P(nzy}_Kt`3g|3MxGcK)Bi8Q6`;xMSl(zH(veEoidB{h#@n^~FYRYdegi`IM11 zLmkfAA4$kcLDWjY#|lZLs$`Sgz@KxL+++2_#}Ww9B7QWiBZ6rC(tT5-SM_CZw3bo@ z@@ExFqK4ryXes_PVhYv5`GH#i+nK&H3|G|1p>-wqtFhbSWTKRSB?;B}gq_9=HLZ-J zLtd^Cad=#LR=S!IUu@gh2ksjJw*F9h`e$S$%!8-P60Lsvs#?2?#}qYX>vjrda&!38 zkQbzqb);AmcL5!eDc{Y9RRoj@m7G5&ZH$QufLfB6{ftOnsr)n}%G%dGr2a2|r_Et3 znpiSSCen7?RL}%+Y+8E^{5&|>GHP!fG0E%ZH_$%K~3J6f{2C7UzU6TmXi3b@d~+f|9Gjxdz3tJE9pw z*~p;?kdDt_!X-yhI4m~BM+fm|Z^CTh{sw#i+ZR@#K{^%%^*L4IIqRezCto&^&(s~6 zrC;-j$6uLc5Tf{@o2iHJ16A1b4Tiz*%0&q2$`3^;LTd`q9OGX)wTymNDyzo`wbSEQ z~pcjix-BsPB^ zFaC2ET1aXX#&{GbM}MErROfQ8_dRZ|Iuk}@&7|oTDMioGe?YhSOXt5&;QnRt!hFXV z$C1%$5{X*XRla#Lf1Bhr(E+jqE`h9U2XK#{kn3~sT-Qmlwx3$R z>@C3KE>O$WNw&i~?QT4834r}J zcfsZ8L~=rU$w(>Dbu?9ax2iE6^RUZN{(eR`>%T`yRZfJ9ruVPge%gCk;-(T>_t)?L z;j1`<{DI0kAxi-*N{Z&)h*3dPDu4|(s+~DrN#6SogZXS(vnK(yNB-?OCZ}4WFyvNY@>IMIsUI#)SF}ZBIn|`t#-gi?h2LkEjok1RyClsx;z=W?8+ilZf(Ig6+C>{gC zYxovH-yQ)Hv0`&KfOk#_Is}r2$b3u=J6)h)+H8cshV0A}>zf3$(1- z(}L{a%Zw@*ZF9Q+nJUBPGAjR&G$1&lTdxrPZeon^PKoG4>JOAt<>w%iK;EeQP3@$^ zo9{v;%9~D3ms!~R+U~7zr4_ylqCu7Bu7e%f-!p;U#Y7yHh5=$U&QuEk6<0I41SFbY zfp(hQ03=RwcKY_(kB?uYy@goLNfRD&&30))X`hfcg~-!tA>-n`pIhk{Ytk%+#bJb* z4{5WuIjyii@xF^>i!e#=didSNvd}|b&OP>THiGf{&2|$$78Cw30?&pKKE2V8!A#v z5%TJNY}?7)&j1?S&)@BY5@{Gm_4oGMMXrB%u)=|?%glMa3%qycPCzFai_27;Pl}u8 z-yQx&a3-E9<&Ox2mPi`>fBR)NjYpR2Vk}tE_Y~UzsZJV<4#y z110Nx7^r;98M`I7D@hgc5SUb`@@C9;0h5>6966ss!_h>^p*$c_UF?^ST&yv$EDi%* zl_ti~A~rqSbbfW7f>L0+`!K>q4l>u+v-wqUS!uH(D`X~L6 z+|glo9u`ZTAr}tAnLB6Jy@ISN?gUuMk0Fav-bIfIE?Esb&MguI?oxL8@1pJC8{dHPVRL)M(}FKzzgtot8f0apzvIvfNU+f$I7D-a45JlOGTCIRzQQd5i7F*l})(P)YUta2s^3)o)Qlr7EHp z+19h}JQZTbP^#|lxN2$zu)R3_9QZfzLc<524nN8TRMgS-Qm`x#ZiW=R;?{N);}M7% z4T`_~Mq%c(O>UGg5A4y~hr)j3Sc0trDu}zN(V(ZoA=nHt{A;^L7PQQ2^ZNqzYR8OC zmx26;dNXt9o46p%bf%_ir1;rwbOj3YvZ($gjBNLB58C5dJkoy-IM8PN{BT!2NQ^VSfsI-<(R-bPsHzxK#o35NinF}nQW|?8B z!;tyGltD_psWqgT@>x{Lb`K{x1P>wCh(&EY5`5oVhgbXx@6U}y@)@a@N`=2j6V`o9 zpvCC~IH0qS)5-0YgT)%EP~|1PH%O_n*^T8wzo%PcLx`}BID{ogErZH6%49kX`-IT1 zZKBqC!wBP0u`0hmyb3vZG~L*`LbR~e7{6rZ zM~UPQIVj>O_?9h>FQB0my}Xal2UtK7uiT&)JlG0|YGb+jq}kCh78v=HOMbvuM?CCA z+D>w3@XGa9i~>0mc*fY$(mpxjx%*J+Br_s_ScL-T2;8UlAhv>5AH{(Cb2sQvB5WP? zl9ut0z5~;bGV|golD*hQJm@KOHdyl|pZc%kA_ulT) zfd+BZH&JF$d*A5g+N%Xxv)+ua*&f=K!QZPNHufNRSn!TVjy@A^RO36Mt;0eC=a;p_ zN4c<`RxgQI`cDY+(o`;AhNOv2^YJJU4?07KH1cz;ZkSlPo&uoxDE`=7>ub8x#!UDy z>zO*`bdMLASa*G29add!M!Wmv(TDL<5kdne!RquZn7?vdsK>VJIB-~c{I0`v-<*5? z%HCOv!-?z00HU|_ofD-aEIUwufSBeg?kxd!L@cT^uk0b{U!ZsKa&XOh{RlOza35=0 zzKhb&b)lT;)ZiKMDBLM=2(Gbq9T~+yU5V^e#2^RInpz_ea`5i?GTWCNBN$aA0mw7C z)p{k8SrPS|h^@dLX-W)F4x>7t115ydOvl6G~Y(pXtE$Mq$!`KcS35ax0+8UjfM=010QK z#i27kGhZ%WLn6S>SU5ku4V6YmI)oQM(eE6?$^C~hQKjovv&`6|!`z^SE@e!J;4jJz z8BOMvklj0OR2xqAL{E@$Pu%o4;r9O3@qW)Sa`e#)!8^+a6aQHm7S(OxiAb0;%(O)%vYB?&ZLo5muVS#IcpPMl<6CIjzGf{e}|f zrp$y?&=z(N+<6EWQmEn7-Bdd#5D#k@x2=6-l=al+3?wqG*|~fre5BOV=S4RzHa)vL{v<6Zc)PZB^2!!E%tPvtdk=&6@UgM=JE z9eG9ZQ>P49(vSQwtx5>c=YqA13cNvf-%fLC7m$)amu%nZj`_TN9ufDFm7`@Zz8Hs| z@bWBFjo)_2p28Y^a!xL2ZyI6}>Q9GGOh))Fdio5O)3(;Tm_K&!<{OB5lL9pd2M#q# z>(@;wWH%F^=v7~^6g;9&1v3&oQeK<&GJ(}ag+n%}eWEBtKDhGmOr+LW58N1c`|x-~ zU`f#rYO57)ru={7(aM*1>iS!IAH@lUZ?l;&P%lj)kb}$ndpu*-%KzBC{^uKw;Y=cm zZJx-@IsZ!e{5t;RqIfLtt6Y~PUM6a(QqD8?`s22u5IGP0>ova$(ACsClWvpDdV?3hW_hd!5} ze>&Q9W4f9_wwYom9JOT3^sC*j%HIALfk@T8hpjT+VA}NMugR&|x8eKA>Mzj$OdVse zf0aeG)huDRL46M>J2#a66L|amih*TYbRL#YAFzdhzZZz?A+zjL&kNnrpdmg4vNm7$NxPKrFLS#q1a!qHczXWq_zQ;+%%72tN5t1{$P#xou0Ug z&RIQV>Q^5MVPJe31)USpD8$tP7+5~{01I)^iF_R>D~vGDi_)My_wg7UBzg5mj9 z@*GwbuhDPZkgLd-!xAg<&!5Lh<9VhTr*pEJspb_V#jQ}r0O?aZ{6vq2(998$w5V-Z zRJn?pFit$kG-oQ*Bcl=8P!^d9(zY-3J`n2^*qFt)h?1=N?NtSY7Q!;j`nmz`K>{2c zsQl6`wGlXF`C?@$ANRci>^c0H)UF^VS(;hmvB(5;oO-Ogd@_BsA@rN?Q#_o`ULJVs zWC$d7%h)Bv5tgjWR!tPx-3M4cc6laFcDpHZww)Bc1FfPxz|hocMr zJgOM{PNf3i6f%_pT04y5Pc*3|{}#`=Ec zV_vOtoWrnIV%ttGzz_oQ^FKvETS)sBoFCvA(|Z?&T@Q|WPOY|Ie#%i@c^zhU$i+Og z{(W*Hpl-5(TEO1?pi0q_6OVYCU3=0SS1Xyyn`=8UUJiS4&5!(s9dcE4tGoZwZNcGp zwcRYGy27GUw}u)&lAWDXA<-9>ljdLh)j7;jDOL-=e-iTa*}SQYHH)M__3v$GEfP@7 z!AnR}=()Lsjn&2UZ0L(lvra10lM8EC7oj~EW8{Kzv8XA$<4}snsM0FM4bu+)a%_<2 z^LqFT@FR{$F7y1eKkCO>59=Llm3P)PKISXDZxq#aar|{j2?VV%ZdKBRZN=h}LX>USt8@B4|jB~v@9KTIW=DmA#%k!esrPl|P(I?++`YigheS^+uv$ zBnSOMl>?W#YAo`m>9ay|aL4c@Cmh+(7RA}r67EHHwLK+ZXE%N8+XwM1o>R7C{+i_v7{Luis^)9j%PZ%v>tGCl~|Cdfue)(?-GOw*>U48N4DLwfnc!3RFc-W>CSyLEkUO6DtRq?w(@j*7IqOk~GunCE(@LET* znQ1;x%g$%i^H(m8BhH^N#4M!TtVt#$flhYWBfjQ8@;>a9KhHm(aRHr|d|#3_6SSh1 ze_Bk7XEA=+`Ku z@WQvhD$g3cW>KNMQpi2|%Vhm1I}{bc?th{wxS|W|uvh*DphK$zk1x7IXC$ch@hQg+ zzb1Q9>#&mO!l3X0I9vdoX(zv(TfWEgVD-m=jY|?IfXTheKOsXjd#(1Q&8gmstM0Mz z3P!K1kGK`Y-}Prw`lZz(`G!a|6IP~aq<=SUl-J&B5nl@NNBnC9_3TO|tA|r7vmk%w zfachr-Q3rOy47fL#Sf)>;WH*%@l2NJ-9cGwLkuaIahyFT=B8$TZ8l5L)~3NP2hjXr zDmh<-EE00*PdWHy2_!o7;WVGDj)Qh=yda#M1K+Ofbvmh5`aQMEL+biHvy1BOC7VE) zb2iqbR0D(Ze*acP*>h&=3NEicE~JKpx%7mHS7XB~HLeGp4A|g!y+HBg(uw@-Gy=2y z;GNe|dGfobhnLH939pUkEY~+)E)jFWYEg3X!$3NRY0d8A>415G+ol#cQgVK-GJc2J z_9tww?8nHrBv&1QXx+NA>=`rc#eIaqZ`-4l@2ysj&-VJ(JKPuC#PswUJt4X_9D4sH z)@5^jng8?7{nq7uOWx=G_7O*U8S%bi+s60a`LnsR@xpMjlHRZ)rDnQh&5VNw#+`DT zQRZR601H}JnMDm)-zk-znbm8XE+XBdB~SMLY*uFqNT6ayqZQ{FR&kq0#{r7LZu6*V zFf2+1Rei!uhE}G;T@*kw5)9!>g35G3f|Oa{5t5Ul+D%m#PX@`LeOWE_hAn7Di7d?5 zZVUawkXnUPTJEqAL(%lS^XsZOXR@O#i{N-+ zvj`Qfg|QH>%zw1hNl$*~5A^v&_rrbTFPK*#Y7RSjH<-v=s)ZvF zV|FuRM&uxo$qi$nbJX!r=Nykc@y!Hy;gBLc@>gJnMg;t6c2BpYBN+ArrN{(ASDz~@ z`_}j;;NYB9NLty3AVE>uCky1&@2znQZ%=zGfT)VL zNXWo63=_E9R(d8`bY>33Cp01!bi!q3FafpCo!AR8jhee83^SxuyhpTKgpXSXzjDSo zEHu^op?YVCa$-y)1swzav~au8`3r06xEcngx|7Z|pR=0-M7B)oCBSA6e9~S%pLQSM zs_tAOMm35z^RC;dT0TCew-!2NN>o)cNR z9$e>FvS%=nTf2N-6>%?$XG;Hk{?;Q*TTCjO1IvHnt5U>LD9qsLLU1x``9gNp6+JWO z57H=kIhgEn{QNMwyO-4|Vv`HIaY@|ko*+1&Oou*-BA-(nSIq0IP0HvNlyxXq?7>p7 z2M#E#nd7mQ$;HI5nBZ)y z=9bigKGUx@^6v2}un*8$Y?q#=EZ4t*F%Ku*{^mbp*tg?j&LE33)`4|f=Ky8KI1Azd z=XMbV9~vyBJZ$o~B%Oc&!@7~L=M0HXVX)lQG!XRg3|3a%YQmee=kS zh0vzPs=FuR#tA}QnpgM6G?$@J53}i9KCdKbdm!c;LGb4y<(?Ogs5sct@^@|6s<93> zMN_7add}}Q^pgO<`Q`q*Bf!H5ohE%sd5qNfbs~-#lW(E4*>yra6XSsD=vj#hn(Brh zc-$UZF7>z*Eh9_4s@=_=tPe;h88rzi%h4vEamnM_KdHf{T6|d&u9%BH$;mF2uo3tA zR<$w)+jL51Crf5pU=!UGm-jhx%6MIKb0~N7lcBTsLyf%x%0(Phwam9H=ikh+LO#CJ z48+B-3{uUMD@P1JMfRt?L zpsaM#Y_WdC2=eiBwJ0V|1Je|8{^E2x+WIjAa8QN9!7J8}$yb9gq zZ+VV!TY)i%2rcaQkg*H-arP|x=GT8=TDc*y=YO~(v1FaO9+x?McCS@`cJ`{Szt-`( zpZXlt{`T~?#6(0eHc8ry?>gWZsUw!-I8gO8T90cBbW7aC= z0|d0KrZyrD%Rd9O@c`A(RA;KYK^WF&7i$v}=u&e#ZFCCXZ69e8*~vEJ&d=T~j%Lcd zvco63P*nc7-oA|H)|d@l#;0f>uW>Kx{-Of(`WL0%ag9Zg*ZlIuL@<;%OqVAPC>m}( zO;W!c=7J0{FiGbN5|hB$zn>sNQo!_f!DyeY2GlW)PxxBGG1nv4rLxFKTZ> zgFIBT01_Uu{X9ITSTHUcK4+%%j|T^~Xhm3ysFSM!R-oRH(ipwG?MkPAg-#Hu(e9y4 zu)NpkA|B#&YW2XtzfZ41P@z|6$53HaT8KX?#~blTMcLTvC!{yIw*GwTozl}`qy3_! zYGnW>q-0A8;OL}|l?Eg#H@V2}!z zd3gX2o>d)Vm`N{7>x}S`p$cq^tBE^X4cXwefA!Uv^8c7`?T$-iMA~xyMF!rhWrvB8 zUs|3Wp|zvGK+l1TY-dEi;e)TR50<}*FxJuU;2ARFr5);mo$8(Zj7u8$iNcKnoOZGm z-75_J1yOP&Mo|w~qf!%mLyS6kk=c~v>wBxV5WC$7gX}Ku_29a+@&%)0pQ}MWc3znd zRiWtmYBi&^2PQvQW%PJG-A3R)lU!=DDgkrpe_PDqk-AF3?zun1@azDQH*HaP29c4G zV&hVYT6K~f;-iiTwu~?8^4`tn&Q%V)n19`k*4~Ys|F(cVKE+{6(ZeZ>r^!_Hju+3V zaa3rA1`W!F1{F#2Plt1-CQ%8^rzYVd>C)b;=X}qak*lF#tOaEV$BsY*Zj(w6NXd!P zc*I1hVk_3}2%pAV~A3 z+4m7E&O$&kcGoV5v0+arG5Q%$$%!Edl*ntVOh*%9FD5nTYR0-Y!v!E3n3rZw-o^fO z{nc4&L_Lfpne#rx*HvHkrZkUFDNWbTe9nta`HdI$skUaG>*>9f_TpoojfC~$2aCIi z!8wwBbAw$^JYzTGKPRH9b#=N*Yi;x6$Sq1f&R8TJ@fnaY|~-2^7@gCi@Iokb$Y+kf3ADw z@qS%6Q}1}4ueYkb5b^5$vvzTV`7R=VzxJOKhySaKlq2$9$b5<0dTzsK_(SEw;D?X9 z3baw_DhIb(hFYnVAfY8JcQsF|h(Z;CyaJm z&x)!7-Qvk4@)cE4LJ31r$d>U=o>_H$St`DIT2%nJtL&g~@DG!XaY(o*f65-T=g&7W z0L&!|S9HP`HfQxk;nudqs2jvO8L7FR(8K9sh{t;=9vveVoKQwN+o>{O-?xV_x_-X+ zpwMO&>DCpHof3b(rSziYmphapsPwymQ-w)^;T_eiKazpm_kkfscfdjP9>5^J5Bf9KGl?EHysg%Cet3>Bu%t%Xw)$g-9Zg8oY6?VnWZx6M&nh&$e@r`~F@9*@PIi9aNoK*Uc{d?a+3U-s9+ z?<<2SehwgZ5?)v$c5-ZJx~omtpct)4ITqvq|lx+E>00TrL#+D$zYavVxtT)Kd zA4KS}M8oA6@VC7CXV2p?mjqB&bVb@G`p)H!SSEdR*#ok};TfOO(Z8)RP}djfW53mM z;Xi)WlXi>=>+^v-cvnKz6iglM7zE^b}d;b*7Q`rlZ8BX4$ZwEzkkdah8(| zWP~4B-%ClIykIDa|2qHH?iyLPz;HS0$l+r&&I#}HvJv?*RdC8ofEPN^O#{JC6g7X% z?jGpu~~42 zJP%5+NQ9v675h3J0>HT@OSq8=o%Zv=b&zxU9cxz(Jrpp6pd*kWh~3uyO961~u8}fb zhQaTjGy|FYWzsn8d;RBVQgfJM5>4LuYK|T4wlMuwVc(?Xl!_Q^KnarMoNBM?oN65& zOG}aPzxbBJds;0$hHKgD@*nQyb?qrj(y`=X9#EIQoe*&^j7|6Z4%o*b9|cTT$@0p& z`Ib4i!X;R(|bjIy4hC$L)1N~Ovg)xPx8@pj8N0y!`YRKr0H_|zx?#HOmjHo1!kv*N0s zOJmgrkGZ!-?hJ*-4T}R-3cRq-`fA{5{f7ON6LTPxekIehi|EW6gge!faiorbY7GkX zKRXxE83v|rE#=?B4v2sfAHQqzXxauFs-F~^4;qnCmgZSQDNv>!z7j9Mx*4nRIYjr2 zlf}64xf2#j1f)M0Adam_94t68e~mYif&!A*R&k3*Bwh9$3Om8_)?O5D?!0Uy)%L6F z!#|r(avP+>`8G}3DX4*tEkjm7k4DTv_Uwu0-jjt;! z9i&49E-6!B+CAz3;rxP}q(zwOhr+A)XrPAT?I0P|>YgTTo!Mno_P=DWqKHUzeGCG) z{JE+%IdOb_?$9#P(5k=aiPcz8(~dOfDU?bB$6iCHd*BYQ`Dp!mY=7Bum6!HT2rNzc zy)A#So3}TTWnKFYmvaX$9Nt>jSfE8LD)Z3_>%p^%jQ%t@Hu1Y8$P>DmIv^bu4JOHH zA6?hh8qX_Hsi0*ab=@x(4-clz?9WZ?Yu^=BRo&UZ|S&wVk1U`__;yMp?LK zdaM*Sz?{N@#?A%Qx_+8{SuJLbc1T5d6j#)^zaiOaG^N$!D1fwU2sK4!N0! z15#Xa^N2V2rH|X(j0x1)h$WlF`27}#S%-6uxJBY%I{A9%V;THj)olwCxt`tCl%d(7 ztb$LhTp5B7&yKBZ`P=gXjs&uw;8OTSP4w7~FY2aC*GPwPK zC!EG}gFFd3A%6KLs?=#AxMW^gmPPXS)HQv+;6KYst>MzYX9>{?X7^8v5QQjR;kh<1 zj#>;UFP|&ePK*E#g-uwWC>Rf#OU6#(4{Q7RSNFwsky9`4*=NtnC~2`LM|Be-s_g(FXybbK+yxybJ!!MF=uF!3rNMF982%d|2X3dhy zp3rY;oQlh?$dw?;0`Rc%lee3`LlB!ef%LSwM3Ya$^8zsak-!5pTPT(2pnoc;;fK43 z1=xn_z7~?@eim5qizK92=;77>%0I>XgxwPoQ=KI}bq?0~n@KK6@&0+BXGJlD!C`27 z$%E6usuly`QHrd&$ShAj>cv^6@ot2X;#!l15)TLnoAmp_i@qIhfCgNPZ+B<4*aq71 z_*P7ssdfN;9GoVR6KwW7b=)avKhM#F^KK)2)UDZF>k|`tmj`E8l3^#zeJ#((SxuNlh{2sg?p>2 zL#LNX86-m&w#D8ns|7LNjA7R263sB?&eFKdzm11dV@);-j4bX{5v8!FC`F(}G!D|&Wu8TB_hm&qWg!WgXUNs}HpmNS`| zRno6STCEsp`_93Xo=xQcWFxlL=iA23MkbJ>`PYl&Dd|v}-t^LXGWK3>(>GPeS5?|3 zX*N4*qM<;FBoR}FiqivCzSV4K18(yRJEBzB$Ip=8;H@->N=J+73`>W~Z5Ng5&0SC} zgrNp?bU}#7=5_j>85;Vd?-D-`|h0 zRU)GA)bMrhpnWqaPT~)W1mN}wV;{(|^-X9oAw>~d_#Oo{ykM|cOPr=T$Fn^Cdk&7Y zvxaxZ9=?Tjt?LE~{Bm`g0B^0%)uUjc1B)zYSKhg^I{{)~E>pE{n8(aM)8Me}eyp`SL)nF;*@}|zCwSn|)>>Q$9Xb|ok zV@@4Tc?8syCzI)hY*V80x#^1Dh|_bPmazEljNTbGP*28#<|?EUk^Nb8D;O`hZ~w)| zL!3?oY86^gRCp38+S6O`{?)7U&a3ik>E4>a^VFZ0pskZiWFL{Iv5kOMZ*O1J|4KB` zM_zoec-@evb0*M|!87UI4w|FNEKgt?gA0C)F7O0>T0ALCcEvAheY&7Y{Aig8J`0D@ zJtv{A9&=m|tl#-UJ#4*JH_z0}4*K_?bXtXN;wN)Xo8m0#~a$L2CMGf??I^ z8r473vkki*b0d?f7-?;w;K5D@KT7!w>0ZD0W}@;*XYf4pDFQ5~^;#B&cFrM-AXp*d=Jg4J|{25`a$>b!Rzeus_^npS`(H9;VZygF*#b0blelCg&QzPgI&%zPWrdkZfZ!AtRPz$;D;=01G8z1!T$KH@cMjAgAphqFLJunWEkY8ExFVS4}tI*!x z)LdTOh!c8Eb=0sH`5&!n4jy@foV$AAbevgf2{8j3F~;o$uot3|F72kI$wjgX=Q1Mc z>?H-BUDj#t;}5F*&KWJVZi0rVAG%Q${SM0}t}+0zd*9pQmCGsRy~WrW_0#a!lK)FB z_sl=})aF%sVU*uES&$pDW8a>+jb8s7>hT-jZ$@x*nU!EnQ3rDNf5Sso&GSUbHAd_7 zUTsv>h*~+Dl=KS#_w1Ka!mB`PDy3&G`og>*Y^25x&IJaz>!hHi0~qC8rrWCXD_fr~ zFU<3nePkvDmqMg`0NO$NzwH*`L7NWUPAAb^*vBpXQOyAzilP0-KfX}EGtFDx$BeU3 zut!}z%gM_&h(C^>olKSVHh@%ny}l+6yVB`O-i0@R8RIj;g`Dn%QakovJw25XZDAGQ zIAW@#!{xDUr$UadOv(wjaYG2Lc-p15ldRr>2Nr)1WdIAdc;I83Q+Gf!VG&H--E(4( zV8%0lrFp{zUs=ayiE;q7C7L}lH+~|VX#Oc}P3a))r0%~nsk+085_fyg_+W0BT`Q)Q z!Wt`bxg}wkYnePRj%(xc`{ESOuRGEJue`xSm`8f5OyF)@Xe)Fh@gr1Ik7a|F^9rO* zn9R{z@ObB{%5x*a$Mbc~*^u#x_N?^3!%R_w5635!JG&2WOh22lg{`lBwz^0$l2nz$ z5jrWp8jAZ7u~CXI6f$?;<7&`=xfy#V<=g~RRosKx?^uGGBws{3Q%aIp*EJO-i7_|2 z+V+u@ic}9N#7e|Wd-Dt!>vBsp&?Os_4U(FA+X0&M zvwXK1le~!FM+;OLABS+~*eV9WgU{DeR?R;1x!BZ8Z|$nTtf&cbU7Fr0tEqdEDR@V#`PTc4}<-z^jJC&lXLi0@WSIjp>kRy@315hikv2$fPxoN7>= zbEnR8Uez5`RqB00xHg9JIF!91kof{t4DYchgE6cuNC%GRBSQ%8UewGZ1VvR->cN4> zywK&jO6WAv+0irei(-{)AjqF4?e$vPhwzIm~g;0^3wAsIHzB!uBC5PXp`5n%V0+F2EBy|OEgX!8rsW!D6ewb zFr?@a=>}9d`k+nhS;eS~*D`}K)k&dvjYD+w13?#sM*(hE>39{<%iOgXlTk!C0{qGdv$SNHM4_b}05 zFeaErtdmlfwl57VXn39(eZq@s^36UR)-RDO%xhkF)K{U<>S`Qe0hN2-pjnu9=c->o zLlFc<(%Kz}9C!tgM@iF3l!TqofEQW5fNZlQE#~-*{EunA{s8c)e9LPTE|_ZC9_i-W zsYLe_jK(HJ$QXEg02Lx@+40XEhr?-qh!U(gwrjO!0eHw>56n9!d`>Opu1?X^b%_lV zNc~@b1qtK3^*vrHE~&mApniMF&-&QjkdPL~>TlRD!2xok-~^rS^RQiC(hv;8(xNG* zYWim;lK(%d-YGn?uI<{cRGf5dvtxABv5k(?v27_Mt7@O=~MdWYsG8kVAbxSz7s*1z8nr<8n3j&O}}LQA4A0{#C140vAM3$=gB= znwKG0!+rqD=v^E@EGFXNN<|TF>zsljt<8q5P2?~dgYPaJtrPbHqD8|F-bOo0DSaJe zb`IOjE#tCV591y7zsJkQMT}IB0&-sI~s3{#XTeP@m;qe5)B~od7k3ooxqpF4e8)e!D@H$3~)?`ou9zoQK7dD#GIPd z&;-{5IfKsEhr2O6gSTiVzmw)XHPvZ*f!7ZsCH~Q(9Ny?@DNdIi7(rEW?-SjbfH&ph zY@OKsGm+0D+9}i-|SYL&J1$Mz>|a>CzBc={TA_T9+_XWkzi%*@XusG-P6 zC%(WuAvM$bh)ZnF?*fWTeyPsGy@f7Huqj*x-&Hx=OPrDxF{@9;I6~k{vbF-c(XFqA zxrVEB((qsgcQB{_coF5T zg{5TzTDE8L!AE%baT@evMTpO;kRCe)x@@F&{`TTSt&ZF9vkV990PRitOW@$cUH|$n2$hPD_2noAky?uDM$6Rw+1f~5>l3Y*u&JG46UH(f`4O$Zu21EAr$hDi z^|KNc6wFX8YNrW(!`qUzQg~FW`N&^$u-xFywutGA4MD&nDi6WR9-UR5cKDX+p6JP{ zMe)I0$ELcF@8~;>YBK>^#zrgD_MDN3S$EuJV>>@Qu*AozeOOjfj}1F*#h|RbO19HD z4(B)rM~X^7`8<8~Ag_22`Fpr+5W7d>$ex;dw1Pty;KZEo7z<=-eDe#ja1*#^$Zad; zQT}oy)3_>lp~bR;JpG5oLEiGQ(em%a`;-drd8~^{RfXH->8$e@}#mJAe&o zDsjOYmK6(x6_OjBK0Hqsd*ZJhS?}L|)7rIZ`}Y37&}#mh_#MomzO_cdCIkzN-#_O+ zVA7Hg7=57p)!Gy(3_tVU zC7;kwso9CGUvZmxR<*o8tQPbs3rIn*^ERjOavBE|2q)B2mdbj{=sBK0snuwXpl*Bij4!C}QINO(;J|GL}WcI{E1UfN>9+R`e^x+D~Ab4SaHJJ#+K@F2P zY8%OaFV~3fbf}DOi|)CpQ9UJOg9LOox3}`4$_+M~jc`u2wgg=r&Rdw7W-4Ai%bE}( zmXh5XiJT6|4Fr!RtDSNl0tM}S>Vrt_jkdZsL~9c#b-13)I8L2!r= z{CjD zMfaK-r=rnih&jrZ8L6m@7DYWS+*_5XvTXl}kY3r(38F3kz3$0rfHV<{Sn-(0DR`4W zl9%0y)_cttdlBGez|Gn=5pPJ)bEXWh)S`I_=LYggW2#|rcjOZxg=L;1aslR7WSPkP z_-pB$Zp$-q%R7Biha~AAFhJDiC>KGoITTOmh~UN{E=!r5^OG6KEkZ+_sK>~4NG$p- zW)&v-CPtAk_XT;z+A7xd& zUU&aFy+2?OIjJRh8qB3{)zujG21z=F>o2h|ViZO=0dx@{aFTDLG6?K!%1p{^^Q-gz z9$TzSl^XSky~W4{J_KQ1!0gg&d48OOiEQ=5QLU;-9E>uyz83P6^!G<&TvLQVL(2x<~d^!-UF%g-4-i|AuIX+X->jr8& z#OW9OrOg*lyD!34a4`8nGpbySw%}`FWnIQj2ZR77h#Ju>PZFH!A^+pxMOq4q##46# z#l{ebNbnQw=kH7Kc|dc-;SB|6;cpF*3C46U(Cr}1@D1BXMe+Q~w&c*I#L)-Y3`qnN zAvgX}0xD`H1dL<}KEg|6ZjEY%Kf(GWvN}FsbUV}T-`t{X&rZ_%F37tId)-|`6M8v! z@l!nOb3TlU?l<5jFK{cGf_X&m<>u)sYeFa~WY=>L96b?aSp5jcg3UsU4VfZQ!;0ae z3BIp#<{c)FgTSDFu{fN8to@eO#}*<6H^*pZH0WcT&FfPSKONK?Zw?QUh zp*yP_@n&SQ{7TP8dQi?|%!{R$Nrl5nq2xgCa<>1zoIJARdt3#n?K>ZU8EU{(TB7Zo zwwgM)gD0=`ExH|pVsKy&Gv#Hq=%9su_rF(vMl8PZ$OUC`nWr|7wx}7Y9ioKG#}oRn z$vQ2Fd6w_GNCvjyAN#F5I}342lQ%}A20EL7$W%hsG>AjI7KpjSJVb=ZT};L+1)Wh^ zDPpbS&jMvdZkz&}-RSQA{@A!r-cuXWuqk&&JN16thg2kK4L=dC=TW{VnSgY_>d_YYBEw^J(}t?%d6kg9VOCDW*_M~0{!0j_()rT(g}rA8>{Zgv$GY($}xs2pu2tt zP*VIF_1;z>k@P!$oLXs4>&(0K8C5pesG4C_|h5`N5mY8 z!_&+&@{YLAh&qNw9Epsgx{vQcfgHXxvuJ@}cX614QW{t~;UVR;GO+Yd+t*CMJHlh=~!G zj7#FMF8)>Rq#I=>Tq_yr-6p4Zto6aR>}WuDKulXG4=zq`Y?Ic?=#;C(Yo9oaXZhfz^bWMbyTpys#-nQ4{jc#&^ycsr@KPlDfA(z~C$FxT z4^^98RhPEx!WAy6Y;9ZCpLd~+m#ivM71dw(n{3hsA&ZXg!2j3Y=R+BhhG}B}r6JlN zRR_1I^P%1{J_;tp8B!)5Qtg6jbla_rB4HkGqY<8;gDnI9uo@;v)Uc}`Yydnb2T5us zup1QEYBf-|{z8Wm{LT$Fn_JENT;nUUr0-jZs)R$+i~(OQkX!770bLHp4p{JG@p)_JheHpoTL9#eP5oGKc@C&2ksotcMt&c z@9pf_ImxE?-yGv^PZ{e?**89gNM7OkJ{4 z$sB?sjl)v!N^~tUl9&xbC5%kIW-W`T*eO1+z?p(=3Gk3Qg4c@%-@;g|^SLM_4_BuxeiUR3$b&w;Cobm7~E zSRlAYBje*9Zmds{eR})R-lUgj7>l);Lpche~~{pdBc zDLrLbQT(2scI`bo5-oeu!08Zj7RQC#3>XxY;odbwCP7XetG~ZYUyEY+edTnH8D9Bb zGnOGOGF5aMIPvEqjc{=UIT)q`<=*&|5M7O(NSPwX@}!yuhJjk#_pe|15!PM0;rs;S zSYq~=JxAtP>`k7WG)JrRpd*zLDhcNW9Q40WKNxJ0Bre^4>gU*9=9ysyM9(c(Mc8#O zp9!Bc*#dPZ*}sT+?jVgi&QB)vot8xW4DEP-mRk{*NVhmM;PJa!xMoC<1Q(tqP}~G8 z5~81qp9n>5wzW&SZ=Gy-y%hhj2ghTy@0m@zN(an^w3p)nVWwgRo2;6giw_e;QQkt7 zz!IG-`@p^WhxB$wUVh2KOU4wMVvjYRB!T_oxPIQ8@j`bDhhAiJ3ec@8{ z@hdlovQJyqk$YkLqYY~zB%$`S&Gq%+Lfh-{qr>ZcLG}K$s&n@>8B1waXRC|7EHTUb z8oslm)8EAN3;40DY#Kddx1s%?EYTKNpJHW=GjZvV!1VaAMgIK|zMFZ(H-)C#0dfzRWinzPP4@SL^+n>mrE6 zTm1ss>O&^J_slL#!V85D6lBZgHbVq^(e7VL*^c$!;9V+oK|1N0cIrViO9cNlVcFc6 zZ7{%}>E17*Uon#0I_?R(sX7}2Q;}xvFb5NdsXecL+d#`Pf8;iY@zT1OWsL0JT6uL+ zC^LhQC?7a1^TnsoOhr8M>r(+B3Mmde&r=;uka<3-0VNXADMf)2(SCjwHZb$nGiilL z8wRAVOqkt|Mkz&uKsXtVJhv=ueV)ED*~{d$l%>H z^-cInE9dSz`6;U;lv0^cSq=Qd3+)AB)}tD;F7jgigx8=WBPd?>W%k3!t<_`E{faPu z;Q3ipSLm?>VFabQh>t4XPBN5i${Dbj$j`bBkd;Kndl%w+4czuRdH!^KLrM|%9)^}d zQI;?Yyv&hGz>VE~w~Kh$6U-)NF|bLyI^ZM|Oyn;zx=J6175Ah56=FJ~b()?YtCS8g zbZm@zg3DFIb8u%7vbA^UVsFEGo_%QNTb$(5b)U5hx1O~hVgeK?0LvciYwfMlos?kQ z@}?kgA`E-R8B3HvZuK}-?ih#Ko7tg&r`taXfGOdLs{RrYv(Az<348vmwsyj_<~lmv z1ekxQ=z)G%@T-rcX7+FkeV&Bz%Z z8E(k7gfS=nLOk(r{okwjM$h;If-wsR3EsF&Ej({&(|G3pnt{o79nO{J=|#dKe%M`q zOAZC}+?e_`=Dua9TgxK32~fb^zzq{@6Kn^>K#RHvJctEvGmRi^M|M-jRhhh*E%42p zk@b9eX0pFDI#1Lam5I%;l@7oc2LAQ8R7Z!8?$-N}_``kE)@ro(9ofgxY1R4vCf<5Y zjR?v6)v{~w@~c?%Bjj_%2MX|1^bzUj`-zahgoP*Bs1OeF7q{f29`Uvi==HYQNQBw3n0_AQf0%&88v)0yAF~pypKe&y`01{)z2YHaJEYBel^BDz^oPVc?n~={kPMAYkz(6FY~bgwu|irjwF0D`1Rc7iUlj z&0s+DO?Yy35o`Ws7sE2;UMLJB6cXmPYZ@2C*QS|4Tf`0G$Q3=I%d{3mhR+^zyCCb1 zs{ErNl8hE2TyZLq@AgfJBK}D7TT;6J$sDbq?yRL`?0U|(JXF=!w&Pf~-Ws@g#`nKt2@7Zmh5^0Ij{UKsRp7PBT~Zh0{L9Z%l`JB1oz)?U^7FcDE8FT0DnTPM1(v|0aGx|mLoZa++jL3VQ5zX z9=QTBIw$?agy z4ob|aA(!f#((pYiS#pBQvmOIrb|dV;*`^~-(ht^*k|MZbsnIW9FVAkK6f~W zSonySVAt|)0)aK?$#F2}q8)L{2;!5N{~|UDH=1R8|C(^#MJ6IQol&z5lBH*n@S%GY zj|L}rXUXWt{`L`Om2h#S&TDn*_Qn;WN@uugM$5a*{Uf2d8eP9PezeC z7L!@m<2OYk*qC+?)7U+-St~B#6?bc==Gp$$jtLmHE{ZGPwkOuUyuXcInbTW-jWk&Xmpi0!934=7g7sr~e9Ix+3jk~7~6qJPkB~z#LoI{o&!lDXV2xw3rU%K#@iI1^DUE*rCBE5@Mt( zFNK-ZftCFfXbRatv_y*dA_aMeKT%P#{3u_fhah37PvYS<;krG0G7&#(Z- zu;BUol?Iz2ThEcKB-}W>e(mIC`_0S1dDp9M)bzOp!8qD_7^!dkj)c3B{3 z6G8y!BLT-%WgAu;hUl6nB>>}lDC2>4{fa(i+G=Y8D|-6PN$PX2{vCA8@z)C1c{XOq zVFK+aY;eIOXZnXJUu?$Y9Hr8CPx7GE=i&-m1C1ZKN8~=J6MnT4&0@YzyX|cj<515# zApg$HABQ&Cby)1@Qyf@O+eEN2ZgfJ|&!l{2Ja<0R+=X#}C48}KF!88<5U{g?5P+Kp zK3N?`Uq7&=B1+ytPV2HfQL6`DK`)=3{3Y(|86t@q2ig7~5(hY{uc=U-65jZbI5NQK zqrgyY=S(AP^5H@trr%6xV}9$OT2Y-}BtcmC!yJzp)rOLYliC5KvK)DHDhrdp9x73f zm+~$bHEv6Crr-ng9J4|u4lfBn6|B<`)xXzCxkU&`S7DJoQETK_JN-PtuZXRyFxqg4 zNSn#T^g80+Aa2lnABg#Yo*3I0CXXM>kjtX^H{MMzf9$FjWFXwzuK&Gzc;22jy*-HY z_qw!QpPwVxR#joC{m0S&NhG#O9*&uCPT=Y#T9Ft%^q2R6{o*yF90_d^Ww5TDfb0`e zD70dA++2kIyPygA2L1h>Upx3F{b=78T)e_b zubP$uVHu<|X})X;?Ob;MO<#aU{&llxQfO2RF(GFj|NFt_+b;SpX{4UUTE6j&ZP*Cp zuw}IHk^jXpkf}dzNxgE#3d~RbiU6at-4ngtGU~fS*bn>3I1~G&;-BZ+VpO^Jc$Rbx zsucX&aPfv(aKu>~2AN=%;0%e``_fj!u+KY!T`-eKvk0cfkr$8YMWl>H(qo*umAPQb zGS%&60e{Ex0*vP%6<@dRna#c~gK=Us)mZ`YRrz2PVCfGueG+^OarEHxCW}8m7Y&X) zk8P=LFSf@3CsLF`jf&kBegeWf5#E&?AalYHi(kiWs;6#G&NK=k;Q}JrYm0kV?hQ>R z?HBpU1|HcBX*n8QW=i!+;jQu5<}A@Tg=5A8GQ(l6aR(68ye8I9q=Tj^kqo#UZC1_q zUpqk5#;Hg&ze`Mb-J= zdAPKR&uPVsa>)caz?v~tDFrCI{=zLOD}?vDh|>RG9stsLP2LvoWK#k;2}lb`2bUz; zogmxmJ5+u*&Bo&Hux^i#z3S)tqAB9jT%5e38KXrcy};O$gL-&jm=#EgBxdwWd0PAs z`Zhg{@`wkCGFkOEabFw%_K0DyH_~i8F;A$IOdz$VoN5GXeQVw-;vQlyu=nCk9vLs6 z`?Xvgz{F|R5BBetPfH4%`OsMfs1KBr?{VfK$VD*RTv}lhsoN9}?hG!D1(ftPEJyD> zjW=uvJK5gW@psi@$v3e{Kr7=&S4Ps?R7UOPMOKTTP}QT6WcZ&1`mTW1ZR9p_h9cP!u-v zJ($v=5pO@--Q12fiXv0;`NJ4%dE73IG_X16M#%Eb9#FwCWGs6X*mtn69;9&xdHzBp z<2kJBLz=|y=y@a@i4NtMTM26P4rtWg{Wz;RoJv}pl1~~|#@C{g$s_jiK4g7%qnu0* zJ~DL(bTt@UPxy5g_r^zL6tc`G$pa<#1J+-IQD+MxN=5=Q7Fn~0lW9xPQz=)KiZ6Uy zG=~w{O+`;NR#6#V-WBkO9U!U`D0`wCs)M=%6+YjJW+x{gNg8BP(eRs^R8jO!^|f+q z{qn`V3%p?a*?r;ha?=lN-s_8;JO+!IzK4Iv0UP7^zx63z!q=`-&%-rP8zz4QOLw8!;xK zR+K*F?7#uBvgn+OOQHT^pf}uZ1=Mb2f z7!5v1C@?Ef+PGld-()coP!rx>5c|IXh`S;|u^8W-vRVI8KR@~p=j%n>Lb@XVZN=;R zSTe}r2@Wbp%JmB|IFivL7Q+e^Sm*uuSRjAYanSY0uY*l=10=IfP74DM5S>JkZQ z5h%<7z1yt{aeQ_e+oq^-7cpe2Kuen|d`*q04PY6LDnS$w&R?XWY&yH2jB}N5CkoIA z38(BoLO_)&&nhxLfR>=qh)eh}j0Bi9KxUf%N=mA&nwBl(tlm?6$1<97r1_J{{d&JC zD8WALI3{gANVO-?N|jGHahq z4+r^);Qcvg3uBqqhuINJcT>EopmoxK&3w9h4tB-ICm(-AyhUpBM8WjY5g0wkm@X{b zeviKk(eFZ|?X2yU7##4M_<<9Scc`>)w~OLP-J7Pz0$|tk5^+&h@zZDAmiI+fZN1AQ;cLK`1Cjq2Wgas~Lt$Tt+-Z0QRYxboW5*WqK?(T{aV3tgh z9Y=T>?MV-37)m}cs%8xyFr5@R)mPO~#Hok-gswp~F5&ywz);)~rc~|3{PoMK3n)F` zFR$kfC>y(^*xdnXj9;FBgchXy5H&CuQAkjmSLQ%d7ukL zM234**M#n}&& z4|&Kj#3>8h|JpT%I6ufEtk(*^nmw;jh`v;pg(bPCgm~sU<~j>0p=ENgxKIev#G4Kn z1$v5`l3bcIWCfrl>5NEzdHGof9D10cAr3j0ta%3B!M!a6OpAZQ!Pn;DclJ&c2{3P~ zLF|kIjw5$L{uWY!R0Ru=hXKRK4+@iku)&)w9NlLHMbXI5!w!?gnonWo)rb^ulmDS6 z^-?~pKESAYewlz|w(T?=mr`Oi7|pc}tK0h-O#w6mIM&>CB+~JpbebU|tMU%=-2v$7 z2`&N%6x^Hf3K*?}O*s#0!QO8!T=r{}E;Ula$*^)I8^E!6{fT|`6bDAWIZu-wSS{td+`%+JxU;7q|db0>4ERtsO%8`*w)krxc2k8myOSAg?%qwI`J* zsR{LgrPT<`x2Q_STee1#r~VuAN1BDg;}gm@Yx)f?`jU1y`lRxP%Fs=OB>iU|{6#9_ zCJ*lGt?-2?C99#aFn>TRlMyoifHc-Rdz(#6lS;2TgrK=$=~-ct+b|b#zM2+8jvCRH zyJEUPMAS48i(fs=JsI}D%0>mL%6Io8CsK39dR6URB~q|jf9gzd8-QJUxEQB>I<>)k zoCO_Hnq&XrWDW+lMc}gCQ1MYSVm)WVkA?1^(+f1kR>4I8Hql1~$_V9g*xYab0`oKP zQ#7=4`?NwgWmRXyv*49h*ng$I@h4oVO^qEPq=ZG{UDp84qrtlWynB|sf`!ftD^;75}nrV!v55AS7?yymxjP#il?fLBP!^UqNbYI_&LxER->hN4tX>+ zi;1udIN(br42>34oXUT*D;(~l${Yew@_Lugo&iqnjTJJs4k9$b?{j$L;=g)K4}`%e zSwaBul*I5*%GD9p9ff2BiW%@&m}Lf2m(@PxR_onlMu4mkrakTt@^&4+RY z+f9kg=XZqB9SQS0sj?L4e1Vn3%YaYbETl3;1uSW(a$GUFA4QD_WiX9L z6`0~_+Lhv6A-Us#KD16V3b9V&uM)=Y5^6^RyNVf6l%6Y0S`niQ_=X@(j|Xm1JD_v_ zILKGBy93l@?4o(lc-LGZuN+|!lL-?Qv;tG3Ug$uCcgM#5z6_aL%0cXdGVWCm?x@#* zmHs#@l`+4p%OIBl7Ax^*e)^Fl+;F>sqofHI5!Y84aM;=YI*-Gt1?CS89hkI>21l&P zkCkJY>t}1(=mu`mq?hcTEJaCZWd#Q`gjF(Bqoh}*f@FmLjLCE{Rx2~%b2 z>W;vs+1z!f|8@qgt89aULE>Zj_Q5fTqNP+}RE>%e>EAeK>QN;~f=f9eSKVw8V;(NK zpJ&~P6SyQrr6Z)cH>ImTn;SaHT?TRu3O%6-`s`1Z8ot>j|D~C|4qcUqIglW}sLa^R zn)5CMwX7;r-19$cu?M)Y-ll~KF#HTbCM&S2G3-b-V&IQ1Rp?!dwU2jD(J;RPR70D| z2={1-+wcI7U_USEbMuW~8{B+2=1FIxFT^ZwyJ$4WqoA-zZe_-yoHVhrxevDCHL%@4 zU9d}V;>eOSemp4QDhX1>7wB4{F*z}EG5ZB))FjT-f2b;p)H7sT=W#2HTc>dx-wf@E zShj=Nbtb4eT>Z-3Us7<2hlb0ZOlhBMlmk2N1I&K3lGPyFShiV1^jMcZK7 z|4Pm0kx>S^ql!eFz#uSb{9IyR5-)*lK!3%}0-s~i=Keu%siksi1bWBx9fFNomb|0t zP&@nBe(jG6;oz^t^*>mw1%{emSRQHwaKpLs~(OCGJj!QD&oiw<) zbg*H$*qLzCD8m@2cSc(6|K8MKk$E3_Mf|;;WBP|BbzsUkT^!WcXeesUGNql<$=WV|bsenIRFS%CH38*Ik(`^z^<{_Lmx(k$hB zO)5UHKO_g5q^moOlmdg&Y@HWIRT=a*qr=g!+BQ{H4jyhZOUYPguTj0_sgZUsU2lIs zDLzy`M|>QB;Qu-P^P`A9pN4KPy?S0xiL$Pz_&n!dmvm`MOZUT(>ur*?n#Kx*3i6Yu zM12)S!=&hQ6=5{cB%OgGcwlh}G1*C*di&5Q@egr(h4yzT$%x*ejQfeiJz%{nKTFJ3 zPA^8Y3kwkoQit=#=U`$M`AI`2#^keAtFe|Tc4AyJ+#g&h1r`BC!O%xDi!%#0MnSXa z(t825OS#a%VlbH+5+q6AY`Apa1#|GaLXxJ5gVp%!6iYL>i^aok^kF1~mTl;Sf9D8$ zr4l-c-CLYa6#PI9=X`$FB(2HqZC~f;zZZW#C=~MsxLS5yzkesEvj5WaeQPeTVYii) z-iqu1<

=*ViC`IYUeg7C$v35}Ym9{-4KRt>DjnsQTLtzOC+!L*pLI$1nP7#uk|EjumHP8A(;*XA^ob^~jDRiZlvY~hN5|~=%lhN{rnoUbU?&2Ef^BjM z*U+U~lE)wIE01B+7#zFA{`yXWexF&FkOEZXLv2D>!NboPGAqp;^QUjju)%#7hnX;ZUFNlVp*mlF5jI9~pwyx)T5P z_~|VGCN*n==|vVL6T{NU9B^sKKY?B&DJ`r;Y1}g8s(6%QKtWdi;^?A%+JDK$NFRD& zI>BT8#v}|y-AwX>%Q*%2xGLn|Ip~S?MtGsE>_?!oI`(%bS6)m8dVk*$1eVPy4rmAB zTJG}}p8Pb4fI@FtMN#224~pApARW*V+dt34bXSwj(3Y53BFIuvk+6A<{KedcH0gfQD!63Dv2%*1CDrGb zdljGio7^qWk8%&{QO-Rb+K;Tyhpx!a_pQ%YN-DdkFOh&;VAB47tK5wQb;tV_hyEB= zVnu0wsmS!$oJ!+qL+K)1Ztd2^_bnUI2M?5zpn6QPQrL#VQMOpPc$zXL>n==RsJ`;zit`Ixxas&Nqu)8)8Fovzjqj#1_Md~ zG=H{&u~~!v^+ktwXHuSrPJw|3NQPTrD#h+4*tTD65q)SBMH-#TVAmLu0cnA~b2BN( zOVArwQnpm;rc96E!*DMJk$9U@!8v3pH9$}b%l4M9>(=^W<@THK4LD2(VO^VHLjU5( z0!ci0K9~6}KplZ0HXE^tMG-;53~%D$(qr>&1`Jh_C`|jCAlnxF3|R_tXDK&6jVLj) zU8pYB^y5>RhC)X{V)Gq>gMpAsH4R&CeDYBnpdWaB`ZPW}H3b5ks4BL3`EtTHJ* z4E05zFCf`s=E|yfE3!6r2WV0aIV#!3kdg^UXSq4#zzbE!$z63_S+OL~{9}m`IqrHP z9`&L>;j;XqP)dBK_F7v{Omg#x>Y$-Xv2BOa510ZsoVUq`(X&oJGg4yXhUS6~fw${y z9Gj2CqsM-Xdu?d~ckqv5jO|GK_*8?F3|n5#+bABY3BIxIk^%DSt$RVC+&PvVK9(XR zkRJiBa9anQ$4p@x82+jCQI2msOOuGm4yHWN!2Ay72nc(HP?}iz-BD@`*=NLqHh)_w zC#C5!s*X~P|N{}Ti$!5scK z>-avXLzf>Hm$F@-pXaVtUDu3ypPz4CB%gO#Led1`7yW6Ba<#m?p;8sjTb8ShaY_tq z1wx_luvotPvCyLgpA^@V2psoA^LH7vq9aD z$-!J4Y=TxHm(MYX7I^XmZ8K`6otPW4f7Qn~h?M$8K+Rl6&Z@@(se}Bd`w|4k$IQF^ zq26TuYAn%$VZ95?KLb*9brNaV;gj)4o5Mg1_Y* zosW(XLD?tsGC9~jUGc=2Aq5KSYnyrQgj{G6ROD7i;K(z(Nq5VcJD(F%2-CNxD=Xuy zU~8-JjP>Bo*for`$i$`LH*EehToXdmGd=_e{j%`umeyuWIvTVpi1+lX`E6e!A4cwqr=_n@9 z$+cpA^Gt7@nh>-k9mNui`zc<(_z~hXbtAR!bd4oB^4?G#il3{@q2q}zY3&o|H=z*V z@+%dMNrI@`fc>2-Oz)smS6~iSn`zb?$1wskJ{0mat<{Az>!CbN36%$8@CTJSC3%$pB&2m zXhT_3k=Z2Hxe&VH-yfbq+QWULp+QQe=}KTlZKzuqU*rD^on56P^vKdf<@Do^%61}1 zM@gz_>|d>JX68e>qkb-Mfrhl{Awz z|9!a1`F|%m#PI*EZzFi0S41Cu&ySzcpWGiGm+xqAQ$BmT-Jko1KA8OO?!Ad<4zg(+ z=2DWWbyTr-qlugUq~8=3p@iK>bd_$u*J3^XYQ)H-+&Rc^ zEPsdUo&hLmCh??9B=%Ts5SGfia5SI7`&xatsOAhdqmnm>70<5 znP<&YUzkw{QnFAQKyCi!~~?E#fx#&WGN*>FeGPI?zL;tWYVMOv20w zkoXqF@fUX6R$$i2;|4vHnbR3_8i!Qg4n)L~*cuiwC3YZ%1HBCfI}4Ni;pj%4iUd$6 z4*aVmW9Hi|vMGQ>2+OPlJzzMWg+2t6EWSS|g(?%z(~;x!L6`teAV~v$$7=T+4db3B zUG-`x<`MgNEz99V5`Fm-ES#UNgg?JcOEHEG==Y_=1rJ|f%cq(6*~dv*EADSm9;TB(7m~4>>=5b!t#&~XEvTpKAj=PJq+e$Fw6JBcAk1j zgQ|4X!U@N9Bex~+)1kC^Pz)>oaGbb1p|5OBcXxNWtaaPj?dHdnUk0eT6XD}Wd`z{z$_voS3+RkB`8z{TmP@w; zof@=wuVQN5<`aMu__($OrTf!=z4NaX@dOQ2D#K!_kTqxYPjBJ zxU(=ldunW-#BQaDp|D1j#;*Ud9HE%r5-{j}{#7gZ%hubaapU}F2qoA_!5r28+ z%lel@-^oE|4FBb+^dZk$irb!s-~xEEO&(7{{nM6CbZr4Aa6C(5%vYe>~gJfVMHo5+kZiyJV&Z zW8F7hZ~p|*b^=(0{f#H&1O7>zmXTl6PG1T&%VK4~7Y~d^U3Wq&bm^`jz@!5~kvNk}cZ zHMXc3|NI?{fmL*~uOqGX4PK;BB?$IWVqJoYU1p+o#6E#J4xzI|@n;8{_%5Z5b#Dse zXml)|)l_F3sqdLT!8%HIZqK?Hu+bZD59AqHGXGuSJvJ*S8swHJ^ zN-q`&%OME8jAbVKQ;!YVLoK5y0BEzn4ESDEye`?uzR1IYVysb)QIK{V}O6Rz*fCa-KP%+-y5?JlYJbtDiU#B49X+0+a-C zgO=B|*sHTK(Fz}3e^O5bmFMtfuk}Fs^Jl8cwC#p_e}+(AawwHy0mU_^ z-BzuwkJE-*%bW`~C6J&NI}5R(FLA?d)0q_ltfo%eEweq}9$NeP`m!z8YXPzG;(q@o z_<(~}RH#F*vc{=*vIu^XR`ZO z6)z`vR^-Z>K%x@JZF|HFQ@%bjgAxNJleFe3yv90KF;TuNke$C#jK8#6nN-P`_S76X z87WahMOBlm?klX83^3x%gn)GUS2?jfjO5P?HJ(QCoUeu?CJFeooSpX5cwPZEe13#P zrs1Zt6$pt{o7;>r?oga$v8OG^3z{H}=+4e<3TgETRit`!3xySVth*?Rib<-J7L6P9 ziH}HWFZH1H@Nd6ZiX0@kZl=6^vwANvn&vEk4;CVR4JEl1ud7LB;kFp8H)3p5H1^wK z7-W+ei`(i7b!z9Osa>S=)=m!keDMjycCTQ=Dy}-tEHfUmJIe6 z87|X~>A9}Z{QH`rPZcd6HdnmfIhfga=x5M8N}e!lx=Wm+V>aYPEhQMceqk-E5J&@~ zOs3$K1Bp6v%9LVXdW9jTN%Tu9ro1Cm8GsHZ26(zqLTyv25^GiIl3I<<=e9wK!~zBH z5sNW^{#HAKe|d6vVt+h!O5n&-$@uSEPJz4YyMC#wazC= z1}{mgO}n6PZTjRH!5KV%0~_*cu$VpEQ2hXt56)8D{e(AFTXX*;D`^0MrQsKid?2I& zo%>^-;t`K#_Oq7MjD9$)inhpzR00#Z0F>BUSnHn2VopSqv3M)sVA=2iud#Q#_eg9| z>?gkdKqr)YKUg(9m0&33c7&Zv7Ce6FDSi!|o|@>#DEa5t{J0&wj`cJgQuw}godioYWxu+Cd%e`gH5-DH-%DdunL%F3nL zY$MTQ{B*x1QRS)oK7q@}zk;vC-NYNF1#Eh!jE=^qUt+S_0-5q)=eK#@_ohSu#%MhZ zv=z9K;}^mb!)l`|KuRN*U)N(^zzE(9^Ly)Qpt`^Z^BYHM>>#_S1xUKwFi_tI1i8ZRj zFncJFk{n35x|U*@xik$ zm*$Sk1|?lgNxUE07AASc>X3w1$#p6Pf=w*TbpbDUK!)flftc$M+I=9wlQae};pUKW zjzl}mNx}%}-b|k)r2<$$0JVG@zxKRu5TB()pzJX*PF@-aLf%xbkY%H9^!XJr@Euhb zsh~Kn#FL2qPBzK69NQ}Q%Zmmy>WV57xS!L&$ri1+gw%AHprI1#s8Jjdf_YY}t=|6>JE|8W}r=rBCU+0b* zIX}!91g@F3S2jiwLw5t#s4;>ECr@Q@wIaF%JO7}f1xg1FOGL`DdHmajUG?0x0M4~-!+mz8lmHTT z^jnsVH5Qrv(Zkf*7D5zZnVS^Da0nl0yo9nWoca{Vj`o;(lo=m{e zxHvTC2fXkn$)PDE?eQg6sCCfr2kD&DidkD@OGWQFX9xrVBK{Pb_?FstF0Vfaii1nd zdzoX(<@2s8znY(ul39|kJY4xW&k2Cs>#`=c;#+id^%YWzxuMPxXUr)RX#NbKh-jEq zSVnmM7$v5Q#~C>&&_Q)hAS(!oI-a2E-qZa)M9xI*L9|}!C$RZdh+fi(Mpd$uLE+Vx+PuwlimXB)~sORL?};jPv+yI=8eX$$zQt^|v*!z=Vy z?2*0^_F>-dx#809dHns_`P%P4kN*Ft^V<&>n?1q;?e8dJYW*Q_Iwe@Fji*8i(DB%` zAGw(@+=) zMd$*yY`0V#IHT9FEYLtCE_8)v z96S!x#eXw&-oRY$HY4dGxq-fsc@M4VDh$&TtIq>=^`y4ncU>64~NcR zaz+T&EhK(f1Bf7t^Op%sI#W5WG}$m0W9E$HKn@-zo1fz8V#Qyx4jkE|-~bY?P-82U zbwL2MoZ$n+)C`r}*g8+luqWQa+!RBts0RjwBVOZ*X6Af?#^zyuPE7HZT~)sTh75ml zx=K0+V16&u<-t59y+LBGCZaC!Spdk!lxY{EU~W?|S=<}RGN-o1OHg3=qd(8d?KC=Y z?}YG`6lHb?ZqNb$w%WP44K~;`ZxANZMSWi_z@f5u0@oQwY*)3ryy>3#5@2Rt*;~-d zwSruV0&cLOakK`C62~&2W1VCLYk#fK5YrSUXGWF`c-iO$Eq2u*+L&St+p3x9*FR7CnDqX^N#i__MdZOu15aL>Y>v?JtU9nKD6 zMp&8iUMiVNDg;$Z9qT#-)--vhdr{rR7P+~^B?PH00EDK@UB9V}FC;zZ6x%EPe$Kz= zWhLEJ@K<%_3!Tm1T>NxiH4t4~I8n^|l%pAgW_&W#B^@{tJV=@pviMkt+050=`zu6A zZb!ogz>Fv?rYj89Z5j6#WxNL2k!<3DojACL5i1!Kr)XYj7oP zky;zXJZ7SD7#>{y<-Hi&fSyr~ zUjl=Q?)kq4^~yJ|ULNn8u;ufAvE!2UKLCVKfbxCq_y1b({*M(8YUALAbyM^ec48<7Oif|;?7|=tmHd{wMkd`I z>2C$K!3m|RqyBH_jS?5W+J5OTohEz=UNM1pjogU zpVK3&7-ZA(ScSEUQG0)OSk0W`TB1xA8kM_t5CT;H*7aBwLgQ*CATfMH+Y1%@O+IEd zeK7K1Zn87e)CkKz40yylZLY|KML&*i#R)H747l<5$ucpysUyxyx!=`g{q`AMW@4?t z5fJ~IX-+1G-ekR(usF)2Uox3w(JK5k1fga4qESE4`g&jvL$BTW#}jI(`cZ!((v9w< z0$uox6Tb=xEWc&lAt~u)McDsxRrWTC_;m!(twL(+(}!+LC>29|@riXOH9f&7#;Z$K z!B(UXkAl<7%$$7X+^U-M`e^9cg{}HbV-o1#v?BKH_OXcRBg1-Iw{LK7%T(w^f)Ts4 z^bd`G1Yg`{!1~SiwV9IoLB60xv0uO6fMQNftIGz0yGafSSF%0UVF%ZY353M^p+jJ> zp)~EHf8Ua0IzOpviDpH*hRK)r}@SueQWa@pvBRSRfH`X2ZsG62zTl7Ukpx%%0)Yhxr}p{hV> z3E%W0rxgyy2MiUbB+Aw%mbg~v>(xPUiyP7t$FnUy%R4Dl8&){AeZAe*F**#5p>X|2 zbib_J@%Z%J`{4qbf*^PO|JC=F>qir|uZ1pl$&Q#!*t6?aw7#=WR0k=*6F}p^N7yx| z%&2F9LNwDybeEEoWV0VgWpTD5E!#L?ijXQ)?Cpqqcqfwvwsx_}#25Co{gQ8j?2C%AUDLC=>dt9~g6*79_zU_VG-@z`@F8e}-zo#Wejv z?&4T`Wsw=awOl2DA3zbUEA4e?Cw{5+$rDj>l{HZ_mr)Nc?cHzr>WfV7DwevR#O|ly2+FZJb+=qGCLGZq4?B`jzn+C9PGOLL(}Bb)*q(; zx>VCoEhCby`9A|Fx7 znK!n1O9om#tpd1<<#zo-5s#gy1WJg;JLA2m8K#Z%T281F5hvJV~V&Cv{4Ga{q-G31<^`H=5ud zBomrskcT%6tl6X+u+&qld6h8C6b~m3E|ShOH)7|^Ait7`U~YO?w5!5Ei^ioa`M*-1 z1L^()xhaPza?}pjb{#3dJ_dpq2$Tz=(z|`t$_qN;9!lDsAC4hqE_dFoAxNy_?NE3O zMWa_UV*DyP-}GZk`YiQ5pc&R28%bE0&M`_Nw7HZK_zlQbH*VbnExEU#8dHQqlcr** zGktT6(H@+y5=e6j2V%r4n44tgnjuG|Ot-><#2|e5-Xsc!_M zKgJhm1H(8lY!dOS;H$p$tg6+&U0qM^XCTHYk+~#W+X*GJ^N4j2Lt|rLhknC2Zq#{d zBFIAO=DkD5%pQ~5cg>ded7TgNG6V-EL2Xvb7Kr=j2cOV@1x~NjZL(zF5wBPH_TfNV z)X3er?`EeS(*rm=1akx7h$|B_dhlspst4#chl)HPT-2y?_G5`5-*sBGe5MUeI}tj; zIr>qcq^S@W3|KuTR0jM#7`5*S9uGNjB23CLdsnht8tQKxWfWc&Swi}AAL<@?;D3JXizD_u@3{MP-)%Cl>_$tH z(Wu_8=4q-iK|})S0Er-}A~mc@<*z}|NJZlK{@aA|D&&g)ROqY_2exISXCl)682G{u zKy(pzwE|e7WfB0Cgp=IcwC(;ea8djH5pqK=P~F3bUeXisu%dok`jvOO3$J%{R<^%* zaj}ohi~l4muGW+vIxcQkb9zz#^cn6shyMe_ie7wVHH~;Gtg#aoA{_l!_=bKZMUZAq zC)WQfvQQ~S@6!qrkj3Kg+L9OM*4cX=d^Z6tDa)IeO@9^=!yVg0^`jM|XZ+nDkjzr3E-|C^k&Q7x#H24<~VBTbx7Xt%Mn*X&u zp((!9eUw5}M+Zupl(@t{kTt_m2`H-Z(t=irwKdP{>!0~BU3YwD7Tt9pWwqD~RYbk3 zQG!>Z9w!eP&rlRwygNE*`l-P#$379|uK@)CPB5~R?uK#sD?d5Yo=f}diqq*g z2k@V+n|3ekdrw07MerA)y?9l|xVKtm_Yy}0cTOh; zDC)&h)Z&|a)TbKWt88rci~Tv3x_XEd%Nhyfzd5DRM+$K_Uwm@K&vI2(&&|c5Ut_OF z(i=Q&bf40yzM4aTv=#X@TGgf*`UZet#wT^`SmT>pez37OGMU!ATde9gWl8YkNO?peU$a5EOOpYk zJ%IuvH$MOj8WOhrG=SU*u|)qT`N-t$qjLtIlzKd!yz9AWzWhmkWLUa+w^Z!uGUk@P zw{$!A~ir#22y|NFH7Rf&nrWB=v|GA+0YgC`T@8nX}`Nw@8;Che3u3Qc-nR!Ml^i~8{ zr`{^%p;{E*x99GCZZFNj7NM~HFym8!GLQ@uD+iFlsk@fdk!x+ljS0A}zm$UFNMXTd zfsLn^im;Q_WF$ue(uxhx)z|Tm_)bMG}b3F|;P_R5_)jhyMc`(xlX~ z6wgC`)TFB|-G;U1^iD1RDQWty$vDf^Rx2W~5|~ zK@llo7$$TQ#mtj*yuQ=sI{q%)3>N^d(^f3CBi0IDaO#Y3WBgLb^&>Mb&3Kz;99-3w zS43O!LAxxG3V)P{GPsw?l714lv!1!*g9T-nw*Xnjoom4E@fALP!nt0WpTilf7MmB|88u31068Gi6tWe{@d8Fcg z=idv`w)yH7QO`8% z-_<5(CGQqbdGob$eL1ESGFc!k9Ny_Q5Y;yc)hp7h0o2RO{R@`|^|e(;nM0bkVCfq} z!Of$fpn0AuHGTh_K}4}6UgPh;-^}ZM4ri`}$?bo>9CX4@R z88@;iD8r7UDQZ)nYPE}RP!1zH7xnJUe*gVO`;zy5)X`1x`gWe3{`lWv;eV38XO|Rj z<8OE`b4G7Q+kV$N?;0<1@9Q0ZoBzgF#?#R9ZuL}Weu<+^o|CRnvg!=5Cv3i$S{6|b zmMy=PSs#gHxt(j7=+s_zXefe3f5qEka=S$H&V`!5N_b|($6OZ-mP0*}YW+q`U zVGm+05E3^C`1<#^I3|p_mM10$EaDV3#OrB}&MGP+tP|}9%7s_eBs>==NCOhl?C~=R znyWt6bAcJvzFpe^r2s1rPBUr9*7{%}fv}Fo`)1)`x}aEgnm=${7K=!sXly>$`Dh$0 zaWclpjKQozdeVZAY8o)};oWE@T%a6sFA2)!9T69KFhj7&b{j;FS{Y!#6Yce{>FkWe z4Q(b?tfRlPx16|#-Rfw)lI!B54G(=*Bx~%+YNenr`~wj-Js4BaW5yIYOAd>zsJIxw zT8M-Z!xm8(iC+d?OWM1g`wqkcG7l}(*1;DU%%yoYx)`gAd>xPR zdG-Zc6a{%tGqU$~Wfbn%iYW$pjqOtuyRvc1I*?7M4m;7HN=8x$=+0M!1~|uz3neup z=2YGi7bW2lpyd>bV5?J#)wYORJ|}Q3E9!rGh0>?vwdKO&4Nc*?doIQysP%8|MLn3s zT0W8%fM>G7;>kZNxqiTk(F)b}>WC)<-T@IGo1hgHYl%O%eU>U9{TFlyc=U1CN7K)7 zjpUmMCr{faR&$K}6pr7Q^m5?0z~#~ykT=t%72f-qhB>B&pKkRnW0+^ar0;-Ne=tpk zmP3FT7xg2D677KL=AMJ0J8K}rjpwX;xa^ZS#~6{UM{7PE)& zJ~Hftb5^PDJO>Lu{VC4+H;(pbT za>=Y`t7amLBsc@R-qu_J=)VbnV8f|t09}Z})Ws@LrorDxw2$hczi;J?V@2-@t<<-r zZQw5vScxa`Cy}Kd1U;rA$QPIyipuqvk*TkvW~3bLB`JBbtV^PR6^M4mDSGO;zB2V~ zzI>K<^H5nfhxM0mp?X5ogCMk|y8~YTEm`w(O_p?t8QG&(SMaN^D6HT20$%`1A}ssbh4H%a*WnsXy*asg2+TZ12!E4cAa4l zYL&3r<&YAlDkkf)B1#LOGUe#9*44Gw;@Z3PRSPDJ0`NW^)bzIm1z9kJ)XY_K>^+{-_JT=eLbB%*D@=?D=1LLK0%EB zq=l-vmKRdmN&vCg?PKv%y7G=bH$`Nk&*e&lss072j)(ou$-VOvHDv|~dz$i#L6X}3 z`lQAt*>R6YjzkUzACW{HoyF{k%V=&2TV?dH4%(?Mr0H!LoeAHit3{ z1t*oKp<1ii|L9zcMoe2fzgicFr^JmI??`{ifltiUrIBZjl*ZwZbBs`s&?^nH75eB# zm@%OeAy3lok2-jAGhMXMnT&`dY9ll>$IaEqOgvB$rw!zi2&Vrn-9jM)SI1?=_s|g^ zyzoIJ=k6OzlK2(7ZYYB29qu32SF#jfuQ4>K1@6|%*J=jW^=Jucl72o1mAPx=ww6G`Axjx*3w zn*n2LSTif2TMRJa6bB;0fm(-TC2S9LQlX6M#tpx}zvLbKL^uJP?Wni9AuvGl_h^7J zQ?%8{`19DDM?-)e43u7Mn@HVuT}Ob}HXKKodk0Pw#65TcpNJh<;A}^wEz4vKY6c~V zHPNiM)n(QZap#M+2-y?E9NJr)v2-j`kwIJuAk(=u+v1H`gF#T%;m?G$=ScqX!whbK zVz@0XMvmceWhN>N0;-Y`WgX`Dn{_#w#ev3+X^K7tkDg3dSAcCyqm%QeTaCPHS8U{J ze$0@OUdFK_wGNrc_HgGMH2P2$qx6Ws>qWkLGJHGI`J@Vy+Zh1x`V#O3SDl1Y(9KF( z{EL2<2P=bx+@jk_9dR)h5?Ghe{>WW+3tCk+NAQkSHL}EID@X%oSKPlSuw>v#>)6}I z96V}a^8>RnT^q4@x_LJIcglT}FHLw<3O(Y+y}GiMnq51isfQY){Q`f`-y4AjxkL|x zTxCiaO)+2F9f^o0GkRK2`t+GIVvf^CPrs@BNn^`O7-ZXgxJ7QoFrmo>Qcf(gI7{2f znfcYf*P9Dwl9&d)!P1H@c-OgkwoZJq^M*J@9IgNvZxdHPtXC)} z(>EHP*&(to#qH8g!nzI=@2)3|M|b>ABIwl6XUXz|Lw$U{Bf&~JQi30yTLQ%q{B(b& zvHge)l(W9?%N)~XfZ&e5n@Cz(QJ=}u;}-)=OEanqTZ?fh2bU4{W(Fn8n3^Msu;gXp zP>>wsU77~3Lu0Ns=Y5s4{H~lgTZc}s8=5=3wE>fNXl9l#LGM=`y+-ff{m|bBI^O1U zKZ5@Mw?$Z((C?A`efRMGz3ctXkFPU&yaIg!^CP@FFfUQ3M^PS}#e-?exs241gJ6OR z*tC$!N59zq;q)h<1#AZwpGFa6lCv007LEqh4C^p+hzoZSZHnN^d`ayu-%?!>M~S8g zwGB`DMN2>CX9nky6^z|M;{aG-^b#+SsQaBG>0de2vObnz=gUCB1`o7m%BlBt*cp&?>0%G=G<`#$6wCM-H}Kn@{ao zAi9NkLX?a>Z4mPg-RyR>UEzpQ&*hE>-k}&?DKe9Ar=VU#fDhC4O@C=+EY!1f95;zG z4ytNK9X3ZCTFE-pi(zqplr8sY zLxZ-GaAsy>rUkWdFh*OIe9VJ|$zEKW-p2DJ+3%OE|ADI1dF;)R0c+zWtD^H4QwO^5c%>8>`7uy7CPW74zy|G7d#n@XO>d~U8U&l!xP%wueL_t z;pgGDjy$$6fX>pMU78S#16ty8Y7r>aJ&44CA=kX#;8n#?(sB?kN#`6`N^!9MLejupTfE@IA6vb5CE2c6k;7WKhdwV^dVjx0 zGJGC|eJ?VTaOn*%WW^Ock(BH9(%_U%ad?rvift*op%oiL6~QuiZ(cyQTQFm@$}RdY zZ`Wd${Lurvo?I94?F45hywTuk@B2e_H02%>Ske}mz`XoEJcV1|XdpwKewkC-r6}!xg<_?VmDb;_ZQ}*t=elR?4^8|k*`rro$4LOkujNVy(<_}>K zcV~Rur+q%ZdxL^@1LiYHbVAW{JZl77@RuzK&kGnkRX6H;$KX(m&!eAfAash-E3yZ$ z7vv-^dF6UzAJM=)rNMEle-Ioy?pIV~+CdR)v6rM# zOV?#I`7DE4u_cuDcgM=OdbsiM-L_T1YOq_^j1D~3y-u|rWa8YL{tvt?qKjs${L&^q z0Z^%X1eQqjRti`uvfxrUzl?agE(}R~IS1RDb?1kgjUO1}HJ|vf$6<12<_)%qCVlsI zM&4AesL7=azvyB~kzp2_X!I@!kITiW7|fR?oXs#2W>KBIe>z~k7ynNbP7A;MG)vJyKXMh>Q^>!Z~gyCmQikqGozkKVKt)GiGKijNu{IG1_2?vZ` z_}-$No&Wcwux_?ue|>Jj(k=jCc(jByyI%TKfBGH_3ey{blxp!Kqn6Agknl}mk9nDc z2RKzxd2*w5mONLs;S+^l8yG_;p+)ehLBK~Uk%W2fGHa-oJS4s%coP~>jdP7$X>Epk zcNI+vk_NuFw_{!;zL58dSv@FnVfvzIhWF0z08VWhw@OkYwA%p6YheXm=w0ehP*A>x z2fGMFfgDQLK8|8@DRsM?BZ<&$_HO2wW2?MKs$X%eTGYY6SD9A!mna!T>n3WPy8(B= z;7v9diMx?n>$FCT15h&XceZz8xJ@dzMGQuQj{LiLIf})&T6WI0I0rhE(H|!djDi_w zY?TpQil!5QNbT_U8Nh>k=@0r(b%}0-by5vs=unX#bd6aI{o28e;e>9%XYE&wi7Myr zIx!fYvCTGdf)6GCXlF#*Wg3DB3Ftpb?^R!Zjb8>~)^4XwAI&31jJm$Kod|IjmW z;Dl8Mz>^#TQJ_R$`P+q#&9@@fF~lIKN#B)4?nY~Ao)G@ZLeYw?e0#2o>ZH+r^|hbm z=o@7lHj6JT_-)gJ6(58?6>gkCP8-oRdk6})MoNN^Xp#0gP6;MdB@_}4g2@cTr+G@m zRZb~`goLoZzojmLOI-4vLwkfRnmn@?WD4L2EBlTzM3UM?`QzGCb+sP!fl|GHpBu{y zFbLkG3;NbDtyCC`@W4Ihu%7UuD<2z*v*F&Cg{RLLOe-c!kY>_&V~M@(HCPyv2_unP ziuzbpgp@3&;pL?MkR)0pGEv-}pMV>8Q-m<6Smgyt46pujFSCfAzpmK#wU4@VBbqaq zp&0OOw%y+K3Rbn{tP3P4^aU_;or*-V%8 zh$!kam$~X$aFDHkR&(}?hx1SrQ#-v*HdXm`TD@6qcyYNc*Xs37zWfs!K$2^~bmud0 z`g7p;^w;vKCBWqQ%p64K&x6U)Duy|)$RHfL(R+Mw(RdOC?q|n1j74Oi>315)_nd)v1m2&d(Mb^k8=C1u1x^=2g$I zV~TdHoP_@K;0wQNudLp795nZ6?HFRx*h`P-CM<_Y5Ut7KCM97BAIIG0B#X2XL3%$Gk+@d*^h_zGV}mkYkK z=`6D83@ytrRuR=}GKXm3np%`}?sr3nlr^R?N2qTe}|Q7fk`J8fn3J#aqzU#^6) z$$|Fqj*6_=4HO+p=tSZ25}{4GwrafKl;@zbPxy1AI(o%)ARv-s@X{AsZ2I+!%5O#j z(A_p`06c1OLGS{E6Jf%>U=rh@Zd3+V1SvLI?WDyhoE z5VDPh#BZvB^`!5DkmRM7DC4Z>4wL{PcsN4ca2WnxrHyxY3PJQqVJt3Gze- z=fF^wn3dbciKod5cybYFNH3k#(2J2cV=14Mq`a$vSv5Yvi{NM?aALy@c#}`V@4atF zgPcND$}#w_f{;r4WB@Cc#QS>aW065*2hTyVPf&50P@4_yj+BlA&T>IZMwqQl43aMy zW3N=?ays8nqhnqt|E(Hp1$rq-zG!tIB6OMVgvzYyo^wX&j^`wPCYP$A{RtE7g@)zv zu8CU|SqCdSuFW;@i}9gp9R6fd*#O>vsZoPd7yD73}UlK7Fr0 zrL3J}3E02nLl|enOp%Ox+`bHiDcwU@?LB@jsXATtpk_MXO?gGY*aoM_k0?<75lt+&LJMfn)*lt`J z7kH;BJ_V<*jFrbfoF?qq;A%O$2NgHxb$*{57x*)?nhvK^uR);3Ut_m6sg?-2+K?^2 zJ_3tgO?;4U5@t&uk2c~&tB%8QG>rC7{@qADGZX!zqXO- z76zLZjICuI?u?vXRuu+d03kWbubW{m6-G^Hd0yyHOX}Yw6;~-MvqC^DT`FQdN>Mjf zMwc|m$;&f@03 z0ubkVXTd;R(@<`ja z5D@ab;Z8D7EVH3SMP6&uK)aj)Wv~6@aItdSr%O@23?YC?wrN>1n?Ecxm#LKvEW>vV z8iE-gzMPIZwI3KaV+5BAzt_+qdv{ixx_8xJmVd7lS2+q74@GpS2HRy~l8w{jjCp&;a=FOA$r?-_{( zMC+BI1{a14Iz;bmQwEtTJl_qJgg*bwnsZ5PtMPATNYl^P28)v>Ao{S+ZA1HbQOA7uox*nULRngH<+v0b5P?d<&1$sS&bm z6kihN{EGeLpPxYSftTcl<_BTHb+)=vG8oT)2D_TYpedC@t*2Dc!amEzz=Z6Viwf^4 z1YKzUJ89StiFY+ZiY-Z?@PaQu$%k2GPGn+2!#xehiy2ouGX|-w<;(K8UiBDo+mUIC z(6ONM6h!XtyFE1uzyCGNx$Qc*q*oLtR=xrAc`{tugpjB> zt3+bda$&@e15!Sj&dSdu^6sNATe3&gByQf^`s>2y+PLcEHo~mW&7E9-E5U0D-Va7P zs+X_{+|y?H(JOhBi7#B{0VrSIGewx@nWsi_Y4*bD>La4S{r7SM&kJ_-6M$BKeXs#{ zrp<>-;isDrh!m!ml+P9k|icpQflb0+yA|Z9Xy+hgN=g1dy$_%yn*U5GX zqj$;T155UT=l_N7hM^4C`4KjUh4ojstbxX}%}Ff5Y;(GB$q7C0M_mxTcOo*8)4!*9 zl9hka9$M4zyShd1r|Z^0bXl+t4Hmy8&vQfy0q;*Jr;g(%hPs{&zU2(xOhZw^jt#LWjvV6-gviK2 zkUyYXitlQMQ;O4e=8oD%PhBr7Zc`!4z;LqvIR^s=G(?C>BnLn>=2WRfm2hGy!BytG0MGmmbe6a4@ z(3GfpXkSIlz@He(GH!P1?k(a$zfY=`F$5qpLH7sfZaxWz9;7>mizF;GW#|UBV^I=s z?Gpd#RoSsgpSK=yyLs&?FT@g4ADP&Y909OXZac1F;vQ*!Y7dM^DSA1l6uBuwet1@y zS-)J=S=)yW<#Kg`kC!xE54~5@B$5WtfPOCA8vOA%0;En4rb<|GL*?^0XvesI|52Ez zj!5Q(A%^3mVSZnyK*<)gERD5dWllzZ)VHQE8kHW~H7Lqgs2=A8eGb2X+6k`!FA0x_ zcjAoi6}g^F^n2tj%OGwYf+nNNY=)St{iRP!4VOKFUZwGC#lyv$Nc+gvZSBGz=wNjS#H)kdsx0RN1 zxvlj|3gVlZOYeH3MB8&eS3AE+3uabmNAT`-o#;tdV(hJQZ1FYaTLeOo{e7qngq8oJrvZ~M$EJUo__9*{{}4dB)wpI zL6!tWb%*Y`m{32ds|*5*1Y#P;&V)1PQ%a`f-({bsdWeW{9C6y@YI{>S=aZVf;1#5mr1@97tPTa4h8fuc-x4273kVKm0+(>Ajb-@#~^L|KKu{gXa))6 z76}DDHVLtj1FtkjIXm$6Z$N%zz!MX!z8pisFRSdLOV7W4@!jKGN;C}5sfBDId1QVF zJ(<_;UKD&yVoM&IS(B}@Q_|nN?gO?M_=RP0wT+F)rNBm#Hxr*gCC)Z&DiaRNAVH`i zMa<#6Y#y_O@34#zoS?w1>SB&ClGF`pu!6%=@Tp@&IQFH}XY!E01vw5?*p^jXmQnEQ zQMw=8Q2@s!)ayV?D&CD18&L~=N)R_KF7EV~)YV+$TSqzxI1%gK#A2Ly)@IwdFbdSr zf^UCguH17TsTo<*zppY%EHek{@!)f7+HrCxk`%%b&ocqbX%xvOs#s2;wE*hY&n49Y5&9L@Y z1e*yeAKirD@&_DUhlXT#S&5h1;Tb_h40V;0OG0#|+ zSSzYC( zhjIC}Zftz}PS`shz;o!FT<=$rSH0~eC|39f$@+YNNaIq;JIBb3bPyARQ}=o$B&5;k zJzZsE1MG6xk^Llm^W1mgP0>xyFNX2{T2{XAAQo|y@;#&SyPDfa5|I_ij!kp=Cg-4k z^DS_+Dc|OYwh_eyZU{c^HF;a2y6jkS&=X^o+<4?!kaQFrQBH@a?bln6(t*d@GfH}i zC(ZeLeYA8aze1y{rH zQ3jRHzeUKVPHPTrqMMJa+~vQSHSw0~gHozK3=H!m<@5i!0`korH7{;Wj}fW^4}vo^ z&f#IIMx{)DMCyMxs>xN)<|BqS&DWq7`$+b;eXZKH&F|Naz53O<8rL8+WrtWGWYw@8 ztgfnXS!a1m2$U(4-RTAKmJv16QgYW4e+&h}F>KUXPa>tiq1%?b1al(!wFnPw{HuOm zIrn<>i?XN9am4K9TPv^bq2C#Q$=a^a=aXY$_}1}t2sw7PN~w!hNh0ogFm*-ZGU)~> z8a^G)y;NFT?%>^_rPw-f{@g0*Jn^d6PuQv0>U-t!*~uJ{wh*$Zvzme_8`k+Xp^6-O z^uS{3Ra?ZSj-xVleM+5xI70!7N|HKT*!0+l5MVvb0dXnfCl-o$2p9!N(G#Usk|8ez}L2ZUz z+b-_zP6!UgX>qsU4lS<5-QC?Cio3hJyA_AxR@|-lm*;)=xA#1ICNsJ6FS(Pfd)axM zRthG}=t__lkjlzRkS@1{bcJPQ9H^nqvD|uMDqbbEy%3kh-4k#)br1riAajO=Xkv5^ zn6eji+tdA1f3u4n-6%T?Duhm-!4IkkV6o*+;HdeWsBalGs4#565J+RsNX~Da;2c}! z5q`a(HX_ZYkcZ8l-bqGd+7*P}B&lDWIkUvXn#D4NjL4pnHi~-Z_9DCmkRf|}<%*md ztuG`L7$UlH{PMXB|6QQ^KoR~dHMcyj4gJ?2R@xnZ2$h^{lnDr<-S@6F+yt;I)36Bz z4vi9p+9FwbaXcpeL0|1JZR8C<8d6>;je*Fy7?}4q#TAn4bO;MSuAwTq%S87#u_JLY zeG5l=kMUMGB@lGPF7XZ~e97(>nGXrmM1{Megj3+LxNjMsaM9XdlzJ- z@0OL64TjJS=c*!q7B>!|I~ZrnhwMN+R{J#{=d)gr^QtEfP;kbf2-C z&Ch3aQTFm%R)5PHn|M8^FL)UjMT62@6fC}b)g;G~jT}|}j*VHw;qi&!{%VLaCYlWY zDjl7@DA8VRNH)LpOyOJIf_48Gc^A!h%!%P57xX*u8`Q`!=0LVbM$Q%5&QVsqO$@jE zn1!=WT@=&U(am496PWPX3>!fcOeI`DXq#>v<16;t!^kFG2$`~qv0~r_-~48ukG-W~ zzGRkXy%(i0GY^<>S)EDcvNwb91|?hpa5yz^b!PtdBpH=uc{f^&z?>FE8pX7(lL|$T z4e7}CuO=2*G-~|QQ6*9M4O5O%$Wd~FSfvMGr>Rq;*d{1oxc)6_rxG`9 zG8SBlyxUSCY}@XvlV;iGy`y2|<2W8=GKEz0iNAJL8Xexo!z}JXB$!C-XPuM5IMHH! zi3E*${d_zPF)6C_)DP0ij!(dA(J*c5s{t`D41#9GjwGT+?h77=1j_5I0wuYyr!V8^ zb1nkL%zmKvsN*TzyJy44O*f-&C&C}R3RZZFY$ zTfsj-BQbaOZ_>>hO|5gzflsfXa)u%Jf^>;6^N@H1Cpn60x@{18>|d@g{;Ig^lG}RE zjqz81)Tv)NU^Sv*3Gx;$(Ea*U{J>$RX{3Yj9SV{C;}z=mM5SkgxWFY*hl^S_3U6?t zco?DCbU`YN+x(Z#*CefOObihZt|W5fOsl?7{^%T$u^p+e!%QYyB(0a>f8kDQFyf;3 zh2!Nz0M%pNJRE`9G#75G{S}Rs_|vHqPyJg zpCDf4Z0~M%y1Dy4MZ3+;x<9=IPf`cvwRQKLmfH39w{BB)xhMQSj>TkoR?ry8ghD`+ zW8=bHHJq)#g6&xkO~wM@s$4ExHMAPJRQguPMr+<;Az4;fy2Zz<<*@@cj62QSdx-m1 zBTt5p7PhkM%ofj0Q~@GX@j3zd*)OVOkQW?;ST(9BT&k0-S33^0aSxzSXV+h;2z)FV zE-NXUh3rV%yM4ycTms)>JYrq@A%l@&k0O7dos_uU%EOf!=V{lJDUAwHKj ztO3>3O^W%eB!Xu=V3woInD&V2x_!I#>h0g)@KFN?XA_T4Y(nLXHl9VCW(_{KB~NA; z7)jNz(IW>auf>JK7Zh+Wq3;p~;fRlpFyXfmNNP5LG%PDIrQs-8R$*CwzDB>k9jTy< zo`RZI%G{R*#FDAmY%b|IW9~|eYKBF_-uv*=L@1Qr)P4ej)~VY6T;q@vh7J(E*h99H zoV)<1K-|_T#JtL^*v6m1L0!+|ZrMCGwEiA@@eq3d64}%Z-28TZv2v+w z;(M1)9LE_z1=-AtsG=;UW7H{?c}?A)Wf38%Ph9CbpZSBrx}s20&AxNQlNNMLTENC- z;k0a|%LP*~xL@mja=O!|VS{E`qQP?~prSxYC>B+D^Zk#!ZrI)d{GZ0mQK#p=*@d9k zHgZt=JccppPv)1zrC|H-7`t=qi!0pST(*~J7AA(c0OV*GWr_00WZ3Z#81`v55faH` zhfK;n>xgn2+m(<~4U$J}nIRcD89C9ZlyIKC81$Z;okjI@ z^(;?mJ#04f+gNB$^98tqeWRM78<6kN5;j5T%o^beOMj+biF{Rz3N9pmb!TUI-p5v? zt@A$5K`>$t83`fzGo%)*;YFzyd0skRu;Jl}0p7jpaQ*L5ah2CsIoN5bm@)FViu2`3 zB@XH_G=RKAIXyf{B>_1O&8;E~aT5Rmyd-SY2ij?6h&yM9(W0 z5b|{&WOUJ}!2!DH$#L#JQY->NtY>qGefZMVO*)uPDZ$hFarRa3P=rd+IXF7{c3IuY zA3>^jP|cl>SMQPMYT8&sl6LG5yb3i$l=!c!MqXPhX=;ygeLvkztrW|RQm|C~m@>pCaHbJ$&`;ed#JPzD*J(!EEU!0c9 z^@P;Q{s&`iC9+V0$;}Q}xtd3Dd9n z@bCVj^UOjX-X~38NZ28q($rGg%8Q2#O;<}ltUrp_+ZhVkpf9Na7OPV~hroq63V6U-liLekMes+pD2&cC9-)PyT^ zdJ6rTHhuw0JA69-YK?=}*kmqNS_uAvbMKmOP~vdU35iestSYLFos23&g8E;a?ASDb zfj-+eo}DL?lU8nJ$yyJt+b2DmXUNK5vXQ1O3Vjv%z0P6jy6z+xWW|N=s?2>4PFbOC-Zj@3Cp%8b?ph!Na5f@Q_1K zuVr^EU~g-j(@$^|zR(?Bty);YRc{j(3o*Xsn=BdQ7!0kZ&nBRnTWgwUPaJfrzhwNZ zS_tLeM*miK$IKmQk1bw^tNwIBdk@Y=5U$>D{iJL6M+gk6t< znPll@=%_1{MeNu2D=F|cG}&Iq^wdzDTeZ>d(?ItxE24KXZot2+s^H}F_FtRr8QJM_ z7esgMNDNN0(oMrd?a7G0O-5&sFNZq`*I$qIArU|+WA4g8NC)Zy8F7gKQXrQ|yT}2J zcx{Czc0yQDRi{fIzhP;WkedA>7yzJKNrI8@6gp9m|RWLE5eZsVBK4d4s9@;{eZ)Pofd5l;ES ztjjy{rIA`UGkJo`Z9*ia^3PCnQerE;R3>pS$-lxaLyVnefrfL8rr5`+y*ao8KMW4yU-S|n(37^#pT=U+NEk`Fq$zsUQZm?xwXw#wP}7Q(GdyzVlNTSok>cL{XAE*Inyx?qsLYEJ=MyIi757+)QeV_Q+yHzLj4GY zaHhyse5Y4M@}!4CX9WXd+`SYKs3unQ5cb z34;`+84`}=4X4K$8|%>9<{RDG7fY{D`qCfFt1arG~v z!3+Uyfl;G#|M*wOl4Gh@LMtKVySv`~L8BfCqpuHl>d-fAKBzNk3S-Ku!V8cv3(M$~ z)vY3u4qp=RLFj!h7{HQ(%csGYf@i_+S1yZ#6s^_!r7EF zf3*17r;Wp9+aTQ|bPO5=DfQ8fR+gubhfuB&>4yR|l5ZQNXdIx1s}Q*J^lBlw!M z>EwRtDc6W{ogkb#w?aOd(<&yXY*?)vdbe_o-^|fQp^~f#-aEXIy#KC)JNP$vWhK-1 z^}?*kyZ=E?c!;ifujlIDo9Ez#-qfz<*Z9Rh4(p40mr&9c&Y7SIgWPFlN4M+1HP5sx z*1aLgf7ZnFt|D8^3jX{jhbN>pvsdTdMb>AGw6=P-weBx(ge$YTOk4KrBhQv5>JCqA z=LCTe3`kgTQU2J_>|=4KH+>QVhbjVKP2X6B4Xb=(NpDq}K} zZ@UV&%|=w_7Lgs9u;i5NU$Fp0zBYFZd^}(OuGM{`%nlD&D;iOK=5hEg1mAj>?w*xS z9cO#*rT8}6T-$rh9nr-W)w49om6>Y+teVEHf^P`k`hC8`w>+LrxzG|_q|o(UCx>S; z@fUWHiAd^PO34Lbxl``gu@tz@HqJ~GB321h3B=0RDmT_w8-0=h7hrq=m*Q>6_O!oA z#XEbE0+4>(24H~r(alpsq%ypnDD9z9yB6cM#!V+@hz<|4-wax6IUC~t{PY>xJZ~}7 zzcnc=?lLnuqVv}ztt)RcE|x=!k58zP zZPEplg8OSSH^93@iAp6-#BG zP+-Go1#6VVw);@zu)aJMg75uO-1S248;sxIBcZ|C_w&(z|8{?<2j}G0(3y@NrQvsV z_3RuD>t$8hr)g8o90pDv8nJy(23S7d784On=xp+c2+(?W5|ll^y^*aClh8hy+)+0b zY#^TMk^!JOJf*$Q_zD4OZZ~qV zY;aAu(=1fOiw;;RLme~bVif$FNsP!C;nVRK3YB-pk^Mx)$7hX!WH&f3%luX7#-C*J zwdmt<*Q?P^Ilk!Ebqga2!ZrnA7!FHEw1iaFR7aL^y^#su^K(I?H`JB`VM^0o;^PLV z4fzt+!U6*pvWP3PBMT3aN3>@smZSiA2w-y{Rvl2mDwn0x@<2SRM`pl&!wdvr$lwq+&4>7e)r$ zs37a<>EAqXZEIbP9$Fp*Gdyv}ri-dnlf&Y?^wXIer;Fu}xRME(b${Qa}ZYz7O%8aZvaS#tDgr z70V)yx@p_XnXz7~CFGLmvj7XicfNeTMAt0=^cO-`_4rr#8ST6&GHZ3%`O1bJdEDXY z)nUT#kQYy_-^;2Sg9cy24L(-?qJOz+?T*6;kgeyUuQ?|^soGA0?6-Gz!(VZ>cg`|X zFRIcACtFd%0v@v(!GEpVf0;AawTm4{e1Ex?|nODDeX0VZDliwa25QoGRp}9 z;={lJ?3;6+#E{6)^ZcUyHpkLCxALTTdsn-)vfi_zWrewQX+wwxlo)6vV_*~!!*=7s|*P?tc2B^^Suh-WzG0` z#4ovy<6;V`n)5C@hyAh66d~s0ZY949h@*_F?TNdm9>Q#?&@;zbptSAYEI#Lr#ypn} z0L-Ee9x#{5qS8^!=dh^P3HD#$CE@}-#l4RQ3%p`-1p>`Kl8APfYIvkicD`fnQ9mLi z@tKKdb1L=HJ_Mf~Iq=-60m;kr35qtG{PYN_DrGvPzE>;69{#fN@5H9K>+OGg+SiOD zuR!~_GHqSatH-Am)~PQeuw}xOVB&l9I{T!PjE}@m9~@WusWh>Zg@PeVc+OyL2_eK- zg!CQ42-4-i4DJK9&n=Hl-@cuHck|B6+x?SFcgL`d_=99J)xl8JCT*Q@!Z&OgYUz&% z6E)d^8e3mudGq-G&sEBPx!p=^HYCx1Zx$1qb_r(P+WCKnaoIf$zC2RPqcws2!(Sfo zbf}sam94W9d49ZE8A;l%Jzv-`hz3n=ObDpsDR3u6sX6IHd@uU3rQ*_lo1@Q!@yspe;vhy6E5%9gJBP;8MlLMTm}$~3<(f=({!n`abvTSdVrd(Mtfkvlp{^X zs0;yYvGnh6rkxUaa~z-YmwGv9*mv8ZbJMhUf!No5Ry zK;z0h0!>r?eQiD5II}i}dsi>~G8?cCn|3C_!h<~+>oVctXnEgWBvGD1>atDItmR!W zChnpo)GeSW0jo|R5nX4>#udfGEqcctx1p-yZ20>h?>5Sxy_a8r!1oUIoB}m;0h?+S zXim2;&1bFC#^1A@c{h`&s?Dr*t}x(VpV(yOY`hse-P zzoJL1)$0{oP+WQuyXj2ZTA~Ic_~eq4|E*{9Q^pP%_S+1Wnd-);Dn%J@p;0x=q%}b( zK32|@a?5Irs;hdf^ch+Dx+1%zUhiJA&MdE{E?z8?qE(Ei3^t3>o{pQ8us%uT4j*B~ z)Na;bDBkhyRjpQMNke{r-u{RBwoCqz|1n4Yj=9zC6}J60y`2@ix&7Yh_q4H*`@gof zcmHcyH|o%}ab<@E_<`H{TJz+y@|xq&dDV6$@uX!{?qXKL_XA}ajMFdMg6x276SJUg zBKU#_T-I1_Pvv)O`-$pDjp~ETUu4?jL8VDUnwP4?PipL{HPugt2sW%-E8%j1Dxxoc zYA6gy&>`JX;*)$oQh}-3lWf9epC}lK=IP}Wd})HTo=Jv-m}$R3fOwLtF=vTtfkGe^ zKocL0Md{-Rgw!CLShGlzoOFF~_wE$`e93TxNHcAWIaj`wQ%W zZg=e5(_Eoe=wCbPk=VU=3hnY5bE%Ueek=s7`nSIU!D)aA|XD#D_Ae}aIAE!@FXnShN?#qZ__wg zOJz3tb|h}LU=#%Gvbo9r!=)_r>d*bnJ8Z!&zc{c}F(q66*7okB_wd<~TiZ5RQEt2X zM11P|#GP)5#s}fW!3YLjQn~R$;O0Mm{$w~~pePMK3F+?S zpia3g;)}RT8#})o>0-F~FGP~1jL#V6k=7h&wr@`PxtPZ7CBFIe4HYh4Ly325m@35` z+D!=n1^==0m+<1F!m73Y#};Np1tM;bu&)XY57y1xK)QyYmrOpvRoyHf-MPMlfvPOR7G()PoE*1CCl5$%0ZpPyynvY!Do zFv{pa>VdEC72PW;!xBPlR(-;bg{=Do;>u7PD}|~PTlkY{yK21vpO&-UxkLZ_p~;aV zyy223w^nbcOT(%U$uf5K+x=yT*7Uowt1#muU%t%6tnELYhROm_ro>2GX&j#NVd8)~ zOp$J2Nh+yV} zAtqQpZ>Nm!F+!h53E{_QwY|%3SKIq5z85S17uxrKpL@KjmJLxM(4fa6PC85{rj%eG zwGQ=UHf5Q>mRR!Bu#Q1{k_B#bn}n;73=o+Asi)*1gGF1=jgK~So&ZUzF@kDSS(t^X)6{gx2lNRb$R z*?-Z+Y3Bz6rMtWXFONRp5j~Fn>UC77qF z+={z4Q<>NtwkQMwj`Tn*4MTD~?JL6Bl5Ln|_d}eVi53%QIZM&`t%aB#F~VwuD=jT& zotR`dR%d$z;^D!LXE_uz)l#E{4B=u!#Gw;fnMbk$ACvyKt7-MEnwaN$-@rCI`H%#Q zM$C|tiBEB)V@grA6X1~y)mW&_dOTMq{4Ynm3Z)8==#B{+l`9#77VawJzZOcr9twRu z^L4=!SC4_tr>mQrL9?^_vEbM4yyOa?=z)`3)Sw8_9Jj@US?(397vEw;){x|m4hwNk zZqD`1yO;OF4JEU7=yK%yBiYjm{)TOBTet5Bc!vI;7gx2bS6s=Pds>kQ2d=HLDMM{` zh!2S(E5S|Fv`w03gb!u0TQ>2MQ}f}1jp=Dx*fQk?k5(lbbx)ocm{`;%v|(d|hZh{J zRx$D?Gn6&x&7qfx2h{WJNo(yANb>+;jPYjs7`{zh+dB-|qZKngyBNoG9i3`Fs^ZIU z=cL3AdQYoWuG@qwS28bK&HK-~koQ(-0~!dgAe_3ysnOfjh!2Tq*@Vkjk$P%90A?K6Num?8E#ZZc^s${%m{y<5?`MRi7y#qg$CP< zm&Hc4OP(oOD7dr$v!W&n{ago+C&(2ya(kaoNHDu%==F*G=Khk@achdP0bh;!fB~cp z?)+FPghvl$XniRaU->PX?+_*HC`OV9+4#^PGW6nbxpnlPA`#2$LIVO$1{Dt1xwbGx5Sl4O6Yzmjw$@51_B>C&{%3`uBr|@H8{ed4ViCN7pVG zHjS^X$YwA>fOHtljbVtUhSWZUlmgJb5qJyw@u($_r#0vVw{a~PGRoOfoG6+_F~-E~ z@_}^koeFCP7Kn&?#ppOXWWN%t$4~&a_Wa_z-TpT#+c`Udi+w!IJp9`7%%qis?3ai+ zb*7X!UBp8awEV)*peY{cggM<1&avT@>PHb#uu=$Gt~EoI6lIIGU9xItocCez64Jan z4e(%0#;OhwYqr-0(aH776lWlmYlNo%=PBE=8t~Ke=`A|<^X&*ke{wd7tjmo54pu?6 zXZ-*A*ksx=cY)lz!s7Ou-xf<5b87H`G-}FB>L#_#_Pg1HorzNV#<|)zQhK)&I50r*WkpsnOWIV?dra3=7c$yi>h{0< zeJV+ig`HpU;2((Qpa*E~4M}tugWN@(Oz+K8FpsE+&g|s!LFc-#2g4vtu^ z4aobiuJDp^HXE2C*xF#7C{e?|$ ziqckwUL@l}u+RQZZX~&cF6J^og{00}nWec?Q42=H!HMvsd>0)Y;0GDEo4tSpN(TQoQ?qBshkOufD+ z#qa9bs=MlxsTQvQvEtISLl>1-$1&GD_~v1TBycdV!_KZS3i1o>R)VA3n=>q=mTbRo z@2;=c@Y$r9_s1KPo}k~r*(7aO4>tvP9K*=ZEKZe@pk}{|nug~FUE30V#ORD=4-ozH z&RhYv7~wD7(eSG+Fhkjj@@9;b7%@Uiq;+5Zx+c-pS_TlwBsdyT&Hwj0IsPtv0Uahh ziTq%tP3EHi4(ArNl>IgyQpknNg-elgc|Lq>7lVa)X5?a>7`ZL!eb4Tdgqw>H1Cz%TTxqLNu=PLIg% zLN~_a^f2i0{OmUbiGG3DYKhYbOn?Bd%+D1m_|dQ=<4YODjL&K5odouve`9#HI5mSX zl)_kxlv!ncwY8O`tX57?zp=rU>yJ=ZPkTh*6V)?;3m2k)aW*(vZSP#rZF z(TvzhK(tqSjc|&F5!FxR@Eu|3Pa&;m+{eAGSbii~>qO)nlF$}j>r?86Zz4e=!9YtX zw3nUEx-)%DgD3tVRb1GVuKn(c?77F85dmpMlyF{*kJf_o+NVcWVYY$}W3o212r>1_e2iP&`Weh{^Qq$6om; zp!~K_<*6%Ey6rTu#?fV0#^{Vkv4iTc!yp$>slZmUdXttLMw*7t|pu02LeX(-cD$+`GQNL zsYPMux6n+a;X6Vh5a6GJeG^}KmdvJVtIE2k@L0w^5sNE7c33Jmlfn!b!PE*|8S!m65@aoP# zClir~9D=bN-sB%mX(m8M>ci!8U-JLJ+jZI8Ky>Wh*<45}G0~MQ=HK=88+ka1oHQLg zY%uJ!9?Puk(&xBr-G!?^Kq^4WLsAk?knmcoj|6+$>&;1A@J-XZUY2|L>>W86_4QW= z@2uM23a|Yo*NX@yGu)s1iIx@mQoxhSP_g0@OM}UpkSpeh1rwx}4vK=C3h8>@IVGz2 zl-!znmw`WEb#=v)7{ zE5euPf9Z(v;=$rzsA9{95s?qp-0s@nJ+d|2zeDr9>3`Y}i;~&r4GtT+iqb3xuW8)J2<0x2G@@Yx)z32nf^n^Vb}IE*LLNZObKTX&SOvd*4KnT zcjJ5kSdF8|49pc};Gq~UX1BUi?YX+n7uID_9$EmKgMtDTrlU-od+Au}wCS==Ba=#v z5SLPQ+mD@^JYJpDm?HT{rxyN~)IXJ@c`e^L==vkr2EspO4suycby`uuUrVoEosh2b z6Rj{3JGRW4*Ww=m>TA8e;yfHTx{#bI8driF8%{lOyw1gCvbbedoMl5pU3v7CsivW) zIquwxZHAYZM+_Q?1tx#`QODPYr{Gg9^qB@pqI#!CPg~*mj8hghukZM*j zhGt3qC_|g8239cT&74k8voNC=gBUer;zmG8N21yEZi&B)TRCk00%w{Vu~0dZG;X3# z>Fsk!h5wVv!(FM};oXtq{q2iPEei|Xs{%lD>l=2BH8Jx_rEMB=ODXMnEAa%@#eW+w z9l6W-hYK4p>T-1p3R!J2%S;sjM&U^=TtvRQJeSxcg@fqp9S7ypLDiL- z5<|BR0?YtgEO&(P)WARWVHw%vamg>$2Q2|3moUfgB;Hd^Hgn3s7!tTLaMgE>b`4sy zqO%8&)B=SC<6YO*Hg3*+Ugf$1Ew?Pk$#^o4(=K#*z;sCq)ArA zH^o$Edy!cu(0(`#z0$U6VAKyAl@rjlnp)#K z`B<+3>%OqlKOs<-ls$?oA+IxX3G0brY;8pK>je7*WFIQCU(-fq(}YKSeExO7^B z*U!wn-zS9zN)@-~FCHURkn&DV2jC_o>d1WkDxe~8ME&olJS8VIkg}WxmS5zsjAe_o ze_DG$hbtAg>uluLnOcLt`bpTdN!Z$2#kSs_J>TBKOE>fCF{L7FOefsFOVg$wg_ihW zpDFs+VG#_h==lrEKLUkUH?U2d zFuhuOQpV=p%fIaCcJ`t|tiVOWo4UeJh>eDl)p7A+jdnrU28a1bGo4b8C}E;%PHgCM zN^!``56af)JC8oB4*lCWeM5QmF4_#hTt)D+W7C_QMU>xu{(U5Y+@DXBvem&)h-b|a zPt%0+t=7L<{I+m(<~M*py%Rans20^j+8&?&_s|mO5qxWVVW*&q8`Xn8Uw?*lCv*{H z;x72!y;}WRmbVzF;(A`}z8zLTm!DYPs|tlh%Xv$wpJVUg8+LXF&+qfk{|No+=JMT3 zCl_4fdCp%ripcyBfw|>z!Cqnrl%;Rdchk9Y+ql#OUrEO;{%^_Xo2IJXTwOgvBsZ@&CFvsSxsDyNiG?U)LbSY37cQ`2ifQ{aXI&J zwgaxsj%UBY2E5kp-l2Ex+`i}8zSCjjy!P!YFu3!qnor~p>|qT^<;1F-iLHjmu-Ce5 z1sRkB?rG4k?JqOf>V5HBM}AaMnshJ0vR0s0k6K`O^k%9sz}4r1D>dVWuW*9Fk-{?3 zq8xRRKag;lT9Vbm7I=9Gcz+ZtL9@_P%DgL&7YwxiD7bgH#F6x_??;k@Gdm zNd3w!(aJ&tNx%hFC!qb>@3g{#S|Belpg_$817zf2EG?opqgJT!cdV9~{*ZeK?Otz* zVUW>cSXs}WELD`&yK-E2d%u6i7VPyNnY;*HdDXpqRRH_&n9X$PGAA?RU$>M)?bwI` zdAXkcBh~^pr1)X}bC_`;0h8qYl#nVI*uh0as5eEC*>UHY#I}z+OIoSfxCi#nhV`2lYz z{N+r8nL(!UMEPt5PVNjAHho5PBKzDBIDYA34BUFoRs=amcILNdVZtk9d|*`F9i`;aWqnO%OW7 zKS#Q(BiCKTkk^(-xi6~uEatkfHbD7e{HqNPS3bP^>CK6NJg!m2IKKX}C-Uxy|$UN*|JWbQu(@U&S(WYO65)f+vua$ct zu)Q)!BMP;(+o!37F1@?po6^Z$>-Ns05e&$U3(ym`wl<<*KvKx(* z_{DL6`*_>e^n%1d5MIcar!%gt*(&> z^G6Ve!n_+k*6lHm~N_iI(y z?Q{L*BrU(CbSuD~pE~Kg%ojS}7OJuE(w>FvNcJ3{TC9U7df-Pkgh$-jD|#EzbAH+x zHaN7?+fDF;x?twzo20Cpdy3EALnjaS6zXA^H~JkT#fc;sa;F_+Ahb#m0P3&hfXn^HXQ{YJgJDhCqZpo<>bo1uMyd-rDrQ zHTm$}LuBb0?#iTOT9%6};y522pjm%O_$+}wUIl_4fJ;Syc-v%p{18}#yD~(!WPUV1 zh91XqmJo|)R|3pd3J}VzWc|+IijQ7?FlqS{CP9Pn~Stv0`{^I>4$riH@b+*VE+=j%TPs(Pc{){ZZ9&fJ$G53{ZxMxoXG0p_QdbMS5c9;o)mJ zK;7usyK^6$WBq%4fMt2&yKE-Ppa zpRc6Az^q0=-P+(Li``&!MNOZlUFqB$mImEKMo8q4P0xjW>2<>@K1!@!ggVABCIvPn8=d#-i}FGtOkl!;tlFPGl)|MW zD_nC6vskB5tjGKKoS2#dA1qy4k&-)iQW(;anzpWQPlzXYegxdSUOQnI|siE$upzNW{c4a%<+IlkWWe2!R{2I8UU85%&oM#4;0k;xPYZc z{iwtFs9;**%wCI<`9Y5Aq=$;Ic06>m>y)r-@C>f2Lk z_}YDUxZ6SCeKbUbkMWeG{ZAU}sntL48`6iCqw2rR#l04nY*^Y_Yp`y{7_SJV$xw}L znLA5a6#R8^whg^}Yr(~z^$PN>shG@<>1o54B zPUdX;%GK)-p~Q$rrx1H{UlSS=NK}fUhZlh$r-2rmHgLsK$uZmSsC0)G%P1>c2+uGh zFFQ-fLD&z@n85EaJRUh`3N}zyAsL&JgGN-8jaQ^d!+b5jIk4$bFilpW&r~cl@9*MD zwua6X%-B!;C$L(G7!x=wjxhbhsQVkPdYgQ_t6j)hvT$nEkN1pxX8(Q+t>|V5f#bd9 zo~m4OAs_EsYu*%Fy-Hg+~%nr&H^-IgY6oM6BAPb4Wuq{b&KI%oictkBDnj_YLo9vum?l47TaStm0g`VP zI>r|EUgENfrPirt69B^^WZQEOd1HCFRSphXr_ady;i~HAwH2}-3oQY+-}WZDRHL+{ zM(ypr3Vzi=$*Evpcrm+g)@iOuJRCmCf>p#Kl~-@hA5@DgUG)8KzQ@xA`XiSPb33KQ_lspRaTqC>Z?6!oeG z-{Yxk{2`H(Hg$+>@G=G9Zz*d`Aq?^LI6M!4w_dV3lUG|moFWGl2g*od#N$T1N{T^q zZ<+q$z!as(=#ARhjGHQ64CnrjpvHanaR$52y0D6;mj3?JJb-NgN`qIHOGlxE;&BJgn(DYE)q5;khO}^T?HrWJ3Djl|m3Ew6Q;5 z*I-c6utsrLfGV8BH()SUunuBX@SbUB>rfj-=EUOy>T;hN{(<5Lcz*fImzx zma-_*a8vkn!8jFyXW^o5{jn7+S`;o|mfFDaz}*=#N*@^0W%Yz@z2PKbb&RGXzwwNWPekNjbKsID1OLvb4n+NLRLz zh!P=Up)`2Jfr~C?uImB&;QOKWu%NAUcv`8kOp1GW?>M8L0~|Ag&f>j0nE}6Bh&~WO zlaiE-I*sxvnKeB*IFN#E~t9WHo;H}$)Y-Fu!s1K{AjQfj7?lT$As zVCCy6`fUXsi}vu6l^B_hrXV@Xe~i%dF1+t?f>N+{8@d010lkJ2ac0yvI+2gHVfeJj z#IKYzbFqWF<$P04p{wZkKK8N!R`>(b8R6Vv3qb!4V~o^kjRdeRDd}nL-l22tymsGV z8nq!aC@(dwPE##A1k2p~>s5^5`?P##1}XkYgCS+efypeZ@}i2vHhYTzv0*pu#ucL1 zpZcrl0lw3kGKsve7{->dp?_9<#f}Gj(CQI{a@8)58K2sOv>-ioHK}<&n5$R9T#q)i ztx9jcj?~>Q7WU__mk+0-LjL}~sR&H}u=>^EV?wc20@D()K_R}v%4FD)9hv75>y0DA zJuTSSzKhYYlyw*bli|t5>M*<8_{yt)KB4hb8~)V(t;II^ktDIrHBNxC$3Di%Kxe%X zt~91YZdm$Z`MqSR#v}M2BM|76MZK3rZ-ZapO>u)uktS+ls+-;j5Gj~I`bt@yS`{e= z1UfHxVS0LaFtOwcEgYq3c5S$wGZcLgiiq=2&t<7QEi;*ouZNy3VEaBc=AQJvY4?VF zp84JA?`*$5efo@@Ap8%R=l>>DXb}G%^gka?o|Y(WR->G+lCKG?u3C#`iO;?!>0nvF z1ydAQvY^}66fyW~P>RS^iHYyQk`%;1vW7I-T!o}aK-b0n24X!CM3vM@z=X($hRzS7 zop)C2^=qVd-6N+nG(V!^@Yw5UX*jz{yTgNC4fhhh%ojvj&jK)I=Wp62x7_W~%&COz zSLrH7Zf|xVlm&(YzV`XjopL9`)E3_!XRfD0ZgikDEjdO1~mDZqvF}ff&&5J4f;`_6 zumC4RxI=<~k*C&w(em)Ut$}!aHF7X>9axb8Uy&aMiXXy5t)~v9g5xB-hII*x9EB{$ zlxWc0Xf9ahn`h#KSj-|MD<7^-UfCcouQX)SJtM6_w7fsaCYL;>ic!`h!CA>lbezaD zF)fxJ!rfP&>?zc#X}WStUQfDIP%!W~3T-fiX{IY7QS150?|pDe2A4 z@=c-6yNWX)qi_zEacV9%@X~P= zk$3oSf~Pe&)U?f#<&XKVc}GhNB!0NrY~oga&rl6FB#J>l3`u!n2H#5l{U5TGm-718bU=KTpY!bLIyx|u73(zH#&G9@rvK=Ji~&3P{LXn=e=Z;vKDBjc(f zLkrq|9ThfW;uaCinL8q@eC~E67c}t?(*J7xgzBdtTlOg>x3w-nl<+D$^87D^;6m!u z8z=m>FM2<|OP0mH%qGwNdC2%($mwUs^%G~cTu%F`OP@V2x$&=&bd(%*XFj;#;U-e? z1X?+1?3tgfNsgL zX*=oR(QP#hq?8-it?ydY?}MM6-}F6w4Os6xnD%At3L24AkbzZLHOyAOpgxPHAo3BT z-F|*@%1+zCVK%$zNO}4VQ0w1?(I-JH4=4}1Xe782mO!QEk*C(L|sUcqy4a*AtUlS6F1e2rG-*=}r#Gi!Zc=1V&0VOhd z(J9*K^*1Xd0v)$OI)TM(io4~Nja12fZ-1)EYrg~oTxTKFdw=iUnQcXjO<2H;{O&T$ zXqBhXtSuU{rS-JT%AI2o#MQ*r)RI!OfwQQlfMTFR>Nrnx`t|Ge`JcqEeB)#HEpNPR z+c3ZoQ!?gk3*uqTu`49T=w}!|9l7Ue@z-rKX6^E6`|N)QcmE?qM7>Yhz5H(hYhQ?& z{*(DU{q;@o{f{G9Dq4g#&E9MygDU0Ipig38D6N9WO|i2~lM^HN`e2h3qpD&6GD$4H z12w;D{E2J3G*m&L zn%D(MM%buo1APoGYz=5SEV(b8&=#A~lSCkN`8mzk?hlEC@N<$x5)SYh|?$B>z3yC;AO`tlow|AbWe&|2TssJIc*)EbX*7FP<9hBaC)!0a&+!)}M#%pbu!Nx}*rxp( z-_gkb%0>b6(yV9}R2aWm<`Un&CAiCEMJ4785cguh5f$oKeLDbLnTqHINzCLRqY1c@ zz+(-1irgWB*RxpPHVRUWe8PMdm8x86X?*cyFArSnp=PmpD>)BWrLb3T zDeFCB&Y!3G&2R8Kr2~Y7x#34}(ocuS#y>f~dh42QX2$6rAoC{cK%;| z?{QIX8i+!@$Xgj@AWsynC9whWrsOT2leeLDKZvMLR%x0F*WjU-kh?{aQLVD zgq)NOH?{BH8qB0u4b%p$>&D9ID9UR;?5Em%{yhI)5S)vhsZ^mCW6o7^guO^a(lWM8 zcIW?Uh2RR2JV{_sy`2XdFX_#w$DqV=hELRR!Ru!UVZbF=jU=svNGfOuvWMj?mbR9P zG-yca?@`(A5%KS;U23Nd`61sddP-aC;u3I07%ouzaP6D54zPzI8z9`k5~IbW>VYGd zNI{Mzt$BjWT-6uDHFKMK$ohC2LnlkfW^q$x6+v^74Qz!jl zRqyo!;>!CrLoSj+1l0sr?s2S5Kn+l@C z5g?|a`QT5hwwOBi|7*>ielPdiyS3;GL0(?o)!nl3>3_F+oj#7zt3J-`x3i5;1hM^< zn9_%mHDJ~3n0?d6G*2&>N7ZCiqDnBEg5G`a->sH^TFRph_OMg9O*KEXmw$V^!X5uk z0Qlo3qt$#A56QczIcNnAKpkWj34%C<{es{;?mQmE?7r@z%mEmuD*1_$I*x8yucKK~ zebH@w$<1l@h4(i;1|@~tx!boSY9y22Al=i$v*x87eojit9^-%TS;^5hY;Zr}6st@$ z=k`suC;gZs}WrUXJuO>uuCI9> zZbzK z20dO|!AC8@mr0_-_gAdQRphOt7l_}DvoIpJ=9s|rc+9y?1aVwGcnksdyeU>|=b>M;Qw5a&8UUGZC|`_Ea}LvDz&V>1a)9_YD; zNHotaJA1UTl^db8G;Ir-O}Du<8%msr7~zL5<%-t~xv!5${LHxk`YP7X9P&zaGer#+ z3}Vh3uDC@(O+i7>BQbdfp7)SI=;q z-PuI~crW<#b9fVcI7pfRjt9TXCTWt_Mp8I&#NfF3{NhhiJdiRClTUpi#;VtVIj-m1 znQee+TCC?Uibg-B7d@1xmoBj4V3T=p`TF=0T$tjDGdXCwmc> zR(~bRTy6-dvUOnOs5lE@W2vS(I6F-XoIoL^GN)!bH7bFm1ngDXm#K*{<6l%)aM^j? zZX(_9A~lRmnD=4FifhmRk^(__iDmVq-orT4{77wWv10}bt1LYBnKM|*s?vFWJov+e z_4)^8F2PY~<)z-I$MS*+Ce@tTD(s(guu8s~HSXAc%+#%EJ1D;QC+KflYw++2{_QG z=mP2h!LrpjAkqq%VO4lYwcLUnxm_%0On^8x(&fvK!<(qqLo6pJr^nm-AK*dR#0Js6 zHMqoK6L+XEg4MIjYAy{=SPKeG4dp4Kv8tI(;hp6aLCOq-IOZQk4gQ-MK2CC2g$K*E zCg0DoB@#|z+N#dR#%9GiGpi6&tej2b<}9IUCGXz)T11=91jkzJPXH=0oe6Yfzb#SGFx9!PCcT+y417#yn@`~9_Zc>^e3HL8fK!K?EShvVZb?IwNZ(f zy0k2MaEW=LKx0G}_Tt77*r%(J6Z)zW?Y`K9Bh*6Tz6NQlqk zOPfAKC~Ei0>y~jGQnb>>xeH+Pn%2V|bEcJ$-x+d@%m_5+eK)#zz1E@watRL z)l+-n9*4WfF&RsN{Q^lwR53I=pTsf9ZIvPh;36@(K@Cyvwo3MMS+I}s53gC?%pxUL z62Ordv*Eodexg<%U=@Vl>R@79KvS?ZaXj0^$dnx`Va3Qq0FZ%L&4H+mJR+|jP`h^B z9YM>N%PyzOhe&!&yOuz zVVmheT=CxVBFTl|2dXai=N@?+<>G7} zs!R7j^qkjv1nkbQ5sCD6@0_2bOdk^6A7Z_{!#Me}N;)BRkuAzb`)qr47n88Yl-hm$ zT0MtsTAt%TXaR(~%=oiG9IJ&tho8nMXWsN1)uJJN9KL_=5LO@Ym*u)X+^ZIkw%s(+ zR0h`XE;FTY2>KC2cIxQF+}9N{<+JJXi)q?>aJHV%3LHZXtvj7~ROEM8V0}6jRuoda zkBzX=f*q{JH59=-N&yKjZN=o`-`YegTMq(3NRCOe@V;$vwRFh%DD3P`slG`>j;I_@ zLDX&p9;B29l2UA0&KWJE3y37R+MiKdhE%F_XZsP|t&TzI^59vy0KZQ@N{Pg`%To6q zqgNM_+3qau9z_b{e*}a-eic&1_b`+Kizox$ed0UR>=QC-#UcM>GIKiOmo!h!28{y` z)wxSIF}nB1;33&j>++E1dM8__FN6m#YST!DPW%9!fV$S1=N)(_1|pIcs7)vu4cQNW`tk{Y^gN- z6E~{1SW==u<7@;yM=B81q(qw@FNv@V96rS3TeQt&W53et=d-Nc4s&=Q}(S;57NrDF+bRW~%% zoA**P_Aouba0gZFt%(hNaft+zUgbkziM#6eV=1PTqjo22pt0pYb0Z>-I676m$S}>d zRK&frj`1lCrh`kj9Ch3hi--N7H}*+t`e*u_*3;KwPRO;bVvU-f`ypv{-!_qN(31=Y}%V!J2lp~m{T>spUZeC7 zlPKj&l@C{m#=w-qDMhT%((h`8o3(=Z5!x7mVCR-NHyRt+RB(~XCXNM-TTZXQb1R4aZj)FLbN1yglA}Ep&70>CIneZ`Ve7X zx6H!$UT|wUzv%9@SI^FqfmvM+#2>Uqdg5Q6T|EK)*Q!YaHd<8zjtjmFNPK*Bc-aRW818D7N>v!Pc?lWT#jn1jgk$ z)a#m?zJ_UI)S40+9R)(#jlQV&kP2^3Bu_Dik{T; zC|40wNCIE-=T+APW@N9vm{hPy(?)QnYAYe@i=`jM41|XSO%hq@Hb#829WRemoqeW5>S9_K8D5uX37eBqaT)+9&^}(#RbkGbi2-}!aZOAZM#-w?W z_!}ZszMZ?mp1HL;wodikj*jwI18;GYR3L)ILsH5H{svvzXpT68{{?a@od%Pg`pE7t zgv5g(k_lK8QDdAbZ-j&|gZoT{*nv3qVw(EkTfXU0cKPz=g?-|9B}&3t1I4g|g`~0$ zbn-?bi@02hNkb{gZH`Fftg@5O@N-`4+#{0m^DJW>gM@w8?>d9*dV4&@g<2NFQ^z-W?r3i>v=?)cgB4r5)w`i^;eD z2vjyi`+u6e1m7I+$E!7L;QQeR=5uxLK;V1AN7Vb$6261w8!_Cu%8eUq z88eczeXUWIiq|YZH@pDMosCy>^lI14I`5GsG!jojCVPk&^r#CpS(Jx~3pQUl$5bAc zXy1IZTWG^u4`X*x>MCTq%0#JByBD~TrtQn7iOS*CzcL?TQIBIBYF2>DQW0@}t(KpuRUli-%D399(#aWQ&(>F7b z*VzRb#4wIh22&1%GD&+9clEx%Z2&2=ATY$)--+f&>}*}7#YThC{sL)~k__FJM40I* zArYceEUuka!|qEYtQp>#WneJ7&fKGW1Q@ca|E-;dYw2s>ArJc+_B;5s6 zt_}-wv1%TKbD5J%8J*lo16)SZELxYb2?K~JOflNii6$xJfM1 zU5G)_gZ@!4(g`;5tiAEef9t=6BM^bREc1U2Spm2HxHP=@RpUf-?&^`41YQu3-}eq` zp&RkAYHmf?*Rb6kQ4Kat783qqmJQi~;D&e9!UOq z>AdO37y&NZ@gqRUveK>icXYq}8AZ}XuU0%`=)!)1vkDfisJuZH4nWsl?Ry*2K$Q0` zL5PGSy}G{gM}%85&oiYUzt2d)h43>HQRST%okJc{b2pN#UBbiZDZ)vd_*aDj0C;6D zpf+riu^a-YH&BmjkpX6IVVwHYlE)wAt)(V3U}<&S-p%64t1&%^}+NzHgD z@{KK0qFE8&kFoiEm!)g$qraOc@TF+@O*sGqd37dG1&5vcU?7Vo&@WpN|Am?)S%nXG z{Aj!7_Pbyk`_6W!!zs6{SmpfhcFIDD^<&h?NA2O0^)Qb*rh+VwBTfyN^wwLc(QtlseNz(vZ^p3e@R>c$+_*eirP# z5q!Ko##+>K->#Mcsd_!8DcI1O@ z^zgd6IY&`wBq}-yKtzl$_32Z83UL(D!W5s8&E$+8*Ch+;y=k{nZC9&~l3TNjh1r5A ziXcc^lyvH#Ay14>8SJ(~+nMz^VGpW#BK4v=2%o<=r=t8o9vTOc_XH=scep@@0P-CXY%w`rV6C1D_^702H8PYQjCRoHKWBIawn0E-q6R zqdbl<}!@8Sxr>6Z{d&JA`R_F!t>F|tp&pz7eC zL>pf3UMQW=`7YMSqb9_TMXE%XSJi6oMykG!rnT_-a=oPyw$a$T^tzE(%BlVCV9s73lsy1I~_-5SwQ;mTd>%%ZZ zEiH>^qbvI%)Q7W|r)T4|#(CXDigec+qjEJm9OlmGRoSBM!&UuE*4f`xu)8OQv_3z( z?$kZQP+gTu#hdwM;n=X!23GD#63c^&N(;^f^@IWMGkZsU^x~?-i1tXtAV_fJ7YBwF zje7bz$1qR$~W?or9jGO(7X`fAwvCrm|dR9+dO|@VJdGEYla&7(q z?vkFILYA@nth0KqoKKMuW~gQ7{Hd?Jl{W7sUJd^w%o>E!tkq>Vd|JU5A5G(UYuxsa zxQjnZ9XEo(2aGAHDr;?xKn-&z+R^gI_aX{JT-}oHQ@WRYFJAf5?<*11PuVA+m>G9=bDFL!fGD=sB~1J zfk;2KFCUEV6mhhzaF!G~Q%L!wFX;z7x#iPJ{}g}-2hHnV6)6=A&{l^jI^ASO(BIVrlLyhtAj$(5QXH98^tnVF1 zk5mJwtNG{^$O=C77mPO-jo-T#IB{9fN}zEC(q_@c{2teI379#urj+n#h9V}XV0M5s z1cr5EZ#)>1CPWC4q6J(CI-V5)EPqXPi2Kdz8 za_{T-@#(*JoFP~>;|k+|nZ0o|HDlJKVjeDADm}#S=(ETZtQ1|5kCtJPq$M3#H_|7y zwsBny(Nd?8y=Lc_T3H1aOxb0nraY-$^_jP32I0d}`!*2_A;mt#;WE4ndv$RwPzLMA z{jhX}bQZMYUf6AV_^p2ig<%bokaLicY-yEO@OBK;W?d>4a$X5kiJ~Af0c2UoGn^24 zkvMG}qL)){PXg2pgJ!>eyg(zSVofKva!9d*%z+w;Rs9F0F{pXPGAGJZvePU|8&_FT zK~jhW`_s*4!oeB-_PzHWU*aVeWRZPw1Vk8!-+RSo=TOrVA^%}NrM)OeDkDkeMhp8l zqLmmy1fZ8me|9nrnt{g^Pv3~>VhD-FUbNTG7#f8^nB$fn^pH}kxFeRrSyZW5F| zgZU5}e6KHid=q|DgM9P4NUUkrY(_l zM1n*|N`Vb^bQl+_9%^Fp+*aA&_P!4*dzAAxlDjv?lk0CTd@6!VPRc^0L;xq$8Qt5o zr9lC{_;h~=j4JzO;H0oHebp=ChEu!oHMxm;QGz9fLT!mOZgQXvB(LGQ(n~ z*=jIz45->Z)d+3apRXJ=v^*pk&UX#<^q1@0y*?pVwv2@DcQ-Jv`Eh9cN(=(16cTYv zEZtx-%o|H`wlapRr#T9}gE2JNFU!qGK9%n8+lQ{$0AqAsAx|w>-I{{TavG+oRz~XI zPxQXZD{aefVR;FQoDKgba&OUg2XD?x56@qO*I51UF&%%d(>r^>*FJ1XRKk~FpKU;L zP}pxz@!b`<#lQ<)2^dw#G7>pE78ukEa z%U(KPm)OaZELY4Up-IoYT1|-bwW~>|7!HwF&l8oeEgtxM%MY1*bp*SW8Hv!L*=SBN zQpyc)9|b+GO*R=v7WyblWlY1OY$$i_%W>Rq3z~3KUS~j)wbwB;n<;Bn5n8^e!*{7? z{HjgiF**I`pd^gu!6Ts`drd%G8r%7LdA<8;XkPNH7Vc|pTH6~pP2IqHwK)1L-}5~$ zkx?_$uk>6ZfMbwWuoiXYn4XlSZx^D*?c;OWR`09N%k$m%&E0!ISA20dnP!64afNgM zm!{S>K!RBT1c9Q$+d@};QWlLOW^QFlQ3^$GuwQ?9e*U!IdYJNXm_nK_GHbpS63omm#VeXAZjtv2JxzoTcuC zYIG(86{fC=Bc{>Wip*$;uYDUEP^>vqlMn{OWqLY`8=4XX1&exGsj$~kFCoSbt^T8OX&b0HC~4WA+uQ27!_+l{UqL@^(OoquHZqStAK_^KpR&z}aYgzyXZx zcRg8j0Edr-Ydc-aqgB_PgYCFRYmA2M`3od0B6SxJWp?3i>MT6Q1seM<<*pD%oi=e~ z5eUEFqb@JubE;RKLgv)HzaE(w@euU+f2S4UamcQ;Moxm(=2)jQBY1=j$whSX75BfG zxv#^g;U0cKhJ$PJ%EO01wbVwY;GysJ5XM{c<@erig?~~V`^mE#y5Bd_MH)U%vGGJc zv{X(Me)V!;NQdU*D{^~oyALk+A9OPplC_;jvbzKjGgKuqSR6*g7MaB&@XIY{R8&P4 zwMc_c!}m_{h>d#-NLd+it$(-R!LLs=H{y79HAUaQ$KSu>{Q6~l{eH*T6YvCS+!HW- zdMDxN2<&A0M1@}aadpwFoCVAa8UusXK3zO|0g%j2B*qHGWU&bhFzo#L%KIDiqvg%N zS+UJYOdyr}XLC!A0xdh6K?X0#FSS+J`MV7Zp7@%^=#jL*B*A81A)o+!Z}<;$HS?!Z zh{E)avG>gJY2#^Vxz|s6IOk}Zj*83Y43O*tQesEDCM!;J}HGn9*6 zi$%nPmdrIu+vIEjV=Lzy32SEOnkn7Wxeq?<(REMwjilZAz6^+UVK02Iq9WijecuD{ z(cR3}qIISkkys?iBN2{C~p$!5PV3?ArNXo2Y#?*w$v*Q{Cf=8 z7{}8!amwFi_QO$F!IGkq&pqOc=MdmL0+}reY3_mU?jrHAdjRnVu3KjetIuoJ!3e!z zLW|ih96js`k}MJ-OgQ!c*KPqOhUqEHg_~leA>fJ_ ztJUb--@Woyoaw~*7f2#Ubw&hS#vbxo=f*9fE&A1bvJ}W7{SS4(iW9f9D0XjaXlgW< z8FR|B_0kiMDDH1ec!H0pBC#>ba#TS}J(*2_e~;b#vg(~?HnHM9Uwnt?CLsjqm#2^a zTSIr?+cRJM-nnLVkKG`-L^HjnCT=e!_uA;U$Qf z>z&C(Ar+Vvm^&t)%!N1&B6e=I>YnDij(8s(DBZug!%bo#Kz!Y;)P>W~R~<8dF8UfT z>@V3>vn`a0IL%R=k`mmJsGBW%s#0-hbVL==i;s>ynTwEGym+Q}3U#)PR@<}>P!0*x z3{kHDB>-K=JbBP5Kot0FN*F1>sl{9yU)Re>4MhdEU@w)et+$P@NZIV%0WbN0QEH|? zmtjnqc%+8}1^7->@h1-HpmP@72J6KuFSqyLm$tk<(VIcdccxUb<*prA7AEn}>_Qcd z0*SW3oVf317h*=h4%s2cr^D;5qA_Z*l`l3mXi5-TK`s-~MQ0}b`XWt3gGEdwp+u`u z=t=GMCH-QQ+K+c?+XvGz?vppa7mUq%^*dgGt5UK02DJ)wN^{p*eRB)nf}x!{hmD1i z_Qd<(AjcuApd5h|Ck6J6>z=WXeZ+T*=B>cWsHEY$JBhbvoX@IDPdL_#QOoGn@61bt zCnn_&uLH0^i~N@-v2oA#+p_5P^4c%4Dn7g6ms3lIOCNkh**+~KJMOvYjB7uUTm?&q zwQqgLR^V^dpiaJ3Yz(VI67N`9a*01YbO`|w8Nc>GDRd2rK-)m&z6-do(R=J(V1lmdSb{EgBpwIL(|V4z9?uBrLQ+by_=!C zI!9QimmjQ_?oXzn09v3^ zh6RvR7%2zOf2Oyl-*%|*bW@K{1XJolytGxx^(Q=*4|XAfQvgungOONRnyEU294aZu zsm8;RG!wys-LsvjY1hmy=+%=W2G0U>>X0ap`F=^j3HGtY^OH-c7mkO1`qmR`aGh1I;r<^1#K`sqfwX9%K%2)IcpJ!gOL;_9# zzVSTx!=~W-V58*_Qz2&#VkHk z4WKwPb_A`G&{W(|c!rkH?V}?z*0WcSvntDeT3=0 zTUxE?_{|<{>Y{ZATe)bS>jmLnx?S(+bs^|Mqr!*|QHrR-7{45^#zW~syzf8?UWBBi zAeQOx(SHxL2Z7x&q8U#&X2Hb@!g=LXch2yWktmmPE`e|t(Z!t=8eU-g%wQO_sD067w|fT+Z=g2G;d{s`E!z83tr{`{3^=1{D6~ z9%WI#`z0b-8Gam#xbWv2ufJAm2}}`_e!_@)$=rW^b=#xj!^Ts^7L};%j(ZwG_7%l!8UC zkFG~xBA;D;TIEU`&SGkti)>-CDOZw(zI9=GqPwTpY`|<79(L0)3#2!B@>O)^r2e5a z<_B4PrsR?pGli5__YrIXv$6hIm2(a`^NlaY%hHMZN`+> z%62R%eRM!#%EKyKhrMUEya%CTy&2aMvVlSqa5DEq=s6rc zo>-rk{i$PvL}h&$o+h3gih(;-OC`I2@9Q6IbT%ONuRREiLhcqTy0VaKV76OWm_M;xh&-lTWU(azludl;&xgEV1`x*}OPmGq! zPLYeL|7D{;Jkm>AZus5aHMAb<^5YCWg1; z?5q9TgX)<#1H*8w;TL1uST0Ovu>QtwhWnG{x70>u>K==hS!h|&ZOzZqY{vcCxH|Ho zA4?lZ$Zb3vae)I*siO&u9Q$gHyn%)Dc|Xh49u>4_)V?U_$dkFp|I$?^m^=178V>Mz z%fTEWKuttUj8W3(KAK=wGKW@hj!23>qA8(cioKCs?BhZNaJ(gvV(n%ij&*$)L zM~3W27AL+B;T)R>sQOdJ&laK|Ucop#w(Hum*>9veJoVjOFTjA@Bw6_ctU{s1}J&V9|6I8Ipry592_XpfY}@68=Rb z3(?;eRUIQAc!Z~V$>mkf1e%q#s@0!&~rwlAQ?=WLVH26k|ZW&;@85s3s%| zMHpG`-TrZJUl%XeKbCz;Sz>mfq^t!bq{k9srsFYA(zx=KxanH>`=|iQK^F8AdL&DW z8U6GKVesDFz{^XgJK32pEin>af}<&Ry_%a*j&$*jHTr1sOBkC>wF*tEbnb&+E__t~ z?B(|<95nC@HvLhqaBi4U=Fg}VodeLQ0f*T&2L`9{-_V>9;KQQ`a|*s;$7B(5(I@4R zIE4MrlnJdsrH_=-twOa?D(M5v+gH>C#PlA(C?_<>F_oI_iyXsO9X@q_p~j58ID(0g z-7w2niED3fbQ0LL-zzb}Pr}Kp9ij`=s3#WI!W}P?df_~bBUZ?L#=F6A7?W24n6WY< zFGZX|Lek$+c8+s_8ynlpu6ze8F-wE>CsVzVLc0LD$6ceG<5PAsM_MgyKd>Ei@IHR%T5yq28Z>U};B%m7-5y9~S0*nXV-9zOuApon-Cn!}( zKliq>vJJ~ zIC%fx-gj}TzwQkl_sCa5c}FH2Dx3X%_)5ZSc9_4MMFLtgh<5Yj-(a3a7fI>Uc%>-i zw&x&2yo+a}lAV*NFe!FzP>GmWYGKzM}gHV^0GeW$g{V+x-@c5lPmoFAzxZ=coj+E=hqe??tjqF~IeU zti`(ZqInznN|8{Tj3+@|_vOK>R~R%E7Wsv%mjkRXJ>0kUy-?w00#vFykw_JHX?RpD zA5M942fCG~ouEv9(Y%*nZBP`%?D3N^8h6iXi)NwqRi4otS^1E?B(Ls|r9nKp;ua6K(K^NHy&8lJ#s2 z4?XB@R^=YWfQK=N_7cxb`r6>%(pO4fN0RSfhP$!!bHC^wW@1OUF+837qp$mV(MgT$ zw+DCa1!48c3K@v!Qe{|S7$R(To;)XS4*op#$3R=e1B?Dj9OaS# z$&&Hko)<8l=RRs{zeERw0!2e(wdI4N^!14a-rS3p-Mk^>6XTFfFCkt2Nk$j#&s}0~ zv^c#xV^YZ`seQ?rj+byF(`d4C(FSSR+>la0P(RDk(J#F`Ss%Xrj+L-XMEcrJ+WwIh zUq83*jow=gt}DfX5$|M--ytLD27h)wOt&`ts@vrHw6W!zRltz%4QyLH>eFz{_NY+7 zNc=mMD;X|z!}vWK9b(o&jdR60d=ytJBHzS=f&dCO5}{qrjwHrv;x6c_^-k~^H#~GnY6Vvl^gKv zK*24e)H!U$yZPV4LQ?kMwgCLV-n-{Pei0+Vr1%D(K<2M{?ml_y3l5j|44X-mVi+on z(jj6#XZb#Ok(>o8OG-g16k9}Y=)*m^u&d@>pH7ngO1)J*1z;h?K+M&qd?3-8vjdWpf?}~PdxuH4r+?J)`E~iyB zbQkjzB*3EEOW+=`oZ&YHcUu+XkMOcMo-&E&uhhBn zF=-PZ^zAN78$MOssp1@J5uRBrHj*&8SHsfqkz`aV^SHP{x;1Hr@L|k7NbQEIk*}5B z{nk%3WF$Iy&w54JgvD1G;&~+bBMAyYLid&XLL+G79uFu2S(5@AZFLp=zWc-vE9BH| zYQC*2j693?_G?%F9;+k!FcsN3@ydC)ni_Q&fZwqhjYXDFRH3^tO=p~-*ZEde!C;2&W zP4Z_(!9E37;%EG1NdPXe#Ih?Ae|y$dszoEElBF@>f=(7)nysfXgtf(-=DmP_ zM)^nSpZCQ^`&dWbSOXa6&8r>gPq|v3LKZ;M$Porxb4DVMgnj;??CvtCg>=7B+wady zVS${khmKt*Vf&poSx`*x?uhYJgi-jWC$^nu1Y(M+ioa)NS_a4pE%+pO7g%C5aht?q z&at7n3nKxfk!r$=FtK1P*m#!YS`t4tnYM>kun&7hJ(!}aZk!2shFOT2CF;~EL)4?b z8nO+X_c&8g?6zI>a|L?jeL45a;yCn;7<^`6$z5VD`tI z=La1V=hT0vNdPk-6-_={XMlLAHd?`YG)9*IKBUrkj)8yd!*`ZY+!&xN6g@INUclG$ zp?miutBEZ1o59_y8JCaK-8jFq+A1NROWE(`vkg<@Hw9%ls}wrz_m8_LQUMH5JLqo?M7u- z>+6yQgc5ocDls*Vp(xM&VIi12P+r-}3>4=Roa?xp;a5Fg<|A>e5LIf3i-fu6h$Qux zX5{Wi+XoJ2dXTny;N0Y;u!@82ui(=SJ#1L{N&((oH?uRelz=dJb1ewPr)Q2wsv{oo_70-tbe z*#*HnB?(u-O<+f;Vqrp#4zi$7_Vs}b*ZCi*Y^g}?l(IGJ5{wD>3^F|l&cK}|BeN35 zQ$cY2Oa=sP6g_&OBc6FEXC&eQ7+n$y(51+98l?tH7R-tT`OL~^P#w~W&_RC*?SOPw zcUFF1Am990R1TTl$Dg+x=g0E%Qr3w|p3HT{2*QkSdv__?l-;s{Fd#5lxb~0^9D$`@ zNU`9}zn1W~*L;!9>B5}lUo)*xfsWgoL^Y57`JuEmZobhAJYzrw82d_WD%r4MR0UG? zkUUWl!B$05k47XyJA{W^G?;?@h{4;+ueKfF&$Vi#*(0zX^~;;a0BXBl z&GgYv$ghlij@j44`>Zc~Y_XU0imGzoiyNj2Do1e;|N52H5YgGG=~Lw5R@P_kpZ!%j zDx`2o|50cDme3vyt#ee^nK5iUWCnf^k4QF_PJ0o=8yJve&mvE zE|NMxkJDj+BJeN?65!)$r-N0$lVdcWXe!?Y)!FB;&x!H@+}?byFZ232cBZ@<7X=$# zY5A+jse67ZzsxP^_Buv;iX~w=o+|}Zc16aw!LJUc_rr;HQDd1$kTgEs1DN;>j4q8{ z1!CsQu!Ga0Q6C&sIExzx{u-NMeuBL}pafVs#=+FVf}V*!4;t&V|2siX-)mH?8t;=f zj8zT>(H$Ha99G%*S@Ee&()nYe{ z^5>zCjclDLGf|=}FoqCc@6zdV2Tww1)tI`|!KPD5KcA;r1E9q+Q6p_Sc-b2E|0*U@G#@~($kG-t#_Ft*SoDGCuDsBX zy{np%a!Wd)JKuUK!c{zyI0i*O^JFan7!Posfoap2FbY9G`~K^Ba7h9JF(9UgM_1I2 ztat}5{2*YI);*$U7=ub~NmiHAR681qEw9jnQ*m$Iw>;{b@vC)?wT z`0V{H7Ec;8EbE#4N9jWg__SW&#q|0{Q@Mag+GZS1VK6sr>9?j!;o}b3?686;L7aYE zcs9%U+1&vtvmRoY(uiCC3Ht#+Ck?3*@bwq8@6)868@IiDi*L)$N3%1A^%r^J_dh2j zsWKQ@s6lkoq;!BFzbKg0)-kgm1#ge^XfkX%zD{y*90r)=JpR*W)n0R$MI|g(JoK`= zGZm(VvnVyx_u-5UAi_tWJv2Nv#uXLW859Fq;M{5cu;U~$W+Ua<6pLC;fy3XqkH!dR zRwPWa7!9&(1OHAw=$>FCodBK5il*XHVB086oNsSaxOSg3rW3n+Q6+n~|Cs`jFJTZu zl(Nm?TM*8p*-K+)c+(pPK2Qx)Rxt=wlsMHRV3sm(OK}kIIA4gRtms+SDTmWvN&Si> zYp5ISrzb6mMW-OD?8qLXFA@(?aH%x@ja6rDenmZb;KCX-p8;YN*kj8ahL9=2Wj+;q zP_oVNF(BK9QG9Oeu^OeB*{R1#%XI~#>*8#Nk)o$JiO`SLG^Hy1 zbXwi{9xg8PAB~)N8eC2ou24+^XjNSGoIYTUq5;7O3eCSlX&rN&4YQ>NSBLB?O(z}^ zFC9+0Mn}!-AL;IZlLd1Ara5Jasj_73{8ZJ}h!%04LHQi_;2V-dWS@72-AINivtgMW zT#pXr-Eq(m5Tq#iUYbu8!%riT?LtHT#fs1XWO#`cA%TqBIlU}Vcq1EB0RoqP+dnlO z=tB@>BLSxQh12F(tkzE-S#|4Erup+%8dGrEnT9X<^H?Ggwesy+f7EdI@ue1;iKp5s zf4=MO!hP1K>)(+74M)c=tFECIcPQrbTfcsPZQt1>78oxLaWu4L9z_q}fL8b16d<1S9{F zA{jo~{y@QN*s4N5{K7D-f-CWd8^Wof4w#)~s>K58VFLT30`hIaguOgDbdwg5_bmrp z2cMKP;spKuUC0}w&s}a?2K#?A!LSSM^>|Z~+VOIZd!4~?8Q&_It7v`XhEgU3e^7vLMxL1FJ-M#K$R_6jkN+b+d5_ogo`z#yiq;OSeZ8M*D2f*h}+U#$m>L5BUU^ zF9+8U?&zB=$P`7tTE%7`N%g)Jaug7k^TU}S>o&F1XO8Qk@Q|KG=K2W=lve7CwvP8Pfihoop4+~3BT zIkR-G#mI>SI2SPeCd@^7_ct4RCAC-PAg4*FU@!FiXE7OPbyr=0CVdVsf>LXjWJXES z4i>T07n0zmdGA%v!nITEeOSq8{I)*hjABK_K`)}-8nMIulgR65UpiRdH)DyEB5y6E zkET)j7Nh(@_7ouiDo=GO2SX6env21_wL5x6-|LH)Fs01%6C%EWVCp_v_)l~j6#T6u zYt^T3sh$;*W@Dh4XQ(G@JK)j1pho6iwyRvyYNeV@waZ`J)v z(VzdYfMdyQ2`>GozRq%te)r`WL*+bETAkt=ytHOW|D{^+z3rkYDyTf3EbkP)pFigu z#S8I(3CSqp(AMOs71wJWwc~vBod4R}5e6>$UhIXjfMxMO`9gHrZ}P5W_p$=gtn_g- zv^_n%82I|!w>9@7>=;;=anC*+P z#66Up*VqAC_s0~J#oj~6Et2$6hi4SUfYE?L1Zcpc)0CCD(5t8@Ll1d_&^8G!D&XNO ziD%o#Qop|pNd(F?;up@CN@PL5Ak<(p$9{3TxgUdGAl0*@SBP#36iFkf_(E%c48H^5 z$0a@u8PJ!A$l%rp%Yjsd7n+&CSm8DIr=bLz9A2~g;i?8ZdWF;gyZ)MJT`DxrHPIF%| zWkn%Ai~o5~m_1kAw^b-bPS{_*-{`6F&PSkP=ozpxxOd40pumQTXRtzp%VAE(kvZDz zV~s<%gl<%RK-I?8Q`Y{IO6Lkeijy)T^u)|%h|epAkq&rY{;)T@hf!NF1Gw|n;EfB1 zs9>V7q1kIh4IFz8r$LcuDhfLev4k!AG=9kiRyhSkZ%E_ARXL7^alMfUn2_J~oBDA) zmVAt-JN1KRT#k+W&@_1lL%sog_yPRDGL*oaTonm^^aiu=*+@+$yFzVVha((lVq~!Z zUTN7;4Fd8^eUQ`9W)RdANa$V&0{Uey8UPX=5VJB*^57u|_L)wa3i^ocrZruALxQCbO>Pt)HIh`sRMl6c{8g+iMrVY=f#RWhe1C>Z zr#9euAjnB}h;Pm^B^DsRGYASU-m-R|zuP+9d0XI4v>R-)Uuaq-scZAy8GDujvqY!j zACmx?2*ez+^x>wX8r!I%hxX;~${_J)$Wy-+ly8~o^(sZXtYkM#TXAauSPtx+@Frh+ zElB1qX&LP@t=@mKN2Ja3p}6cK0*+sB1Nhu8yf4a7(o!Zx=c48Adj#tuZLt{4ZI5==$IO4; zx4Gm7Z`HNySL0;}%LZ5M67j{&-zX4+*BN|83puNY+oUZuyGF~$ONl`fn+Bd^zlwQf zON;+HbNoomh$e-so#NcX;h%Z%ui(%~GY=t$6I_COmzxxt?Pl!OUA+a&y@iPECd&Gx zDz9K-+?AipD2>1up_vc#AS2Y7=Yf|$xPI%Xo%W$dp%4A?=TIFY9(M378hl;Lfpz3B z9-4mb|6V^t%$GA~@3)h-yO+g@r8^%Ka6x;=q0#F_@EiGC{yP%Xh5xJ4`;0f${|cAF zb{E@hN=5cclTGmt47ciUflX7-!-t-SNYevz3UhpSA(L%Mh zIAnfN)I^JxuZqkyooSH@6yptFQ<}0xYgdErqw=G-xVHZ@<_Or&`{9O8WYlaR z0q6(V)edv{aXK~C-@caJ`0!ADljehR=or!+@0vwcAHP)3zuS>Q^hNSKDoDtB64KlX zuFk7IxVrb3lXh=;Vvw93!8tol@Cj(K}ieI4c(laZ3ih7UBN#5E0Ovg$I8^_NC@^H+Cv^$IVq;hIORUuXc!#^l*#&KNP%J|CkX<)$n5|b> z2?hj{Nd*#)9Z-jF>8G^znM=5J++dkZgySD}R+D#<0K|Hc-M4mJSZP;5GlgRa2u_Ig zYHdBGiyC~70#9Gl+<)^6Nd2;%kaccfs%iGv`StD>p?V8jhig};%+N0z#Eb9lefTkJ z2=)~J3ZjIGn})rhPB!OH#rGvmlvxD%gg%=sf4ayrt-*t#4tCgjWeAWciz|}mH`pt2 zQI(H8C?Ad&N|{f7d7fF3=iqYSvYtUMd8QXP+P}WX0t<+TahNE`oGOw#kk5ZPHdFjZ zV=LS>;6nZi=FI~XN}l+lZ^>H2r>yEMRHNO(xD1%BUwAB-t^fQ?U;08~2l#504eHoQ z>oWfS{Rd^y<{iNq#+kDuttdD=&D*IFWa4{n$8ZON&&C<~r3{AsH2E8Q5?>ZSG{ zBr$7n^=g!2v8^JkgVla6fWs}HF=qC>lxELe$%NX^0MH~x^W6gd}2TGpVh=!wh(!H zX9wJk-|XG(YljbS%sjsJRZ@;o>ZPmM$0MRCJPyd>>{sI&g4qE+fX~x{?tr2bY3jH# ztA6omIDP#7d|fHHCe%2%KXLW&qT{iAbNYOKYbpHB`$4+u_y0&CzCHGR2owJHd*}Z_ zI{aUYmyty*>Mv>d*rKJJCH2PmjR4&>CI(-N$u`Umj;S`H?rs}mrEr(xOcc>1^`tga z?tWu{K>m{2<{-jEQpc-z$6>FZU1EH_OSvB=O@GoNq|yau=Tyg$lS(9JsjE@vMDYg3 zV@L%G;m8*VB9Fr*4Btoqj$icT)@06zsuo}tON0MlD2-^on9sj;@f|LMkc;!K^&kG? zS6|b;uND;LXN!O@I)MmDY;ids$Q`~<=Y3wvPVD7XFM&2aj}!-~l5fUcP5 zvE8y=N@VT-`Vc-tHP~}Y&nf&XZF{8QmM}qwKb7%&^3Mk7p)`I|dY@E6;>CQZISo~& zrDG8@Nj+p;$ebyq)#BtGTICN+Yf?pXJaw{FRju8z-Y)==6Yi~mJJRRvDb(s_Rj<#G zBBWaMA#ZmaqNjO|-`Rc$!zOdcQ}PK%17 zn-_uWZs{|Kj3C-8H&V&Ix5&B4G?%-P;2s+#Ha5k$ChwOrARcV zb}d9I1Ec0xnXfc;2;z`~hpmFcPG_?@ZFZ$O9W20SFA$lW&%uh!@&F5idiG7+-ame= zlKbgv3h(Ty<-HW0FgKNOUcId9dfJ|Mah3=BQ9(}iX_`y%g3H>YE%RAB3{s&sNb~Ui z6r7s~h(lt(>dhn<6N!S^S3H6^H-9xb{E9;)Ly;TZ_lb@zX35)zI<12?Cg@f%=#x`A zCndI^xk`T~xt9!RysE;v;E-`=$krrF-{giuj&~5w^hk8%i}$t`4FJ9R$27)JP+_aI z8Cs*^TB&>01i7u^Y$=q!R5Qxht?-QgVrmRno>bzfmRt2BfsrY}-J(#5nj@V{P30Ct zfCCDbYJ(S*j%&d;M`D%esX7NhlP7c%OeL^aCi-TJiw1n61fhr%iHA~rf8}xRCRUwI zs$6Zdt60y1gbQUWc?zxX{AXCWTfHB=zMfcX-Y>33dAfSz`{VO?wHsb-^cSO&RJdda zL;fig*@%1ZUW(z|o8d#o%p69-boRS|ox_JoVi+i_=X$`yLOLrTF!S0-X zY2fznrXgCh0}TaGu_@j2jUDt z?Ypbur1J0oI%^n`)@F?pRkof@JcS}eEuspIRxaUE3_45OAF;e}j0J9chF=H2xW|qE zz_3W2J>RcV%M{)GgmT-YMmU=a_k%S9G57OY^T%?DpyoG|qQyR`h%>(SZ)nPO!K(ZA zb&Cvd`yNq|+#dTqka8SZb6oeZdcybj%*J3g;!@mVd;~|)1ji!HSc$zpfN_r@N|txG zGbBaOxiiu3njZhivhtg2UGzcc+}1JS09z286$tZ()ffpbR$?hms7n7PH%hvrVGj6) z$HT&@w13Woqlg`B#}%H)fAKlr-Pdm-^Tjm~&x@Rcs~j^>d7ApUdQMjv(dN_WPU3PE z%;TE1p!tWtDn*&V%I_?lV{D&#YE7a5%eEs`F&&m=<}owEks3-U@27x`{3{!Jbx;!8 z%Qx=4xm9w3mW>AN>O9F2@!=tiGy_gG6;C&u>lM0YBJwToXi-0hC&6Ng1&v{x!r)k> zlnA3y?MD}+gjUKi;RZMCpXcLZBx&>Q($2lJ1TpOcQ>7eofe|NB@^xJ3gJTo3Bvz)8Q$Dy?yrb{`sHs_1C%k>IvcJ$LHgcQJ+B38l^b6KS6xdMq7iCU}xDJzg zS)|=)(-oGl|KT0qP6GJHa?$g3DU<`|=6^HAKVWwL`+IgtjA4KrOBC9SOPQyjA)%2* z042*(1mmU{VP*Zl^4gER*p_IwMifT5;2iU)Jvpf7AN2c8dr*PnRq*`Qh3j$r zq5!Ui>;rGv$SSMdp?K4_`O(%XDk%I-Kcm|skCs=8ddbf|h{r11Fp09YXweA%mZ zjcvrHEO+3T=;>h$c~WZVX~YzZb2JPQUl_BJ;C+%f4{7+LF_!_DThryCc1=*c>>nTl zil@P<9+IZbTKAChV|e!1Gt5)FSjW5B`c|X;f*T?i|2E!+c1a%c7;4ftP1FQ&(P3{+ zIK0Jv^B5G0C_R9S(w&eIN=IM7>vgOI9s&f7v0qgi)LC zdFS=$a7mSFftZU<*r~t(N1g)(pT&&X*sKzWRw6|ytg5cefTtuG$}jSzE+1c^p7+V7 z*3?Y~5Y=iNAo$~_q~m9NZ^hi$^^dp2x17&~C5e}Y+^|(l?looj6ElMijdy!q8|o-| z&iZS({g>F*5J>Slc0nXY_P&is8?$id5A@XG*r~;Qknr2QQkR`BoxWf=Nz2UY_eX8o zX4JwuqkE-L9*VBM${Ke<9npthAG)TEwFce7`F;FlrHd&Sc=JoYT#|eM4xJDd+vMLv zsz2YTZGXae%ND3oia0I0L0vkYoe&8Q_HLDMPh}|Zyb3YXNZ;6PnGL*Z>!fLm9b|jn;4bv`CC}l z&+Ml$Vq6Q^Dq)2U2#G-y+yNOMveUfocXZRHjS`3W$(HW|MV|K6v=-&V9I)Ijc7QFE zA`VSm@|_N&f{c6$?5nwA`_;%Un`D2PG5Jzw!>&{LT7D)$ZSFMvt;&k%%f%K?$Zx!v z4a9Q(Fr5v3{Z;3ZHHqWwj#bZr?FQi*OMLRATkYqnuARcCYGvn7xTe7t?d6iq;5Yq# z$B49__5s#3G%ng1oM&F67bIJlwI9r zk~}M$_g@-QtT@{U#?z{%SzjY(oo}qE1*w*y2PU%QhNPfrjK2R;rN$FGEpcw*{}M8i z=T-2R;DJ{wLsOaNoY0^0Q53bNvsG%`b94Jx6g)~S2D4|nSZI#Nz!#|>x3FEnnnBGm zoFnafiQ19SYvbZ33y!X*WZ#BWpkZ1#HPOWfP*^5@P>Sbho@Cq9Y!KkgRezN;zXEJs z5>1_isFNY=9F991Z8}U|_&JK64o97rd|Gq*#J0u*cp>3To>7CT4(FG{p#`m=L2465 z6Fzdfu5cvyC^=c&g1oryssXSrVRfgVAa3!5;0jeHAFIfL=aPPfWkJotJ;}v9C}4^K zd+2t4#IRB^UtbHJ#A0tc;G3h86Q`PH6yJkJH2a-rd}N#`)|mjUbd+K&f;G3W>jk$L zd_bv(u0d(p^vjm9)^$wKj>_anEa;Qsk(uT0EF=y|31HZJNGY?r;uBLluXNcRYfAEGs;S^0Gfr34l6@p9F(+ZS zc#n)IKsGELnb}Y1y;5;=O!FgVmJh&{CI-o1pzbo%5Jy0Et7n+FtmPFI92vt?6jp7Z z&^ys%gC0Vv)X3C<{^9xdlh7d1^geP(IwkH(l<@oE2Yw_ECm@O(U(r^L#R!ZQX2k)a z7VG?~&G}1$%o;0=Ag-TGIjposAQ^H$j^AnGR;)yO5n%m=p*!n5~dJruKFoAuEs#YLqU6x|DcAmKb)xbDlM znCtEWk48S8*4qD}LqP<$t#TjREq{m>&*IsT@OHuMtHZ}R5%pAup-ZpE?b~t2bHvRK zfUicJyM`wVsJe&K)sOz5kd+cd$YMhBvyp7_&QS09_L#>1Q9P;hWiz%qe4{qb?_TMR z?SlM$@U`P%{RQ#8yTh~d|BN0K|D8b~>pq;2Q*d`B!$-nI#aiJ>*{)1AS661&_&`o% z4}qc`$xEapNEwoCPU{|h~j z*y__L#b3jRHX%N6MU~I|nzd-d0IoidG#=ra#*OB$quaW@hKRRXG!}qjx@!e+74fkH z`!P58_tB*i6>)9?wpvv)0*_$ipL&t63BW`V=^k0XjT_RD7znzeSJC~A*~-5{cERRF z12Nl+ZvCyP37yaVm3YwgSQLD>SUYI0hD~!5W@GyEHsR4EtjW*k<}l> zQ`qRE-wlAHpYDQgfuwOUotU{?9ADLSucrQy;L8YMNY z{Ru4`tBtkcH?|D?^uiDXg;Uk4em-7iyUSYJ6Vz^%nD@kmt0Ed(#eMF0o)R5mj?&*Bagndme`Y_Z@%iV`iHQq;z7#|*MqaNA->5Trjei)( z2+m*6`~Jc)6;d5jL=iI{4mEB-uYzK-Jle0)RM~kC3Z9lf3D4XPRcZJX)Zjn|z4&aw zm--8gk+wqqCctN<*kM1&IvI6!Sw5eM2j@s;L}oZl$}NQG9u>RFf8_W<7v8=-gOfhO zLT-+79a@(EjN~+#pPM6;>@_&eZCbTJH9XK^#K-fz@HHX6L{Tv~Vq?(Zq=(eOv69{M z27@DHaeow`k(3Fy*IH|v`P&66$SGD;T_RdZ6*l2k9CX>*hr+d6y?DL9=3YM#t4iy+ zeO?Tv&-*tFI`})-aMxzaYdIKWSdUY7Mn6l2#>YW(y>B~NE*WBUcA%nQE1DTO!GKJ< zx1inGI;aM456^@x)G#SMFElTHx@li8VeK5eeLCZx;3?nL&l|D z-Ujt0@{*3x=%z=AW15Fg;-qrlYd&70_WZ

^VEQ2xYd0ZCDhPtb|0(A^}{rI*R_J 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