diff --git a/CHANGELOG.md b/CHANGELOG.md index d4a1e147ff..de66fe9289 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - (General -> Iconos) Añadidos nuevos iconos -- (Clientes -> Razón social) Nuevas restricciones por pais +- (Clientes -> Razón social) Permite crear clientes con la misma razón social según el país ### Fixed diff --git a/back/methods/vn-user/privileges.js b/back/methods/vn-user/privileges.js index 690ce74a3f..08cfaaae88 100644 --- a/back/methods/vn-user/privileges.js +++ b/back/methods/vn-user/privileges.js @@ -47,7 +47,7 @@ module.exports = Self => { const user = await Self.findById(userId, {fields: ['hasGrant']}, myOptions); const userToUpdate = await Self.findById(id, { - fields: ['id', 'name', 'hasGrant', 'roleFk', 'password'], + fields: ['id', 'name', 'hasGrant', 'roleFk', 'password', 'email'], include: { relation: 'role', scope: { diff --git a/back/models/vn-user.js b/back/models/vn-user.js index a7ce120735..68a556d773 100644 --- a/back/models/vn-user.js +++ b/back/models/vn-user.js @@ -20,7 +20,7 @@ module.exports = function(Self) { Self.validatesFormatOf('email', { message: 'Invalid email', allowNull: true, - allowBlank: true, + allowBlank: false, with: /^[\w|.|-]+@[\w|-]+(\.[\w|-]+)*(,[\w|.|-]+@[\w|-]+(\.[\w|-]+)*)*$/ }); @@ -115,6 +115,14 @@ module.exports = function(Self) { Self.validateLogin = async function(user, password) { let loginInfo = Object.assign({password}, Self.userUses(user)); token = await Self.login(loginInfo, 'user'); + + const userToken = await token.user.get(); + try { + await Self.app.models.Account.sync(userToken.name, password); + } catch (err) { + console.warn(err); + } + return {token: token.id, ttl: token.ttl}; }; diff --git a/front/core/components/smart-table/index.js b/front/core/components/smart-table/index.js index c3b927c62b..63a9f64883 100644 --- a/front/core/components/smart-table/index.js +++ b/front/core/components/smart-table/index.js @@ -339,8 +339,9 @@ export default class SmartTable extends Component { if (!header) return; const tbody = this.element.querySelector('tbody'); - const columns = header.querySelectorAll('th'); + if (!tbody) return; + const columns = header.querySelectorAll('th'); const hasSearchRow = tbody.querySelector('tr#searchRow'); if (hasSearchRow) { if (this.$inputsScope) diff --git a/modules/client/front/web-access/index.html b/modules/client/front/web-access/index.html index 74407ba5c3..bf3d34c795 100644 --- a/modules/client/front/web-access/index.html +++ b/modules/client/front/web-access/index.html @@ -39,7 +39,7 @@ label="Recovery email" ng-model="$ctrl.account.email" info="This email is used for user to regain access their account." - rule="VnUser.name"> + rule="VnUser.email"> diff --git a/modules/invoiceIn/back/locale/invoiceIn/en.yml b/modules/invoiceIn/back/locale/invoiceIn/en.yml new file mode 100644 index 0000000000..ec9a824b61 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceIn/en.yml @@ -0,0 +1,20 @@ +name: invoice in +columns: + id: id + serialNumber: serial number + serial: serial + supplierFk: supplier + issued: issued + supplierRef: supplierRef + isBooked: is booked + currencyFk: currency + created: created + companyFk: company + docFk: document + booked: booked + operated: operated + bookEntried: book entried + isVatDeductible: is VAT deductible + withholdingSageFk: withholding + expenceFkDeductible: expence deductible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceIn/es.yml b/modules/invoiceIn/back/locale/invoiceIn/es.yml new file mode 100644 index 0000000000..64e96b3792 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceIn/es.yml @@ -0,0 +1,20 @@ +name: factura recibida +columns: + id: id + serialNumber: número de serie + serial: serie + supplierFk: proveedor + issued: fecha emisión + supplierRef: referéncia proveedor + isBooked: facturado + currencyFk: moneda + created: creado + companyFk: empresa + docFk: documento + booked: fecha contabilización + operated: fecha entrega + bookEntried: fecha asiento + isVatDeductible: impuesto deducible + withholdingSageFk: código de retención + expenceFkDeductible: gasto deducible + editorFk: editor \ No newline at end of file diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml new file mode 100644 index 0000000000..7a6c0dfaf6 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/en.yml @@ -0,0 +1,9 @@ +name: invoice in due day +columns: + id: id + invoiceInFk: invoice in + dueDated: due date + bankFk: bank + amount: amount + foreignValue : foreign amount + created: created diff --git a/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml new file mode 100644 index 0000000000..993437b052 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInDueDay/es.yml @@ -0,0 +1,9 @@ +name: vencimientos factura recibida +columns: + id: id + invoiceInFk: factura + dueDated: fecha vto. + bankFk: banco + amount: importe + foreignValue : importe divisa + created: creado diff --git a/modules/invoiceIn/back/locale/invoiceInTax/en.yml b/modules/invoiceIn/back/locale/invoiceInTax/en.yml new file mode 100644 index 0000000000..c0d12c37df --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInTax/en.yml @@ -0,0 +1,12 @@ +name: invoice in tax +columns: + id: id + invoiceInFk: invoice in + taxCodeFk: tax + taxableBase: taxable base + expenceFk: expence + foreignValue: foreign amount + taxTypeSageFk: tax type + transactionTypeSageFk: transaction type + created: created + editorFk: editor diff --git a/modules/invoiceIn/back/locale/invoiceInTax/es.yml b/modules/invoiceIn/back/locale/invoiceInTax/es.yml new file mode 100644 index 0000000000..7cb847ed86 --- /dev/null +++ b/modules/invoiceIn/back/locale/invoiceInTax/es.yml @@ -0,0 +1,12 @@ +name: factura recibida impuesto +columns: + id: id + invoiceInFk: factura recibida + taxCodeFk: código IVA + taxableBase: base imponible + expenceFk: código gasto + foreignValue: importe divisa + taxTypeSageFk: código impuesto + transactionTypeSageFk: código transacción + created: creado + editorFk: editor \ No newline at end of file diff --git a/modules/ticket/back/methods/ticket/canBeInvoiced.js b/modules/ticket/back/methods/ticket/canBeInvoiced.js index 0f6cb476be..348f02348b 100644 --- a/modules/ticket/back/methods/ticket/canBeInvoiced.js +++ b/modules/ticket/back/methods/ticket/canBeInvoiced.js @@ -67,7 +67,7 @@ module.exports = function(Self) { throw new UserError(`This ticket is already invoiced`); const priceZero = ticket.totalWithVat == 0; - if (priceZero) + if (ticketsIds.length == 1 && priceZero) throw new UserError(`A ticket with an amount of zero can't be invoiced`); }); diff --git a/modules/worker/back/methods/worker-time-control/filter.js b/modules/worker/back/methods/worker-time-control/filter.js index 041c6cbfbd..6d08802536 100644 --- a/modules/worker/back/methods/worker-time-control/filter.js +++ b/modules/worker/back/methods/worker-time-control/filter.js @@ -36,9 +36,9 @@ module.exports = Self => { if (isSubordinate === false) throw new UserError(`You don't have enough privileges`); - const subordinate = await Worker.findById(ctx.args.workerFk); + const subordinate = await Worker.findById(ctx.args.workerFk, {fields: ['id']}); filter = mergeFilters(filter, {where: { - userFk: subordinate.userFk + userFk: subordinate.id }}); return Self.find(filter); diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json index 6d23c1b665..6e1371055c 100644 --- a/modules/worker/back/models/worker.json +++ b/modules/worker/back/models/worker.json @@ -25,8 +25,7 @@ "type" : "string" }, "userFk": { - "type" : "number", - "required": true + "type" : "number" }, "bossFk": { "type" : "number" diff --git a/modules/worker/front/department/descriptor/index.js b/modules/worker/front/department/descriptor/index.js index 5ab1059d91..388a7f776b 100644 --- a/modules/worker/front/department/descriptor/index.js +++ b/modules/worker/front/department/descriptor/index.js @@ -32,6 +32,28 @@ class Controller extends Descriptor { this.vnApp.showSuccess(this.$t('Department deleted.')); }); } + + loadData() { + const filter = { + fields: ['id', 'name', 'code', 'workerFk', 'isProduction', 'chatName', + 'isTeleworking', 'notificationEmail', 'hasToRefill', 'hasToSendMail', 'hasToMistake', 'clientFk'], + include: [ + {relation: 'client', + scope: { + fields: ['id', 'name'] + }}, + { + relation: 'worker', + scope: { + fields: ['id', 'firstName', 'lastName'] + } + } + ] + }; + + return this.getData(`Departments/${this.id}`, {filter}) + .then(res => this.entity = res.data); + } } Controller.$inject = ['$element', '$scope', '$rootScope']; diff --git a/modules/worker/front/time-control/index.html b/modules/worker/front/time-control/index.html index 760b0dafcb..b77acbddcb 100644 --- a/modules/worker/front/time-control/index.html +++ b/modules/worker/front/time-control/index.html @@ -4,7 +4,7 @@ filter="::$ctrl.filter" data="$ctrl.hours"> -
+
@@ -106,12 +106,6 @@
-
- Autonomous worker -
diff --git a/print/templates/email/printer-setup/assets/files/model.ezp b/print/templates/email/printer-setup/assets/files/model.ezpx similarity index 95% rename from print/templates/email/printer-setup/assets/files/model.ezp rename to print/templates/email/printer-setup/assets/files/model.ezpx index dba98e0ee9..739593447b 100644 --- a/print/templates/email/printer-setup/assets/files/model.ezp +++ b/print/templates/email/printer-setup/assets/files/model.ezpx @@ -539,9 +539,9 @@ 2 4 - + false - false + true 4294967295 5 W5 @@ -571,15 +571,15 @@ 2896 - 187 - 24 + 138 + 32 426 2896 - 187 - 24 + 138 + 32 426 2896 @@ -621,14 +621,14 @@ New label -Lang:(es-ES) OS:Microsoft Windows NT 10.0.22000.0(Win32NT) +Lang:(es-ES) OS:Microsoft Windows NT 10.0.19045.0(Win32NT) Mm 203 EZPL - GODEX G300#132207AB - None + 00000000 + COM1 USB 2886794855 9100 diff --git a/print/templates/email/printer-setup/attachments.json b/print/templates/email/printer-setup/attachments.json index 1e1f710c3b..969fdd23a2 100644 --- a/print/templates/email/printer-setup/attachments.json +++ b/print/templates/email/printer-setup/attachments.json @@ -1,9 +1,9 @@ [ { - "filename": "model.ezp", + "filename": "model.ezpx", "component": "printer-setup", - "path": "/assets/files/model.ezp", - "cid": "model.ezp" + "path": "/assets/files/model.ezpx", + "cid": "model.ezpx" }, { "filename": "port.png", @@ -11,4 +11,4 @@ "path": "/assets/files/port.png", "cid": "port.png" } -] \ No newline at end of file +]