From c62f8e1c14a3dc72aa30921970d746e9cc7b9abb Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 26 Apr 2023 12:13:14 +0200 Subject: [PATCH 1/7] refs #5297 feat(worker): iban and bankEntity not required --- e2e/paths/03-worker/06_create.spec.js | 1 - modules/worker/back/methods/worker/new.js | 22 +++++++++---------- .../back/methods/worker/specs/new.spec.js | 2 -- modules/worker/front/create/index.js | 5 +++++ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/e2e/paths/03-worker/06_create.spec.js b/e2e/paths/03-worker/06_create.spec.js index 98e67edbf..203d9ba9a 100644 --- a/e2e/paths/03-worker/06_create.spec.js +++ b/e2e/paths/03-worker/06_create.spec.js @@ -25,7 +25,6 @@ describe('Worker create path', () => { await page.write(selectors.workerCreate.postcode, '46680'); await page.write(selectors.workerCreate.street, 'S/ Doomstadt'); await page.write(selectors.workerCreate.email, 'doctorDoom@marvel.com'); - await page.write(selectors.workerCreate.iban, 'ES9121000418450200051332'); // should check for autocompleted worker code and worker user name const workerCode = await page diff --git a/modules/worker/back/methods/worker/new.js b/modules/worker/back/methods/worker/new.js index 144b07f10..68f962254 100644 --- a/modules/worker/back/methods/worker/new.js +++ b/modules/worker/back/methods/worker/new.js @@ -54,18 +54,6 @@ module.exports = Self => { description: `The worker province`, required: true, }, - { - arg: 'iban', - type: 'string', - description: `The worker iban`, - required: true, - }, - { - arg: 'bankEntityFk', - type: 'number', - description: `The worker bank entity`, - required: true, - }, { arg: 'companyFk', type: 'number', @@ -101,6 +89,16 @@ module.exports = Self => { type: 'date', description: `The worker birth`, required: true, + }, + { + arg: 'iban', + type: 'string', + description: `The worker iban`, + }, + { + arg: 'bankEntityFk', + type: 'number', + description: `The worker bank entity`, } ], returns: { diff --git a/modules/worker/back/methods/worker/specs/new.spec.js b/modules/worker/back/methods/worker/specs/new.spec.js index dbcc66683..d2c6157fb 100644 --- a/modules/worker/back/methods/worker/specs/new.spec.js +++ b/modules/worker/back/methods/worker/specs/new.spec.js @@ -27,8 +27,6 @@ describe('Worker new', () => { street: 'S/ defaultWorkerStreet', city: 'defaultWorkerCity', provinceFk: 1, - iban: 'ES8304879798578129532677', - bankEntityFk: 128, companyFk: 442, postcode: '46680', phone: '123456789', diff --git a/modules/worker/front/create/index.js b/modules/worker/front/create/index.js index 7966926b0..3db68b245 100644 --- a/modules/worker/front/create/index.js +++ b/modules/worker/front/create/index.js @@ -8,6 +8,11 @@ export default class Controller extends Section { } onSubmit() { + if (!this.worker.iban && !this.worker.bankEntityFk) { + delete this.worker.iban; + delete this.worker.bankEntityFk; + } + return this.$.watcher.submit().then(json => { this.$state.go('worker.card.basicData', {id: json.data.id}); }); From ac55dc4cc72d210fb15e5844b0d88c03dc0f3a1a Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 28 Apr 2023 14:17:19 +0200 Subject: [PATCH 2/7] refs #5297 feat(worker_new): add payMethod --- CHANGELOG.md | 2 ++ .../231601/00-workerConfigPayMethod.sql | 7 +++++ db/dump/fixtures.sql | 4 +-- e2e/helpers/selectors.js | 1 + e2e/paths/03-worker/06_create.spec.js | 3 +- modules/worker/back/methods/worker/new.js | 15 ++++++++-- .../back/methods/worker/specs/new.spec.js | 30 ++++++++++++++++++- modules/worker/back/models/worker-config.json | 3 ++ modules/worker/front/create/index.html | 11 +++++-- modules/worker/front/create/index.js | 3 ++ modules/worker/front/create/locale/es.yml | 1 + 11 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 db/changes/231601/00-workerConfigPayMethod.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index 1be03b733..15ecad61b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - (Usuarios -> Histórico) Nueva sección - (Roles -> Histórico) Nueva sección +- (Trabajadores -> Dar de alta) Permite elegir el método de pago ### Changed - (Artículo -> Precio fijado) Modificado el buscador superior por uno lateral +- (Trabajadores -> Dar de alta) Quitada obligatoriedad del iban ### Fixed - diff --git a/db/changes/231601/00-workerConfigPayMethod.sql b/db/changes/231601/00-workerConfigPayMethod.sql new file mode 100644 index 000000000..91f477bec --- /dev/null +++ b/db/changes/231601/00-workerConfigPayMethod.sql @@ -0,0 +1,7 @@ +ALTER TABLE `vn`.`workerConfig` ADD payMethodFk tinyint(3) unsigned NULL; +ALTER TABLE `vn`.`workerConfig` ADD CONSTRAINT workerConfig_FK FOREIGN KEY (roleFk) REFERENCES account.`role`(id) ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE `vn`.`workerConfig` ADD CONSTRAINT workerConfig_FK_1 FOREIGN KEY (payMethodFk) REFERENCES `vn`.`payMethod`(id) ON DELETE SET NULL ON UPDATE CASCADE; +-- Cuando se apruebe el PR quitar y poner en redmine para hacerse manualmente +UPDATE `vn`.`workerConfig` + SET payMethodFk = 4 + WHERE id=1; diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 15ccece35..b72e3e74a 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -2801,9 +2801,9 @@ INSERT INTO `vn`.`payDemDetail` (`id`, `detail`) VALUES (1, 1); -INSERT INTO `vn`.`workerConfig` (`id`, `businessUpdated`, `roleFk`) +INSERT INTO `vn`.`workerConfig` (`id`, `businessUpdated`, `roleFk`, `payMethodFk`) VALUES - (1, NULL, 1); + (1, NULL, 1, 4); INSERT INTO `vn`.`ticketRefund`(`refundTicketFk`, `originalTicketFk`) VALUES diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 1740db7ca..1bde2b29a 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -1041,6 +1041,7 @@ export default { email: 'vn-worker-create vn-textfield[ng-model="$ctrl.worker.email"]', boss: 'vn-worker-create vn-autocomplete[ng-model="$ctrl.worker.bossFk"]', role: 'vn-worker-create vn-autocomplete[ng-model="$ctrl.worker.roleFk"]', + payMethod: 'vn-worker-create vn-autocomplete[ng-model="$ctrl.worker.payMethodFk"]', iban: 'vn-worker-create vn-textfield[ng-model="$ctrl.worker.iban"]', createButton: 'vn-worker-create vn-submit[label="Create"]', }, diff --git a/e2e/paths/03-worker/06_create.spec.js b/e2e/paths/03-worker/06_create.spec.js index 203d9ba9a..cad9802a1 100644 --- a/e2e/paths/03-worker/06_create.spec.js +++ b/e2e/paths/03-worker/06_create.spec.js @@ -1,7 +1,7 @@ import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; -describe('Worker create path', () => { +fdescribe('Worker create path', () => { let browser; let page; let newWorker; @@ -25,6 +25,7 @@ describe('Worker create path', () => { await page.write(selectors.workerCreate.postcode, '46680'); await page.write(selectors.workerCreate.street, 'S/ Doomstadt'); await page.write(selectors.workerCreate.email, 'doctorDoom@marvel.com'); + await page.autocompleteSearch(selectors.workerCreate.payMethod, 'one'); // should check for autocompleted worker code and worker user name const workerCode = await page diff --git a/modules/worker/back/methods/worker/new.js b/modules/worker/back/methods/worker/new.js index 68f962254..1c2fde3d3 100644 --- a/modules/worker/back/methods/worker/new.js +++ b/modules/worker/back/methods/worker/new.js @@ -90,15 +90,21 @@ module.exports = Self => { description: `The worker birth`, required: true, }, + { + arg: 'payMethodFk', + type: 'number', + description: `The client payMethod`, + required: true, + }, { arg: 'iban', type: 'string', - description: `The worker iban`, + description: `The client iban`, }, { arg: 'bankEntityFk', type: 'number', - description: `The worker bank entity`, + description: `The client bank entity`, } ], returns: { @@ -160,6 +166,10 @@ module.exports = Self => { myOptions ); + const payMethod = await models.PayMethod.findById(args.payMethodFk, {fields: ['isIbanRequiredForClients']}); + if (payMethod.isIbanRequiredForClients && !args.iban) + throw new UserError(`That payment method requires an IBAN`); + await models.Worker.rawSql( 'CALL vn.clientCreate(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [ @@ -200,6 +210,7 @@ module.exports = Self => { await client.updateAttributes( { + payMethod: args.payMethod, iban: args.iban, bankEntityFk: args.bankEntityFk, defaultAddressFk: address.id, diff --git a/modules/worker/back/methods/worker/specs/new.spec.js b/modules/worker/back/methods/worker/specs/new.spec.js index d2c6157fb..dcd9ab0e9 100644 --- a/modules/worker/back/methods/worker/specs/new.spec.js +++ b/modules/worker/back/methods/worker/specs/new.spec.js @@ -32,7 +32,8 @@ describe('Worker new', () => { phone: '123456789', code: 'DWW', bossFk: 9, - birth: '2022-12-11T23:00:00.000Z' + birth: '2022-12-11T23:00:00.000Z', + payMethodFk: 1 }; it('should return error if personal mail already exists', async() => { @@ -103,6 +104,33 @@ describe('Worker new', () => { expect(error.message).toEqual('This worker already exists'); }); + it('should return error if payMethod require iban', async() => { + const payMethodIbanRequired = await models.PayMethod.findOne({ + where: { + isIbanRequiredForClients: true + }, + fields: ['id'] + }); + + const tx = await models.Worker.beginTransaction({}); + + let error; + try { + const options = {transaction: tx}; + const ctx = { + args: Object.assign({}, defaultWorker, {payMethodFk: payMethodIbanRequired.id}) + }; + await models.Worker.new(ctx, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error.message).toEqual('That payment method requires an IBAN'); + }); + it('should create a new worker', async() => { const newWorker = await models.Worker.new({args: defaultWorker}); diff --git a/modules/worker/back/models/worker-config.json b/modules/worker/back/models/worker-config.json index 05cdfef42..3ece5acc4 100644 --- a/modules/worker/back/models/worker-config.json +++ b/modules/worker/back/models/worker-config.json @@ -14,6 +14,9 @@ }, "roleFk": { "type": "number" + }, + "payMethodFk": { + "type": "number" } }, "acls": [ diff --git a/modules/worker/front/create/index.html b/modules/worker/front/create/index.html index 5f5ab9d07..eb45704a7 100644 --- a/modules/worker/front/create/index.html +++ b/modules/worker/front/create/index.html @@ -142,12 +142,19 @@ + + + on-change="$ctrl.autofillBic()" + rule> { + if (res.data) this.worker.payMethodFk = res.data.payMethodFk; + }); } onSubmit() { diff --git a/modules/worker/front/create/locale/es.yml b/modules/worker/front/create/locale/es.yml index 8c79d770c..78d24a4c9 100644 --- a/modules/worker/front/create/locale/es.yml +++ b/modules/worker/front/create/locale/es.yml @@ -10,3 +10,4 @@ Street: Dirección Postcode: Código postal Web user: Usuario Web Access permission: Permiso de acceso +Pay method: Metodo de pago From a89f400f104f59820f3f36aea55a12bc0aea388d Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 28 Apr 2023 14:22:24 +0200 Subject: [PATCH 3/7] use iban --- e2e/helpers/selectors.js | 1 - e2e/paths/03-worker/06_create.spec.js | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 1bde2b29a..1740db7ca 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -1041,7 +1041,6 @@ export default { email: 'vn-worker-create vn-textfield[ng-model="$ctrl.worker.email"]', boss: 'vn-worker-create vn-autocomplete[ng-model="$ctrl.worker.bossFk"]', role: 'vn-worker-create vn-autocomplete[ng-model="$ctrl.worker.roleFk"]', - payMethod: 'vn-worker-create vn-autocomplete[ng-model="$ctrl.worker.payMethodFk"]', iban: 'vn-worker-create vn-textfield[ng-model="$ctrl.worker.iban"]', createButton: 'vn-worker-create vn-submit[label="Create"]', }, diff --git a/e2e/paths/03-worker/06_create.spec.js b/e2e/paths/03-worker/06_create.spec.js index cad9802a1..98e67edbf 100644 --- a/e2e/paths/03-worker/06_create.spec.js +++ b/e2e/paths/03-worker/06_create.spec.js @@ -1,7 +1,7 @@ import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; -fdescribe('Worker create path', () => { +describe('Worker create path', () => { let browser; let page; let newWorker; @@ -25,7 +25,7 @@ fdescribe('Worker create path', () => { await page.write(selectors.workerCreate.postcode, '46680'); await page.write(selectors.workerCreate.street, 'S/ Doomstadt'); await page.write(selectors.workerCreate.email, 'doctorDoom@marvel.com'); - await page.autocompleteSearch(selectors.workerCreate.payMethod, 'one'); + await page.write(selectors.workerCreate.iban, 'ES9121000418450200051332'); // should check for autocompleted worker code and worker user name const workerCode = await page From 7e63bc0004dd65845b7d8cb9b858eca504a44392 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 8 May 2023 09:18:22 +0200 Subject: [PATCH 4/7] refs #5297 quit fdescribe --- e2e/paths/13-supplier/03_fiscal_data.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/paths/13-supplier/03_fiscal_data.spec.js b/e2e/paths/13-supplier/03_fiscal_data.spec.js index 31b3fafd2..170a8d05a 100644 --- a/e2e/paths/13-supplier/03_fiscal_data.spec.js +++ b/e2e/paths/13-supplier/03_fiscal_data.spec.js @@ -15,7 +15,7 @@ const $inputs = { sageTaxType: 'vn-supplier-fiscal-data [ng-model="$ctrl.supplier.sageTaxTypeFk"]' }; -fdescribe('Supplier fiscal data path', () => { +describe('Supplier fiscal data path', () => { let browser; let page; From 96b5749e1ea020322f89d69d8282c2b4aaaa33e0 Mon Sep 17 00:00:00 2001 From: carlossa Date: Mon, 8 May 2023 10:17:35 +0200 Subject: [PATCH 5/7] refs #5297 cambio actual --- e2e/paths/13-supplier/03_fiscal_data.spec.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/e2e/paths/13-supplier/03_fiscal_data.spec.js b/e2e/paths/13-supplier/03_fiscal_data.spec.js index 080d916e4..891b769c9 100644 --- a/e2e/paths/13-supplier/03_fiscal_data.spec.js +++ b/e2e/paths/13-supplier/03_fiscal_data.spec.js @@ -1,6 +1,5 @@ import getBrowser from '../../helpers/puppeteer'; -<<<<<<< HEAD const $ = { saveButton: 'vn-supplier-fiscal-data button[type="submit"]', }; @@ -16,8 +15,6 @@ const $inputs = { sageTaxType: 'vn-supplier-fiscal-data [ng-model="$ctrl.supplier.sageTaxTypeFk"]' }; -======= ->>>>>>> a51481c00ea9f503d002b0ba0e259ea51b81677d describe('Supplier fiscal data path', () => { let browser; let page; From 814568f2a9532f18218177cadd7d5df58324da66 Mon Sep 17 00:00:00 2001 From: carlossa Date: Thu, 18 May 2023 13:11:17 +0200 Subject: [PATCH 6/7] refs #5297 errors solve, trad --- CHANGELOG.md | 4 ---- modules/worker/front/create/locale/es.yml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8faeff923..ccca79238 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,11 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - (Usuarios -> Histórico) Nueva sección - (Roles -> Histórico) Nueva sección -<<<<<<< HEAD - (Trabajadores -> Dar de alta) Permite elegir el método de pago -======= -- (General -> Traducciones) Correo de bienvenida a clientes al portugués y al francés ->>>>>>> 8a843b37bd9067b6be1dfa090d557b59a0111bcf ### Changed - (Artículo -> Precio fijado) Modificado el buscador superior por uno lateral diff --git a/modules/worker/front/create/locale/es.yml b/modules/worker/front/create/locale/es.yml index 78d24a4c9..1a0f03ef6 100644 --- a/modules/worker/front/create/locale/es.yml +++ b/modules/worker/front/create/locale/es.yml @@ -10,4 +10,4 @@ Street: Dirección Postcode: Código postal Web user: Usuario Web Access permission: Permiso de acceso -Pay method: Metodo de pago +Pay method: Método de pago From 6294fc0435a6c55958b14a47a2012980bfc52861 Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 24 May 2023 10:02:02 +0200 Subject: [PATCH 7/7] refs #5297 back&e2e fix changes --- db/changes/{231801 => 232201}/00-workerConfigPayMethod.sql | 0 modules/worker/back/methods/worker/specs/new.spec.js | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) rename db/changes/{231801 => 232201}/00-workerConfigPayMethod.sql (100%) diff --git a/db/changes/231801/00-workerConfigPayMethod.sql b/db/changes/232201/00-workerConfigPayMethod.sql similarity index 100% rename from db/changes/231801/00-workerConfigPayMethod.sql rename to db/changes/232201/00-workerConfigPayMethod.sql diff --git a/modules/worker/back/methods/worker/specs/new.spec.js b/modules/worker/back/methods/worker/specs/new.spec.js index dcd9ab0e9..44f6e9b09 100644 --- a/modules/worker/back/methods/worker/specs/new.spec.js +++ b/modules/worker/back/methods/worker/specs/new.spec.js @@ -33,7 +33,8 @@ describe('Worker new', () => { code: 'DWW', bossFk: 9, birth: '2022-12-11T23:00:00.000Z', - payMethodFk: 1 + payMethodFk: 1, + roleFk: 1 }; it('should return error if personal mail already exists', async() => {