From 616a28500ae0da61c88e1ee63af75e328953709a Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 25 Jul 2023 09:40:22 +0200 Subject: [PATCH 1/5] refs #5834 icon added --- front/salix/components/bank-entity/index.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index 211b77317..65f95fcc0 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -32,6 +32,11 @@ value-field="id" label="Country"> + + Date: Fri, 3 Nov 2023 09:15:41 +0100 Subject: [PATCH 2/5] check bank entity refs 5834 --- back/models/bank-entity.js | 16 ++++++++++++++++ front/salix/components/bank-entity/index.html | 3 ++- front/salix/components/bank-entity/index.js | 2 +- loopback/locale/en.json | 3 ++- loopback/locale/es.json | 4 +++- modules/client/front/billing-data/index.js | 3 --- modules/worker/front/create/index.js | 5 +++-- 7 files changed, 27 insertions(+), 9 deletions(-) diff --git a/back/models/bank-entity.js b/back/models/bank-entity.js index c89e0b364..16a6e9924 100644 --- a/back/models/bank-entity.js +++ b/back/models/bank-entity.js @@ -10,4 +10,20 @@ module.exports = Self => { Self.validatesUniquenessOf('bic', { message: 'This BIC already exist.' }); + + Self.validateAsync('bic', checkBic, { + message: 'Bank entity id must be specified' + }); + async function checkBic(err, done) { + const filter = { + fields: ['code'], + where: {id: this.countryFk} + }; + const country = await Self.app.models.Country.findOne(filter); + const code = country ? country.code.toLowerCase() : null; + + if (code == 'es' && !this.id) + err(); + done(); + } }; diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index 65f95fcc0..209994ae7 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -41,7 +41,8 @@ vn-one ng-show="country.selection.code === 'ES'" label="Entity code" - ng-model="$ctrl.data.id"> + ng-model="$ctrl.data.id" + required="true"> diff --git a/front/salix/components/bank-entity/index.js b/front/salix/components/bank-entity/index.js index 261018017..43653f148 100644 --- a/front/salix/components/bank-entity/index.js +++ b/front/salix/components/bank-entity/index.js @@ -10,7 +10,7 @@ class Controller extends Dialog { if (!this.data.countryFk) throw new Error(`The country can't be empty`); - return this.$http.post(`bankEntities`, this.data) + return this.$http.post(`BankEntities`, this.data) .then(res => this.data.id = res.data.id) .then(() => super.responseHandler(response)) .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 26650175d..593353ae2 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -196,6 +196,7 @@ "Negative basis of tickets: 23": "Negative basis of tickets: 23", "Booking completed": "Booking complete", "The ticket is in preparation": "The ticket [{{ticketId}}]({{{ticketUrl}}}) of the sales person {{salesPersonId}} is in preparation", - "You can only add negative amounts in refund tickets": "You can only add negative amounts in refund tickets" + "You can only add negative amounts in refund tickets": "You can only add negative amounts in refund tickets", + "Bank entity must be specified": "Bank entity must be specified" } diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 3cc9a9627..1b43c31a6 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -325,5 +325,7 @@ "Booking completed": "Reserva completada", "The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación", "The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mímina", - "quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mímina" + "quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mímina", + "Bank entity must be specified": "La entidad bancaria es obligatoria" } + diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js index 7056fa566..fe46eabae 100644 --- a/modules/client/front/billing-data/index.js +++ b/modules/client/front/billing-data/index.js @@ -51,15 +51,12 @@ export default class Controller extends Section { autofillBic() { if (!this.client || !this.client.iban) return; - let bankEntityId = parseInt(this.client.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; if (this.ibanCountry != 'ES') return; - this.$http.get(`BankEntities`, {filter}).then(response => { const hasData = response.data && response.data[0]; - if (hasData) this.client.bankEntityFk = response.data[0].id; else if (!hasData) diff --git a/modules/worker/front/create/index.js b/modules/worker/front/create/index.js index e6d65221f..9a993ae60 100644 --- a/modules/worker/front/create/index.js +++ b/modules/worker/front/create/index.js @@ -30,7 +30,8 @@ export default class Controller extends Section { } autofillBic() { - if (!this.worker || !this.worker.iban) return; + AutoFillBicComponent.controller.prototype.autofillBic(this.client); + /* if (!this.worker || !this.worker.iban) return; let bankEntityId = parseInt(this.worker.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; @@ -42,7 +43,7 @@ export default class Controller extends Section { this.worker.bankEntityFk = response.data[0].id; else if (!hasData) this.worker.bankEntityFk = null; - }); + }); */ } generateCodeUser() { From 0536486b8c9d2a145fda867383efa55ea5891d30 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 3 Nov 2023 09:16:59 +0100 Subject: [PATCH 3/5] ref #5834 fix locale --- loopback/locale/es.json | 1 - 1 file changed, 1 deletion(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 1b43c31a6..4b1d991ec 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -321,7 +321,6 @@ "Select a different client": "Seleccione un cliente distinto", "Fill all the fields": "Rellene todos los campos", "The response is not a PDF": "La respuesta no es un PDF", - "Ticket without Route": "Ticket sin ruta", "Booking completed": "Reserva completada", "The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación", "The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mímina", From fe4c529bfe8490d0f27756bc6064b4317b4d0cdf Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 12 Jan 2024 13:05:00 +0100 Subject: [PATCH 4/5] refs #5834 perf: remove front code --- front/salix/components/bank-entity/index.html | 8 +------- front/salix/components/bank-entity/index.js | 2 +- modules/client/front/billing-data/index.js | 3 +++ modules/worker/front/create/index.js | 5 ++--- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index 209994ae7..211b77317 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -32,17 +32,11 @@ value-field="id" label="Country"> - - + ng-model="$ctrl.data.id"> diff --git a/front/salix/components/bank-entity/index.js b/front/salix/components/bank-entity/index.js index 43653f148..261018017 100644 --- a/front/salix/components/bank-entity/index.js +++ b/front/salix/components/bank-entity/index.js @@ -10,7 +10,7 @@ class Controller extends Dialog { if (!this.data.countryFk) throw new Error(`The country can't be empty`); - return this.$http.post(`BankEntities`, this.data) + return this.$http.post(`bankEntities`, this.data) .then(res => this.data.id = res.data.id) .then(() => super.responseHandler(response)) .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js index fe46eabae..7056fa566 100644 --- a/modules/client/front/billing-data/index.js +++ b/modules/client/front/billing-data/index.js @@ -51,12 +51,15 @@ export default class Controller extends Section { autofillBic() { if (!this.client || !this.client.iban) return; + let bankEntityId = parseInt(this.client.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; if (this.ibanCountry != 'ES') return; + this.$http.get(`BankEntities`, {filter}).then(response => { const hasData = response.data && response.data[0]; + if (hasData) this.client.bankEntityFk = response.data[0].id; else if (!hasData) diff --git a/modules/worker/front/create/index.js b/modules/worker/front/create/index.js index 9a993ae60..e6d65221f 100644 --- a/modules/worker/front/create/index.js +++ b/modules/worker/front/create/index.js @@ -30,8 +30,7 @@ export default class Controller extends Section { } autofillBic() { - AutoFillBicComponent.controller.prototype.autofillBic(this.client); - /* if (!this.worker || !this.worker.iban) return; + if (!this.worker || !this.worker.iban) return; let bankEntityId = parseInt(this.worker.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; @@ -43,7 +42,7 @@ export default class Controller extends Section { this.worker.bankEntityFk = response.data[0].id; else if (!hasData) this.worker.bankEntityFk = null; - }); */ + }); } generateCodeUser() { From b4bb9a48495652429270f38cc121c0a802112dbb Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 31 Jan 2024 10:46:16 +0100 Subject: [PATCH 5/5] refs #5834 feat: new validation --- back/models/bank-entity.js | 6 +++++- loopback/locale/es.json | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/back/models/bank-entity.js b/back/models/bank-entity.js index 16a6e9924..ac352f93c 100644 --- a/back/models/bank-entity.js +++ b/back/models/bank-entity.js @@ -8,7 +8,11 @@ module.exports = Self => { }); Self.validatesUniquenessOf('bic', { - message: 'This BIC already exist.' + message: 'This BIC already exist' + }); + + Self.validatesPresenceOf('countryFk', { + message: 'CountryFK cannot be empty' }); Self.validateAsync('bic', checkBic, { diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 4a452a6d7..3d25d6ab5 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -72,7 +72,7 @@ "The secret can't be blank": "La contraseña no puede estar en blanco", "We weren't able to send this SMS": "No hemos podido enviar el SMS", "This client can't be invoiced": "Este cliente no puede ser facturado", - "You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa", + "You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa", "This ticket can't be invoiced": "Este ticket no puede ser facturado", "You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado", "This ticket can not be modified": "Este ticket no puede ser modificado", @@ -180,7 +180,8 @@ "New ticket request has been created with price": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}* y un precio de *{{price}} €*", "New ticket request has been created": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}*", "Swift / BIC cannot be empty": "Swift / BIC no puede estar vacío", - "This BIC already exist.": "Este BIC ya existe.", + "CountryFK cannot be empty": "El país no puede estar vacío", + "This BIC already exist": "Este BIC ya existe", "That item doesn't exists": "Ese artículo no existe", "There's a new urgent ticket:": "Hay un nuevo ticket urgente:", "Invalid account": "Cuenta inválida", @@ -337,6 +338,5 @@ "You already have the mailAlias": "Ya tienes este alias de correo", "The alias cant be modified": "Este alias de correo no puede ser modificado", "No tickets to invoice": "No hay tickets para facturar", - "Bank entity must be specified": "La entidad bancaria es obligatoria" + "Bank entity must be specified": "La entidad bancaria es obligatoria" } -