diff --git a/back/locale/account/en.yml b/back/locale/account/en.yml new file mode 100644 index 000000000..0d6c5db80 --- /dev/null +++ b/back/locale/account/en.yml @@ -0,0 +1,17 @@ +name: account +columns: + id: id + name: name + roleFk: role + nickname: nickname + lang: lang + password: password + bcryptPassword: bcrypt password + active: active + email: email + emailVerified: email verified + created: created + updated: updated + image: image + hasGrant: has grant + userFk: user diff --git a/back/locale/account/es.yml b/back/locale/account/es.yml new file mode 100644 index 000000000..79e8a8cc6 --- /dev/null +++ b/back/locale/account/es.yml @@ -0,0 +1,17 @@ +name: cuenta +columns: + id: id + name: nombre + roleFk: rol + nickname: apodo + lang: idioma + password: contraseña + bcryptPassword: contraseña bcrypt + active: activo + email: email + emailVerified: email verificado + created: creado + updated: actualizado + image: imagen + hasGrant: tiene permiso + userFk: usuario diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js index 1fcbfd616..b54afe5a7 100644 --- a/e2e/helpers/extensions.js +++ b/e2e/helpers/extensions.js @@ -218,6 +218,23 @@ let actions = { return handle.jsonValue(); }, + getValue: async function(selector) { + return await this.waitToGetProperty(selector, 'value'); + }, + + getValues: async function(selectorMap) { + const values = {}; + for (const key in selectorMap) + values[key] = await this.waitToGetProperty(selectorMap[key], 'value'); + return values; + }, + + innerText: async function(selector) { + const element = await this.$(selector); + const handle = await element.getProperty('innerText'); + return handle.jsonValue(); + }, + waitPropertyLength: async function(selector, property, minLength) { await this.waitForFunction((selector, property, minLength) => { const element = document.querySelector(selector); diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 04b9007b9..1740db7ca 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -283,12 +283,6 @@ export default { cancelEditAddressButton: 'vn-client-address-edit > form > vn-button-bar > vn-button > button', watcher: 'vn-client-address-edit vn-watcher' }, - clientWebAccess: { - enableWebAccessCheckbox: 'vn-check[label="Enable web access"]', - userName: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.name"]', - email: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.email"]', - saveButton: 'button[type=submit]' - }, clientNotes: { addNoteFloatButton: 'vn-float-button', note: 'vn-textarea[ng-model="$ctrl.note.text"]', @@ -312,15 +306,6 @@ export default { clientMandate: { firstMandateText: 'vn-client-mandate vn-card vn-table vn-tbody > vn-tr' }, - clientLog: { - lastModificationPreviousValue: 'vn-client-log vn-tr table tr td.before', - lastModificationCurrentValue: 'vn-client-log vn-tr table tr td.after', - namePreviousValue: 'vn-client-log vn-tr table tr:nth-child(1) td.before', - nameCurrentValue: 'vn-client-log vn-tr table tr:nth-child(1) td.after', - activePreviousValue: 'vn-client-log vn-tr:nth-child(2) table tr:nth-child(2) td.before', - activeCurrentValue: 'vn-client-log vn-tr:nth-child(2) table tr:nth-child(2) td.after' - - }, clientBalance: { company: 'vn-client-balance-index vn-autocomplete[ng-model="$ctrl.companyId"]', newPaymentButton: `vn-float-button`, @@ -1361,18 +1346,6 @@ export default { notes: 'vn-supplier-basic-data vn-textarea[ng-model="$ctrl.supplier.note"]', saveButton: 'vn-supplier-basic-data button[type="submit"]', }, - supplierFiscalData: { - socialName: 'vn-supplier-fiscal-data vn-textfield[ng-model="$ctrl.supplier.name"]', - taxNumber: 'vn-supplier-fiscal-data vn-textfield[ng-model="$ctrl.supplier.nif"]', - account: 'vn-supplier-fiscal-data vn-textfield[ng-model="$ctrl.supplier.account"]', - sageTaxType: 'vn-supplier-fiscal-data vn-autocomplete[ng-model="$ctrl.supplier.sageTaxTypeFk"]', - sageWihholding: 'vn-supplier-fiscal-data vn-autocomplete[ng-model="$ctrl.supplier.sageWithholdingFk"]', - postCode: 'vn-supplier-fiscal-data vn-datalist[ng-model="$ctrl.supplier.postCode"]', - city: 'vn-supplier-fiscal-data vn-datalist[ng-model="$ctrl.supplier.city"]', - province: 'vn-supplier-fiscal-data vn-autocomplete[ng-model="$ctrl.supplier.provinceFk"]', - country: 'vn-supplier-fiscal-data vn-autocomplete[ng-model="$ctrl.supplier.countryFk"]', - saveButton: 'vn-supplier-fiscal-data button[type="submit"]', - }, supplierBillingData: { payMethod: 'vn-supplier-billing-data vn-autocomplete[ng-model="$ctrl.supplier.payMethodFk"]', payDem: 'vn-supplier-billing-data vn-autocomplete[ng-model="$ctrl.supplier.payDemFk"]', 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 29b39f788..26b4c4e27 100644 --- a/e2e/paths/02-client/07_edit_web_access.spec.js +++ b/e2e/paths/02-client/07_edit_web_access.spec.js @@ -1,88 +1,56 @@ -/* eslint max-len: ["error", { "code": 150 }]*/ -import selectors from '../../helpers/selectors'; import getBrowser from '../../helpers/puppeteer'; -describe('Client Edit web access path', () => { +const $ = { + enableWebAccess: 'vn-client-web-access vn-check[label="Enable web access"]', + userName: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.name"]', + email: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.email"]', + saveButton: 'vn-client-web-access button[type=submit]', + nameValue: 'vn-client-log .change:nth-child(1) .basic-json:nth-child(1) vn-json-value', + activeValue: 'vn-client-log .change:nth-child(2) .basic-json:nth-child(2) vn-json-value' +}; + +describe('Client web access path', () => { let browser; let page; + beforeAll(async() => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('salesPerson', 'client'); await page.accessToSearchResult('max'); - await page.accessToSection('client.card.webAccess'); }); afterAll(async() => { await browser.close(); }); - it('should uncheck the Enable web access checkbox', async() => { - await page.waitToClick(selectors.clientWebAccess.enableWebAccessCheckbox); - await page.waitToClick(selectors.clientWebAccess.saveButton); - const message = await page.waitForSnackbar(); + it('should modify and save web access attributes', async() => { + await page.accessToSection('client.card.webAccess'); + await page.click($.enableWebAccess); + await page.click($.saveButton); + const enableMessage = await page.waitForSnackbar(); + await page.overwrite($.userName, 'Legion'); + await page.overwrite($.email, 'legion@marvel.com'); + await page.click($.saveButton); + const modifyMessage = await page.waitForSnackbar(); - expect(message.text).toContain('Data saved!'); - }); - - it(`should update the name`, async() => { - await page.clearInput(selectors.clientWebAccess.userName); - await page.write(selectors.clientWebAccess.userName, 'Legion'); - await page.waitToClick(selectors.clientWebAccess.saveButton); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - - it(`should update the email`, async() => { - await page.clearInput(selectors.clientWebAccess.email); - await page.write(selectors.clientWebAccess.email, 'legion@marvel.com'); - await page.waitToClick(selectors.clientWebAccess.saveButton); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - - it('should reload the section and confirm web access is now unchecked', async() => { await page.reloadSection('client.card.webAccess'); - const result = await page.checkboxState(selectors.clientWebAccess.enableWebAccessCheckbox); + const hasAccess = await page.checkboxState($.enableWebAccess); + const userName = await page.getValue($.userName); + const email = await page.getValue($.email); - expect(result).toBe('unchecked'); - }); - - it('should confirm web access name have been updated', async() => { - const result = await page.waitToGetProperty(selectors.clientWebAccess.userName, 'value'); - - expect(result).toEqual('Legion'); - }); - - it('should confirm web access email have been updated', async() => { - const result = await page.waitToGetProperty(selectors.clientWebAccess.email, 'value'); - - expect(result).toEqual('legion@marvel.com'); - }); - - it(`should navigate to the log section`, async() => { await page.accessToSection('client.card.log'); - }); + const logName = await page.innerText($.nameValue); + const logActive = await page.innerText($.activeValue); - it(`should confirm the last log shows the updated client name and no modifications on active checkbox`, async() => { - let namePreviousValue = await page - .waitToGetProperty(selectors.clientLog.namePreviousValue, 'innerText'); - let nameCurrentValue = await page - .waitToGetProperty(selectors.clientLog.nameCurrentValue, 'innerText'); + expect(enableMessage.type).toBe('success'); + expect(modifyMessage.type).toBe('success'); - expect(namePreviousValue).toEqual('MaxEisenhardt'); - expect(nameCurrentValue).toEqual('Legion'); - }); + expect(hasAccess).toBe('unchecked'); + expect(userName).toEqual('Legion'); + expect(email).toEqual('legion@marvel.com'); - it(`should confirm the penultimate log shows the updated active and no modifications on client name`, async() => { - let activePreviousValue = await page - .waitToGetProperty(selectors.clientLog.activePreviousValue, 'innerText'); - let activeCurrentValue = await page - .waitToGetProperty(selectors.clientLog.activeCurrentValue, 'innerText'); - - expect(activePreviousValue).toEqual('✓'); - expect(activeCurrentValue).toEqual('✗'); + expect(logName).toEqual('Legion'); + expect(logActive).toEqual('✗'); }); }); diff --git a/e2e/paths/13-supplier/03_fiscal_data.spec.js b/e2e/paths/13-supplier/03_fiscal_data.spec.js index 4f9581e32..31b3fafd2 100644 --- a/e2e/paths/13-supplier/03_fiscal_data.spec.js +++ b/e2e/paths/13-supplier/03_fiscal_data.spec.js @@ -1,7 +1,21 @@ -import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; -describe('Supplier fiscal data path', () => { +const $ = { + saveButton: 'vn-supplier-fiscal-data button[type="submit"]', +}; +const $inputs = { + province: 'vn-supplier-fiscal-data [name="province"]', + country: 'vn-supplier-fiscal-data [name="country"]', + postcode: 'vn-supplier-fiscal-data [name="postcode"]', + city: 'vn-supplier-fiscal-data [name="city"]', + socialName: 'vn-supplier-fiscal-data [name="socialName"]', + taxNumber: 'vn-supplier-fiscal-data [name="taxNumber"]', + account: 'vn-supplier-fiscal-data [name="account"]', + sageWithholding: 'vn-supplier-fiscal-data [ng-model="$ctrl.supplier.sageWithholdingFk"]', + sageTaxType: 'vn-supplier-fiscal-data [ng-model="$ctrl.supplier.sageTaxTypeFk"]' +}; + +fdescribe('Supplier fiscal data path', () => { let browser; let page; @@ -10,102 +24,44 @@ describe('Supplier fiscal data path', () => { page = browser.page; await page.loginAndModule('administrative', 'supplier'); await page.accessToSearchResult('2'); - await page.accessToSection('supplier.card.fiscalData'); }); afterAll(async() => { await browser.close(); }); - it('should attempt to edit the fiscal data but fail as the tax number is invalid', async() => { - await page.clearInput(selectors.supplierFiscalData.city); - await page.clearInput(selectors.supplierFiscalData.province); - await page.clearInput(selectors.supplierFiscalData.country); - await page.clearInput(selectors.supplierFiscalData.postCode); - await page.write(selectors.supplierFiscalData.city, 'Valencia'); - await page.waitForTimeout(1000); // must repeat this action twice or fails. also #2699 may be a cool solution to this. - await page.clearInput(selectors.supplierFiscalData.city); - await page.write(selectors.supplierFiscalData.city, 'Valencia'); - await page.clearInput(selectors.supplierFiscalData.socialName); - await page.write(selectors.supplierFiscalData.socialName, 'Farmer King SL'); - await page.clearInput(selectors.supplierFiscalData.taxNumber); - await page.write(selectors.supplierFiscalData.taxNumber, 'Wrong tax number'); - await page.clearInput(selectors.supplierFiscalData.account); - await page.write(selectors.supplierFiscalData.account, '0123456789'); - await page.autocompleteSearch(selectors.supplierFiscalData.sageWihholding, 'retencion estimacion objetiva'); - await page.autocompleteSearch(selectors.supplierFiscalData.sageTaxType, 'operaciones no sujetas'); + it('should attempt to edit the fiscal data and check data is saved', async() => { + await page.accessToSection('supplier.card.fiscalData'); + await page.clearInput($inputs.province); + await page.clearInput($inputs.country); + await page.clearInput($inputs.postcode); + await page.overwrite($inputs.city, 'Valencia'); + await page.overwrite($inputs.socialName, 'Farmer King SL'); + await page.overwrite($inputs.taxNumber, 'Wrong tax number'); + await page.overwrite($inputs.account, '0123456789'); + await page.autocompleteSearch($inputs.sageWithholding, 'retencion estimacion objetiva'); + await page.autocompleteSearch($inputs.sageTaxType, 'operaciones no sujetas'); + await page.click($.saveButton); + const errorMessage = await page.waitForSnackbar(); + await page.overwrite($inputs.taxNumber, '12345678Z'); + await page.click($.saveButton); + const successMessage = await page.waitForSnackbar(); - await page.waitToClick(selectors.supplierFiscalData.saveButton); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Invalid Tax number'); - }); - - it('should save the changes as the tax number is valid this time', async() => { - await page.clearInput(selectors.supplierFiscalData.taxNumber); - await page.write(selectors.supplierFiscalData.taxNumber, '12345678Z'); - - await page.waitToClick(selectors.supplierFiscalData.saveButton); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - - it('should reload the section', async() => { await page.reloadSection('supplier.card.fiscalData'); - }); + const values = await page.getValues($inputs); - it('should check the socialName was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.socialName, 'value'); - - expect(result).toEqual('Farmer King SL'); - }); - - it('should check the taxNumber was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.taxNumber, 'value'); - - expect(result).toEqual('12345678Z'); - }); - - it('should check the account was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.account, 'value'); - - expect(result).toEqual('0123456789'); - }); - - it('should check the sageWihholding was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.sageWihholding, 'value'); - - expect(result).toEqual('RETENCION ESTIMACION OBJETIVA'); - }); - - it('should check the sageTaxType was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.sageTaxType, 'value'); - - expect(result).toEqual('Operaciones no sujetas'); - }); - - it('should check the postCode was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.postCode, 'value'); - - expect(result).toEqual('46000'); - }); - - it('should check the city was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.city, 'value'); - - expect(result).toEqual('Valencia'); - }); - - it('should check the province was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.province, 'value'); - - expect(result).toEqual('Province one (España)'); - }); - - it('should check the country was edited', async() => { - const result = await page.waitToGetProperty(selectors.supplierFiscalData.country, 'value'); - - expect(result).toEqual('España'); + expect(errorMessage.text).toContain('Invalid Tax number'); + expect(successMessage.type).toBe('success'); + expect(values).toEqual({ + province: 'Province one (España)', + country: 'España', + postcode: '46000', + city: 'Valencia', + socialName: 'Farmer King SL', + taxNumber: '12345678Z', + account: '0123456789', + sageWithholding: 'RETENCION ESTIMACION OBJETIVA', + sageTaxType: 'Operaciones no sujetas' + }); }); }); diff --git a/front/core/components/field/index.js b/front/core/components/field/index.js index 40ea01e47..e89a042a5 100644 --- a/front/core/components/field/index.js +++ b/front/core/components/field/index.js @@ -166,7 +166,7 @@ export default class Field extends FormInput { if (event.defaultPrevented) return; event.preventDefault(); this.field = null; - this.input.dispatchEvent(new Event('change')); + this.element.dispatchEvent(new Event('change')); } buildInput(type) { diff --git a/front/core/components/index.js b/front/core/components/index.js index 86ab89212..44b8beb45 100644 --- a/front/core/components/index.js +++ b/front/core/components/index.js @@ -32,6 +32,7 @@ import './float-button'; import './icon-menu'; import './icon-button'; import './input-number'; +import './json-value'; import './label-value'; import './range'; import './input-time'; diff --git a/front/core/components/json-value/index.js b/front/core/components/json-value/index.js new file mode 100644 index 000000000..6bf0ae4aa --- /dev/null +++ b/front/core/components/json-value/index.js @@ -0,0 +1,73 @@ +import ngModule from '../../module'; +import Component from 'core/lib/component'; +import './style.scss'; + +const maxStrLen = 50; + +/** + * Displays pretty JSON value. + * + * @property {*} value The value + */ +export default class Controller extends Component { + get value() { + return this._value; + } + + set value(value) { + const wasEmpty = this._value === undefined; + this._value = value; + + let text; + let cssClass; + const type = typeof value; + + if (value == null) { + text = '∅'; + cssClass = 'null'; + } else { + cssClass = type; + switch (type) { + case 'boolean': + text = value ? '✓' : '✗'; + cssClass = value ? 'true' : 'false'; + break; + case 'string': + text = value.length <= maxStrLen + ? value + : value.substring(0, maxStrLen) + '...'; + break; + case 'object': + if (value instanceof Date) { + const hasZeroTime = + value.getHours() === 0 && + value.getMinutes() === 0 && + value.getSeconds() === 0; + const format = hasZeroTime ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm:ss'; + text = this.$filter('date')(value, format); + } else + text = value; + break; + default: + text = value; + } + } + + const el = this.element; + el.textContent = text; + el.title = type == 'string' && value.length > maxStrLen ? value : ''; + + cssClass = `json-${cssClass}`; + if (wasEmpty) + el.classList.add(cssClass); + else + el.classList.replace(this.className, cssClass); + } +} + +ngModule.vnComponent('vnJsonValue', { + controller: Controller, + bindings: { + value: '' + } +}); diff --git a/front/core/components/json-value/index.spec.js b/front/core/components/json-value/index.spec.js new file mode 100644 index 000000000..078080d27 --- /dev/null +++ b/front/core/components/json-value/index.spec.js @@ -0,0 +1,79 @@ +import './index'; + +describe('Salix Component vnLog', () => { + let controller; + let $scope; + let $element; + let el; + + beforeEach(ngModule('vnCore')); + + beforeEach(inject(($componentController, $rootScope) => { + $scope = $rootScope.$new(); + $element = angular.element(''); + controller = $componentController('vnJsonValue', {$element, $scope}); + el = controller.element; + })); + + describe('set value()', () => { + it('should display null symbol when value is null equivalent', () => { + controller.value = null; + + expect(el.textContent).toEqual('∅'); + expect(el.className).toContain('json-null'); + }); + + it('should display ballot when value is false', () => { + controller.value = false; + + expect(el.textContent).toEqual('✗'); + expect(el.className).toContain('json-false'); + }); + + it('should display check when value is true', () => { + controller.value = true; + + expect(el.textContent).toEqual('✓'); + expect(el.className).toContain('json-true'); + }); + + it('should display string when value is an string', () => { + controller.value = 'Foo'; + + expect(el.textContent).toEqual('Foo'); + expect(el.className).toContain('json-string'); + }); + + it('should display only date when value is date with time set to zero', () => { + const date = Date.vnNew(); + date.setHours(0, 0, 0, 0); + controller.value = date; + + expect(el.textContent).toEqual('01/01/2001'); + expect(el.className).toContain('json-object'); + }); + + it('should display full date without time when value is date with time', () => { + const date = Date.vnNew(); + date.setHours(15, 45); + controller.value = date; + + expect(el.textContent).toEqual('01/01/2001 15:45:00'); + expect(el.className).toContain('json-object'); + }); + + it('should display object when value is an object', () => { + controller.value = {foo: 'bar'}; + + expect(el.textContent).toEqual('[object Object]'); + expect(el.className).toContain('json-object'); + }); + + it('should display number when value is a number', () => { + controller.value = 2050; + + expect(el.textContent).toEqual('2050'); + expect(el.className).toContain('json-number'); + }); + }); +}); diff --git a/front/core/components/json-value/style.scss b/front/core/components/json-value/style.scss new file mode 100644 index 000000000..009a13d40 --- /dev/null +++ b/front/core/components/json-value/style.scss @@ -0,0 +1,23 @@ +vn-json-value { + display: inline; + + &.json-string { + color: #d172cc; + } + &.json-object { + color: #d1a572; + } + &.json-number { + color: #85d0ff; + } + &.json-true { + color: #7dc489; + } + &.json-false { + color: #c74949; + } + &.json-null { + color: #cd7c7c; + font-style: italic; + } +} diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index 557268661..2e5d225fd 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -41,10 +41,15 @@ vn-table { display: table-row; height: 48px; } - vn-thead, .vn-thead, - vn-tbody, .vn-tbody, - vn-tfoot, .vn-tfoot, - thead, tbody, tfoot { + & > thead, + & > tbody, + & > tfoot, + & > vn-thead, + & > vn-tbody, + & > vn-tfoot, + & > .vn-thead, + & > .vn-tbody, + & > .vn-tfoot { & > * { display: table-row; @@ -111,14 +116,14 @@ vn-table { color: inherit; } } - a.vn-tbody { + & > a.vn-tbody { &.clickable { @extend %clickable; } } - vn-tbody > *, - .vn-tbody > *, - tbody > * { + & > vn-tbody > *, + & > .vn-tbody > *, + & > tbody > * { border-bottom: $border-thin; &:last-child { diff --git a/front/core/styles/variables.scss b/front/core/styles/variables.scss index c280838ca..bcc9fab66 100644 --- a/front/core/styles/variables.scss +++ b/front/core/styles/variables.scss @@ -2,7 +2,6 @@ $font-size: 11pt; $menu-width: 256px; -$right-menu-width: 318px; $topbar-height: 56px; $mobile-width: 800px; $float-spacing: 20px; diff --git a/front/salix/components/layout/style.scss b/front/salix/components/layout/style.scss index 6697bb1b0..612366228 100644 --- a/front/salix/components/layout/style.scss +++ b/front/salix/components/layout/style.scss @@ -88,13 +88,13 @@ vn-layout { } &.right-menu { & > vn-topbar > .end { - width: 80px + $right-menu-width; + width: 80px + $menu-width; } & > .main-view { - padding-right: $right-menu-width; + padding-right: $menu-width; } [fixed-bottom-right] { - right: $right-menu-width; + right: $menu-width; } } & > .main-view { diff --git a/front/salix/components/log/index.html b/front/salix/components/log/index.html index 05abe84c0..7107326d3 100644 --- a/front/salix/components/log/index.html +++ b/front/salix/components/log/index.html @@ -3,70 +3,212 @@ url="{{$ctrl.url}}" filter="$ctrl.filter" link="{originFk: $ctrl.originId}" - where="{changedModel: $ctrl.changedModel, - changedModelId: $ctrl.changedModelId}" + where="{changedModel: $ctrl.changedModel, changedModelId: $ctrl.changedModelId}" data="$ctrl.logs" - limit="20" + order="creationDate DESC, id DESC" + limit="20"> + + - - - - - - Date - User - Model - Action - Name - Changes - - - - - - {{::log.creationDate | date:'dd/MM/yyyy HH:mm'}} - - - {{::log.user.name || 'System' | translate}} + + + + + + + + {{::log.user ? log.user.name.charAt(0).toUpperCase() : 'S'}} + + + + + + + + + {{::$ctrl.relativeDate(log.creationDate)}} + + + {{::$ctrl.actionsText[log.action]}} + + + + + {{::log.changedModelI18n}} + + + #{{::log.changedModelId}} + + + {{::log.changedModelValue}} + + + + + + + + + + + + {{::prop.nameI18n}}: + + , - - - {{::log.changedModel}} - - - {{::$ctrl.actionsText[log.action]}} - - - {{::log.changedModelValue}} - - - - - - Field - Before - After - - - - - {{prop.name}} - {{prop.old}} - {{prop.new}} - - - - - {{::log.description}} + + + + {{::prop.nameI18n}}: + + + + ← + + - - - - - + + + {{::log.description}} + + + No changes + + + + + + + + + + Filter + + + + + + + + + + + + + + {{nickname}} + {{name}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/front/salix/components/log/index.js b/front/salix/components/log/index.js index 1c54aa9b8..19bf5b597 100644 --- a/front/salix/components/log/index.js +++ b/front/salix/components/log/index.js @@ -13,11 +13,17 @@ export default class Controller extends Section { delete: 'Deletes', select: 'Views' }; + this.actionsClass = { + insert: 'success', + update: 'warning', + delete: 'alert', + select: 'notice' + }; this.filter = { include: [{ relation: 'user', scope: { - fields: ['name'], + fields: ['nickname'], include: { relation: 'worker', scope: { @@ -27,6 +33,20 @@ export default class Controller extends Section { }, }], }; + + this.dateFilter = this.$filter('date'); + this.lang = this.$translate.use(); + this.today = Date.vnNew(); + this.today.setHours(0, 0, 0, 0); + } + + $postLink() { + this.resetFilter(); + this.$.$watch( + () => this.$.filter, + () => this.applyFilter(), + true + ); } get logs() { @@ -42,6 +62,7 @@ export default class Controller extends Section { const oldValues = log.oldInstance || empty; const newValues = log.newInstance || empty; const locale = validations[log.changedModel]?.locale || empty; + log.changedModelI18n = locale.name || log.changedModel; let props = Object.keys(oldValues).concat(Object.keys(newValues)); props = [...new Set(props)]; @@ -49,9 +70,10 @@ export default class Controller extends Section { log.props = []; for (const prop of props) { log.props.push({ - name: locale[prop] || prop, - old: this.formatValue(oldValues[prop]), - new: this.formatValue(newValues[prop]) + name: prop, + nameI18n: locale.columns?.[prop] || prop, + old: this.castJsonValue(oldValues[prop]), + new: this.castJsonValue(newValues[prop]) }); } } @@ -61,37 +83,124 @@ export default class Controller extends Section { return !(this.changedModel && this.changedModelId); } - formatValue(value) { - let type = typeof value; + castJsonValue(value) { + return typeof value === 'string' && validDate.test(value) + ? new Date(value) + : value; + } - if (type === 'string' && validDate.test(value)) { - value = new Date(value); - type = typeof value; - } + mainVal(prop, action) { + return action == 'delete' ? prop.old : prop.new; + } - switch (type) { - case 'boolean': - return value ? '✓' : '✗'; - case 'object': - if (value instanceof Date) { - const hasZeroTime = - value.getHours() === 0 && - value.getMinutes() === 0 && - value.getSeconds() === 0; - const format = hasZeroTime ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm:ss'; - return this.$filter('date')(value, format); - } - else - return value; - default: - return value; - } + toggleAttributes(log, changesEl, force) { + log.expand = force; + changesEl.classList.toggle('expanded', force); + } + + relativeDate(dateVal) { + if (dateVal == null) return ''; + const date = new Date(dateVal); + const dateZeroTime = new Date(dateVal); + dateZeroTime.setHours(0, 0, 0, 0); + const diff = Math.trunc((this.today.getTime() - dateZeroTime.getTime()) / (1000 * 3600 * 24)); + + let format; + if (diff == 0) + format = `'${this.$t('today')}'`; + else if (diff == 1) + format = `'${this.$t('yesterday')}'`; + else if (diff > 1 && diff < 7) + format = `'${date.toLocaleDateString(this.lang, {weekday: 'short'})}'`; + else if (this.today.getFullYear() == date.getFullYear()) + format = `d '${date.toLocaleDateString(this.lang, {month: 'short'})}'`; + else + format = `dd/MM/yyyy`; + + return this.dateFilter(date, `${format} HH:mm`); } showWorkerDescriptor(event, workerId) { if (!workerId) return; this.$.workerDescriptor.show(event.target, workerId); } + + resetFilter() { + this.$.filter = {who: 'all'}; + } + + applyFilter() { + const filter = this.$.filter; + + function getParam(prop, value) { + if (value == null || value == '') return null; + switch (prop) { + case 'changedModelValue': + return {[prop]: {like: `%${value}%`}}; + case 'who': + switch (value) { + case 'all': + return null; + case 'user': + return {userFk: {neq: null}}; + case 'system': + return {userFk: null}; + } + case 'actions': + const inq = []; + for (const action in value) { + if (value[action]) + inq.push(action); + } + return inq.length ? {action: {inq}} : null; + case 'from': + if (filter.to) { + return {creationDate: {gte: value}}; + } else { + const to = new Date(value); + to.setHours(23, 59, 59, 999); + return {creationDate: {between: [value, to]}}; + } + case 'to': + const to = new Date(value); + to.setHours(23, 59, 59, 999); + return {creationDate: {lte: to}}; + default: + return {[prop]: value}; + } + } + + const and = []; + for (const prop in filter) { + const param = getParam(prop, filter[prop]); + if (param) and.push(param); + } + + const lbFilter = and.length ? {where: {and}} : null; + return this.$.model.applyFilter(lbFilter); + } + + searchUser(search) { + if (/^[0-9]+$/.test(search)) { + return {id: search}; + } else { + return {or: [ + {name: search}, + {nickname: {like: `%${search}%`}} + ]} + } + } + + userBgColor(user) { + if (!user) return; + const name = user.name || ''; + let hash = 0; + for (let i = 0; i < name.length; i++) + hash += name.charCodeAt(i); + return { + backgroundColor: '#'+ colors[hash % colors.length] + }; + } } ngModule.vnComponent('vnLog', { @@ -105,3 +214,29 @@ ngModule.vnComponent('vnLog', { url: '@' } }); + +const colors = [ + 'e2553d', // Coral + 'FFA07A', // Salmon + 'FFDAB9', // Peach + 'a17077', // Pink + 'bf0e99', // Pink light + '52a500', // Green chartreuse + '00aeae', // Cian + 'b754cf', // Purple middle + '8a69cd', // Blue lavender + '1fa8a1', // Green ocean + 'DC143C', // Red crimson + '5681cf', // Blue steel + 'FF1493', // Ping intense + '00d700', // Green lime + '1E90FF', // Blue sky + '8B008B', // Purple dark + 'cc7000', // Orange bright + '00b5b8', // Turquoise + '8B0000', // Red dark + '008080', // Green bluish + '2F4F4F', // Gray board + '7e7e7e', // Gray + '5d5d5d', // Gray dark +]; diff --git a/front/salix/components/log/index.spec.js b/front/salix/components/log/index.spec.js new file mode 100644 index 000000000..d01a08967 --- /dev/null +++ b/front/salix/components/log/index.spec.js @@ -0,0 +1,97 @@ +import './index'; + +describe('Salix Component vnLog', () => { + let controller; + let $scope; + let $element; + + beforeEach(ngModule('salix')); + + beforeEach(inject(($componentController, $rootScope) => { + $scope = $rootScope.$new(); + $element = angular.element(''); + controller = $componentController('vnLog', {$element, $scope}); + })); + + describe('relativeDate()', () => { + let date; + + beforeEach(() => { + date = Date.vnNew(); + }); + + it('should return empty string when date is null', () => { + const ret = controller.relativeDate(null); + + expect(ret).toEqual(''); + }); + + it('should return empty string when date is undefined', () => { + const ret = controller.relativeDate(undefined); + + expect(ret).toEqual(''); + }); + + it('should return today and time when date is today', () => { + const ret = controller.relativeDate(date); + + expect(ret).toEqual('today 12:00'); + }); + + it('should return yesterday and time when date is yesterday', () => { + date.setDate(date.getDate() - 1); + const ret = controller.relativeDate(date); + + expect(ret).toEqual('yesterday 12:00'); + }); + + it('should return abreviated weekday name and time when date is on past week', () => { + date.setDate(date.getDate() - 3); + const ret = controller.relativeDate(date); + + expect(ret).toEqual('Fri 12:00'); + }); + + it('should return abreviated month name, day number and time when date is on this year', () => { + date.setDate(date.getDate() + 20); + const ret = controller.relativeDate(date); + + expect(ret).toEqual('21 Jan 12:00'); + }); + + it('should return abreviated month name, day number, year and time when date is on different year', () => { + date.setDate(date.getDate() - 20); + const ret = controller.relativeDate(date); + + expect(ret).toEqual('12/12/2000 12:00'); + }); + + it('should convert to date and return string when date is not a Date class instance', () => { + const ret = controller.relativeDate(date.toJSON()); + + expect(ret).toEqual('today 12:00'); + }); + }); + + describe('castJsonValue()', () => { + it('should return date when string has valid JSON date format', () => { + const now = Date.vnNew(); + + const ret = controller.castJsonValue(now.toJSON()); + + expect(ret).toBeInstanceOf(Date); + }); + + it('should return same value when is string with invalid JSON date format', () => { + const ret = controller.castJsonValue('Foo'); + + expect(ret).toEqual('Foo'); + }); + + it('should return same value when is not an string', () => { + const ret = controller.castJsonValue(1001); + + expect(ret).toEqual(1001); + }); + }); +}); diff --git a/front/salix/components/log/locale/es.yml b/front/salix/components/log/locale/es.yml index d341095d8..385b42147 100644 --- a/front/salix/components/log/locale/es.yml +++ b/front/salix/components/log/locale/es.yml @@ -13,3 +13,6 @@ Views: Visualiza System: Sistema note: nota Changes: Cambios +No changes: No hay cambios +today: hoy +yesterday: ayer diff --git a/front/salix/components/log/style.scss b/front/salix/components/log/style.scss index 68cd5a047..34c432083 100644 --- a/front/salix/components/log/style.scss +++ b/front/salix/components/log/style.scss @@ -1,66 +1,173 @@ @import "variables"; vn-log { - vn-td { - vertical-align: initial !important; - } - .changes { - display: none; - } - .label { - color: $color-font-secondary; - } - .value { - color: $color-font; - } + .change { + display: flex; - @media screen and (max-width: 1570px) { - vn-table .expendable { + & > .user-wrapper { + position: relative; + padding-right: 10px; + + & > .user { + border-radius: 50%; + height: 36px; + width: 36px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + + & > * { + width: 100%; + height: 100%; + } + img { + display: block; + cursor: pointer; + } + .user-icon { + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + + &.system { + background-color: $color-main; + } + } + } + & > .arrow { + height: 8px; + width: 8px; + position: absolute; + transform: rotateY(0deg) rotate(45deg); + top: 18px; + right: -4px; + z-index: 1; + } + & > .line { + position: absolute; + background-color: $color-main; + width: 2px; + left: 17px; + z-index: -1; + top: 44px; + bottom: -8px; + } + } + &:last-child > .user-wrapper > .line { display: none; } - .changes { - padding-top: 10px; - display: block; + .detail { + position: relative; + flex-grow: 1; + width: 100%; + border-radius: 2px; + overflow: hidden; + + & > .header { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + & > .chip { + padding: 2px 4px; + border-radius: 4px; + display: inline-block; + color: $color-font-bg; + + &.notice { + background-color: $color-notice-medium; + } + &.success { + background-color: $color-success-medium; + } + &.warning { + background-color: $color-main-medium; + } + &.alert { + background-color: lighten($color-alert, 5%); + } + } + .date { + float: right; + } + } + & > .model { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + & > .model-name { + text-transform: capitalize; + } + & > .model-value { + font-style: italic; + color: #c7bd2b; + } + & > .model-id { + color: $color-font-secondary; + font-size: .9em; + } + } } } - .attributes { - width: 100%; + .changes { + overflow: hidden; + background-color: rgba(255, 255, 255, .05); + border-radius: 4px; + color: $color-font-secondary; + transition: max-height 150ms ease-in-out; + max-height: 28px; + position: relative; - tr { - height: 10px; + & > .expand-button, + & > .shrink-button { + display: none; + } + &.props { + padding-right: 24px; - & > td { - padding: 2px; + & > .expand-button, + & > .shrink-button { + position: absolute; + top: 6px; + right: 8px; + font-size: inherit; + float: right; + cursor: pointer; } - & > td.field, - & > th.field { - width: 20%; - color: gray; + & > .expand-button { + display: block; } - & > td.before, - & > th.before, - & > td.after, - & > th.after { - width: 40%; - white-space: pre-line; + &.expanded { + max-height: 500px; + padding-right: 0; + + & > .changes-wrapper { + text-overflow: initial; + white-space: initial; + } + & > .shrink-button { + display: block; + } + & > .expand-button { + display: none; + } + } + } + & > .changes-wrapper { + padding: 4px 6px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + & > .no-changes { + font-style: italic; + } + .json-field { + text-transform: capitalize; } } } } -.ellipsis { - white-space: nowrap; - overflow: hidden; - max-width: 400px; - text-overflow: ellipsis; - display: inline-block; -} -.no-ellipsize, -[no-ellipsize] { - text-overflow: ''; - white-space: normal; - overflow: auto; -} -.alignSpan { - overflow: hidden; - display: inline-block; -} diff --git a/loopback/common/methods/log/editors.js b/loopback/common/methods/log/editors.js new file mode 100644 index 000000000..4c0b6d2d5 --- /dev/null +++ b/loopback/common/methods/log/editors.js @@ -0,0 +1,40 @@ +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethod('editors', { + description: 'Get the list of entity editors', + accepts: [ + { + arg: 'id', + type: 'integer', + description: 'The model id', + required: true + }, { + arg: 'filter', + type: 'Object', + description: 'The user filter object' + } + ], + returns: { + type: [Self], + root: true + }, + http: { + path: `/:id/editors`, + verb: 'GET' + } + }); + + Self.editors = async(id, filter) => { + const res = await Self.find({ + fields: ['userFk'], + where: {originFk: id} + }); + const userIds = new Set(res.map(x => x.userFk)); + + filter = mergeFilters(filter, { + where: {id: {inq: [...userIds]}} + }); + return await Self.app.models.VnUser.find(filter); + }; +}; diff --git a/loopback/common/methods/log/models.js b/loopback/common/methods/log/models.js new file mode 100644 index 000000000..ec3eac1ad --- /dev/null +++ b/loopback/common/methods/log/models.js @@ -0,0 +1,44 @@ +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethod('models', { + description: 'Get the list of entity models', + accepts: [ + { + arg: 'id', + type: 'integer', + description: 'The model id', + required: true + }, { + arg: 'filter', + type: 'Object', + description: 'The filter object' + } + ], + returns: { + type: [Self], + root: true + }, + http: { + path: `/:id/models`, + verb: 'GET' + } + }); + + Self.models = async(id, filter) => { + filter = mergeFilters(filter, { + fields: ['changedModel'], + where: { + originFk: id, + changedModel: {neq: null} + } + }); + const res = await Self.find(filter); + + const set = new Set(); + return res.filter(x => set.has(x.changedModel) + ? false + : set.add(x.changedModel) + ); + }; +}; diff --git a/loopback/common/models/log.js b/loopback/common/models/log.js new file mode 100644 index 000000000..0622431a6 --- /dev/null +++ b/loopback/common/models/log.js @@ -0,0 +1,10 @@ + +module.exports = function(Self) { + Object.assign(Self, { + setup() { + Self.super_.setup.call(this); + require('../methods/log/editors')(this); + require('../methods/log/models')(this); + } + }); +}; diff --git a/loopback/common/models/log.json b/loopback/common/models/log.json new file mode 100644 index 000000000..54046f072 --- /dev/null +++ b/loopback/common/models/log.json @@ -0,0 +1,4 @@ +{ + "name": "Log", + "base": "VnModel" +} diff --git a/loopback/common/models/vn-model.js b/loopback/common/models/vn-model.js index f57fb3c30..f469e893a 100644 --- a/loopback/common/models/vn-model.js +++ b/loopback/common/models/vn-model.js @@ -28,12 +28,14 @@ module.exports = function(Self) { }); // Register field ACL validation - /* this.beforeRemote('prototype.patchAttributes', ctx => this.checkUpdateAcls(ctx)); + /* + this.beforeRemote('prototype.patchAttributes', ctx => this.checkUpdateAcls(ctx)); this.beforeRemote('updateAll', ctx => this.checkUpdateAcls(ctx)); this.beforeRemote('patchOrCreate', ctx => this.checkInsertAcls(ctx)); this.beforeRemote('create', ctx => this.checkInsertAcls(ctx)); this.beforeRemote('replaceById', ctx => this.checkInsertAcls(ctx)); - this.beforeRemote('replaceOrCreate', ctx => this.checkInsertAcls(ctx)); */ + this.beforeRemote('replaceOrCreate', ctx => this.checkInsertAcls(ctx)); + */ this.remoteMethod('crud', { description: `Create, update or/and delete instances from model with a single request`, diff --git a/modules/account/back/locale/mail/en.yml b/modules/account/back/locale/mail/en.yml new file mode 100644 index 000000000..b492ea640 --- /dev/null +++ b/modules/account/back/locale/mail/en.yml @@ -0,0 +1,7 @@ +name: mail +columns: + id: id + receiver: receiver + replyTo: reply to + subject: subject + body: body diff --git a/modules/account/back/locale/mail/es.yml b/modules/account/back/locale/mail/es.yml new file mode 100644 index 000000000..a0b02b45f --- /dev/null +++ b/modules/account/back/locale/mail/es.yml @@ -0,0 +1,7 @@ +name: mail +columns: + id: id + receiver: receptor + replyTo: responder a + subject: asunto + body: cuerpo diff --git a/modules/account/back/models/role-log.json b/modules/account/back/models/role-log.json index b4fc3daf9..510e98b68 100644 --- a/modules/account/back/models/role-log.json +++ b/modules/account/back/models/role-log.json @@ -1,6 +1,6 @@ { "name": "RoleLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "account.roleLog" diff --git a/modules/account/back/models/user-log.json b/modules/account/back/models/user-log.json index 01acb0176..c5aa08e05 100644 --- a/modules/account/back/models/user-log.json +++ b/modules/account/back/models/user-log.json @@ -1,6 +1,6 @@ { "name": "UserLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "account.userLog" diff --git a/modules/claim/back/locale/claim-beginning/en.yml b/modules/claim/back/locale/claim-beginning/en.yml new file mode 100644 index 000000000..47cc29c69 --- /dev/null +++ b/modules/claim/back/locale/claim-beginning/en.yml @@ -0,0 +1,6 @@ +name: claim beginning +columns: + id: id + quantity: quantity + claimFk: claim + saleFk: sale diff --git a/modules/claim/back/locale/claim-beginning/es.yml b/modules/claim/back/locale/claim-beginning/es.yml new file mode 100644 index 000000000..5e898c25e --- /dev/null +++ b/modules/claim/back/locale/claim-beginning/es.yml @@ -0,0 +1,6 @@ +name: comienzo reclamación +columns: + id: id + quantity: cantidad + claimFk: reclamación + saleFk: línea diff --git a/modules/claim/back/locale/claim-development/en.yml b/modules/claim/back/locale/claim-development/en.yml new file mode 100644 index 000000000..054381e67 --- /dev/null +++ b/modules/claim/back/locale/claim-development/en.yml @@ -0,0 +1,9 @@ +name: claim development +columns: + id: id + claimFk: claim + claimResponsibleFk: responsible + claimReasonFk: reason + claimResultFk: result + claimRedeliveryFk: redelivery + workerFk: worker diff --git a/modules/claim/back/locale/claim-development/es.yml b/modules/claim/back/locale/claim-development/es.yml new file mode 100644 index 000000000..d5223e755 --- /dev/null +++ b/modules/claim/back/locale/claim-development/es.yml @@ -0,0 +1,9 @@ +name: desarrollo reclamación +columns: + id: id + claimFk: reclamación + claimResponsibleFk: responsable + claimReasonFk: motivo + claimResultFk: resultado + claimRedeliveryFk: reenvío + workerFk: trabajador diff --git a/modules/claim/back/locale/claim-dms/en.yml b/modules/claim/back/locale/claim-dms/en.yml new file mode 100644 index 000000000..c76c364e7 --- /dev/null +++ b/modules/claim/back/locale/claim-dms/en.yml @@ -0,0 +1,4 @@ +name: claim dms +columns: + dmsFk: dms + claimFk: claim diff --git a/modules/claim/back/locale/claim-dms/es.yml b/modules/claim/back/locale/claim-dms/es.yml new file mode 100644 index 000000000..949e20a36 --- /dev/null +++ b/modules/claim/back/locale/claim-dms/es.yml @@ -0,0 +1,4 @@ +name: documento reclamación +columns: + dmsFk: dms + claimFk: reclamación diff --git a/modules/claim/back/locale/claim-end/en.yml b/modules/claim/back/locale/claim-end/en.yml new file mode 100644 index 000000000..f9e736d76 --- /dev/null +++ b/modules/claim/back/locale/claim-end/en.yml @@ -0,0 +1,7 @@ +name: claim end +columns: + id: id + claimFk: claim + saleFk: sale + workerFk: worker + claimDestinationFk: destination diff --git a/modules/claim/back/locale/claim-end/es.yml b/modules/claim/back/locale/claim-end/es.yml new file mode 100644 index 000000000..9855eca03 --- /dev/null +++ b/modules/claim/back/locale/claim-end/es.yml @@ -0,0 +1,7 @@ +name: final reclamación +columns: + id: id + claimFk: reclamación + saleFk: línea + workerFk: trabajador + claimDestinationFk: destino diff --git a/modules/claim/back/locale/claim-observation/en.yml b/modules/claim/back/locale/claim-observation/en.yml new file mode 100644 index 000000000..772ea038c --- /dev/null +++ b/modules/claim/back/locale/claim-observation/en.yml @@ -0,0 +1,7 @@ +name: claim observation +columns: + id: id + claimFk: claim + text: text + created: created + workerFk: worker diff --git a/modules/claim/back/locale/claim-observation/es.yml b/modules/claim/back/locale/claim-observation/es.yml new file mode 100644 index 000000000..fae3a1ae9 --- /dev/null +++ b/modules/claim/back/locale/claim-observation/es.yml @@ -0,0 +1,7 @@ +name: observación reclamación +columns: + id: id + claimFk: reclamación + text: texto + created: creado + workerFk: tabajador diff --git a/modules/claim/back/locale/claim/en.yml b/modules/claim/back/locale/claim/en.yml new file mode 100644 index 000000000..7c3ee7555 --- /dev/null +++ b/modules/claim/back/locale/claim/en.yml @@ -0,0 +1,16 @@ +name: claim +columns: + id: id + observation: observation + ticketCreated: ticket created + isChargedToMana: charged to mana + created: created + responsibility: responsibility + hasToPickUp: has to pickUp + ticketFk: ticket + claimStateFk: claim state + workerFk: worker + packages: packages + rma: rma + clientFk: client + claimFk: claim diff --git a/modules/claim/back/locale/claim/es.yml b/modules/claim/back/locale/claim/es.yml new file mode 100644 index 000000000..27fd76ceb --- /dev/null +++ b/modules/claim/back/locale/claim/es.yml @@ -0,0 +1,16 @@ +name: reclamación +columns: + id: id + observation: observación + ticketCreated: ticket creado + isChargedToMana: cargado al maná + created: creado + responsibility: responsabilidad + hasToPickUp: es recogida + ticketFk: ticket + claimStateFk: estado reclamación + workerFk: trabajador + packages: paquetes + rma: rma + clientFk: cliente + claimFk: reclamación diff --git a/modules/claim/back/models/claim-log.json b/modules/claim/back/models/claim-log.json index bb6af02b4..9f28af63e 100644 --- a/modules/claim/back/models/claim-log.json +++ b/modules/claim/back/models/claim-log.json @@ -1,6 +1,6 @@ { "name": "ClaimLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "claimLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/client/back/locale/address/en.yml b/modules/client/back/locale/address/en.yml new file mode 100644 index 000000000..3d090ba89 --- /dev/null +++ b/modules/client/back/locale/address/en.yml @@ -0,0 +1,20 @@ +name: address +columns: + id: id + nickname: nickname + street: street + city: city + postalCode: postal code + phone: phone + mobile: mobile + isActive: active + longitude: longitude + latitude: latitude + isEqualizated: equalizated + isLogifloraAllowed: logiflora allowed + provinceFk: province + clientFk: client + agencyModeFk: agency + addressFk: address + incotermsFk: incoterms + customsAgentFk: customs agent diff --git a/modules/client/back/locale/address/es.yml b/modules/client/back/locale/address/es.yml new file mode 100644 index 000000000..1379f75a4 --- /dev/null +++ b/modules/client/back/locale/address/es.yml @@ -0,0 +1,20 @@ +name: dirección +columns: + id: id + nickname: apodo + street: calle + city: ciudad + postalCode: código postal + phone: teléfono + mobile: móvil + isActive: activo + longitude: longitud + latitude: latitud + isEqualizated: igualado + isLogifloraAllowed: logiflora permitido + provinceFk: provincia + clientFk: cliente + agencyModeFk: agencia + addressFk: dirección + incotermsFk: incoterms + customsAgentFk: agente adunanas diff --git a/modules/client/back/locale/client-contact/en.yml b/modules/client/back/locale/client-contact/en.yml new file mode 100644 index 000000000..5bd6e25db --- /dev/null +++ b/modules/client/back/locale/client-contact/en.yml @@ -0,0 +1,6 @@ +name: client contact +columns: + id: id + name: name + phone: phone + clientFk: client diff --git a/modules/client/back/locale/client-contact/es.yml b/modules/client/back/locale/client-contact/es.yml new file mode 100644 index 000000000..5802c0dde --- /dev/null +++ b/modules/client/back/locale/client-contact/es.yml @@ -0,0 +1,6 @@ +name: contacto cliente +columns: + id: id + name: nombre + phone: teléfono + clientFk: cliente diff --git a/modules/client/back/locale/client-dms/en.yml b/modules/client/back/locale/client-dms/en.yml new file mode 100644 index 000000000..c8ad68635 --- /dev/null +++ b/modules/client/back/locale/client-dms/en.yml @@ -0,0 +1,4 @@ +name: client dms +columns: + dmsFk: dms + clientFk: client diff --git a/modules/client/back/locale/client-dms/es.yml b/modules/client/back/locale/client-dms/es.yml new file mode 100644 index 000000000..c683f4764 --- /dev/null +++ b/modules/client/back/locale/client-dms/es.yml @@ -0,0 +1,4 @@ +name: documento cliente +columns: + dmsFk: dms + clientFk: client diff --git a/modules/client/back/locale/client-observation/en.yml b/modules/client/back/locale/client-observation/en.yml new file mode 100644 index 000000000..2dd8393ae --- /dev/null +++ b/modules/client/back/locale/client-observation/en.yml @@ -0,0 +1,7 @@ +name: client observation +columns: + id: id + clientFk: client + text: text + created: created + workerFk: worker diff --git a/modules/client/back/locale/client-observation/es.yml b/modules/client/back/locale/client-observation/es.yml new file mode 100644 index 000000000..0fc6bbf04 --- /dev/null +++ b/modules/client/back/locale/client-observation/es.yml @@ -0,0 +1,7 @@ +name: observación cliente +columns: + id: id + clientFk: cliente + text: texto + created: creado + workerFk: trabajador diff --git a/modules/client/back/locale/client-sample/en.yml b/modules/client/back/locale/client-sample/en.yml new file mode 100644 index 000000000..77639fbb4 --- /dev/null +++ b/modules/client/back/locale/client-sample/en.yml @@ -0,0 +1,8 @@ +name: client sample +columns: + id: id + created: created + clientFk: client + typeFk: type + userFk: user + companyFk: company diff --git a/modules/client/back/locale/client-sample/es.yml b/modules/client/back/locale/client-sample/es.yml new file mode 100644 index 000000000..6311eb25a --- /dev/null +++ b/modules/client/back/locale/client-sample/es.yml @@ -0,0 +1,8 @@ +name: muestra cliente +columns: + id: id + created: creado + clientFk: cliente + typeFk: tipo + userFk: usuario + companyFk: compañia diff --git a/modules/client/back/locale/client/en.yml b/modules/client/back/locale/client/en.yml new file mode 100644 index 000000000..71048f657 --- /dev/null +++ b/modules/client/back/locale/client/en.yml @@ -0,0 +1,50 @@ +name: client +columns: + id: id + name: name + fi: fi + socialName: socialName + contact: contact + street: street + city: city + postcode: postcode + email: email + phone: phone + mobile: mobile + isActive: active + credit: credit + creditInsurance: credit insurance + iban: iban + dueDay: due day + isEqualizated: equalizated + isFreezed: freezed + hasToInvoiceByAddress: invoice by address + hasToInvoice: has to invoice + isToBeMailed: be mailed + hasSepaVnl: sepa nnl + hasLcr: lcr + hasCoreVnl: core vnl + hasCoreVnh: core vnh + hasIncoterms: incoterms + isTaxDataChecked: tax data checked + eypbc: eypbc + quality: quality + isVies: vies + isRelevant: relevant + accountingAccount: accounting account + created: created + sageTaxTypeFk: sage tax type + sageTransactionTypeFk: sage transaction type + businessTypeFk: business type + salesPersonFk: sales person + hasElectronicInvoice: electronic invoice + payMethodFk: pay method + provinceFk: province + countryFk: country + contactChannelFk: contact channel + clientTypeFk: client type + clientFk: client + defaultAddressFk: default address + bankEntityFk: bank entity + transferorFk: transferor + diff --git a/modules/client/back/locale/client/es.yml b/modules/client/back/locale/client/es.yml new file mode 100644 index 000000000..04e391af0 --- /dev/null +++ b/modules/client/back/locale/client/es.yml @@ -0,0 +1,50 @@ +name: cliente +columns: + id: id + name: nombre + fi: fi + socialName: nombre social + contact: contacto + street: calle + city: ciudad + postcode: código postal + email: email + phone: teléfono + mobile: móvil + isActive: activo + credit: crédito + creditInsurance: seguro crédito + iban: iban + dueDay: día vencimiento + isEqualizated: igualado + isFreezed: congelado + hasToInvoiceByAddress: factura por dirección + hasToInvoice: tiene que facturar + isToBeMailed: envío por email + hasSepaVnl: sepa nnl + hasLcr: lcr + hasCoreVnl: centro vnl + hasCoreVnh: cenrto vnh + hasIncoterms: incoterms + isTaxDataChecked: datos fiscales comprobados + eypbc: eypbc + quality: calidad + isVies: vies + isRelevant: importante + accountingAccount: cuenta contable + created: creado + sageTaxTypeFk: tipo impuesto sage + sageTransactionTypeFk: tipo transacción sage + businessTypeFk: tipo negocio + salesPersonFk: comercial + hasElectronicInvoice: factura electrónica + payMethodFk: método pago + provinceFk: provincia + countryFk: país + contactChannelFk: canal de contacto + clientTypeFk: tipo de cliente + clientFk: cliente + defaultAddressFk: dirección predeterminada + bankEntityFk: entidad bancaria + transferorFk: cedente + diff --git a/modules/client/back/locale/greuge/en.yml b/modules/client/back/locale/greuge/en.yml new file mode 100644 index 000000000..5c84ef4ee --- /dev/null +++ b/modules/client/back/locale/greuge/en.yml @@ -0,0 +1,11 @@ +name: greuge +columns: + id: id + description: description + amount: amount + shipped: shipped + created: created + greugeTypeFk: greuge type + clientFk: client + ticketFk: ticket + userFk: user diff --git a/modules/client/back/locale/greuge/es.yml b/modules/client/back/locale/greuge/es.yml new file mode 100644 index 000000000..ffb29eb61 --- /dev/null +++ b/modules/client/back/locale/greuge/es.yml @@ -0,0 +1,11 @@ +name: greuge +columns: + id: id + description: descripción + amount: cantidad + shipped: enviado + created: creado + greugeTypeFk: tipo de greuge + clientFk: cliente + ticketFk: ticket + userFk: usuario diff --git a/modules/client/back/locale/recovery/en.yml b/modules/client/back/locale/recovery/en.yml new file mode 100644 index 000000000..ba02df7c2 --- /dev/null +++ b/modules/client/back/locale/recovery/en.yml @@ -0,0 +1,8 @@ +name: recovery +columns: + id: id + started: started + finished: finished + amount: amount + period: period + clientFk: client diff --git a/modules/client/back/locale/recovery/es.yml b/modules/client/back/locale/recovery/es.yml new file mode 100644 index 000000000..6d84b00da --- /dev/null +++ b/modules/client/back/locale/recovery/es.yml @@ -0,0 +1,8 @@ +name: recuperación +columns: + id: id + started: comenzado + finished: terminado + amount: cantidad + period: período + clientFk: cliente diff --git a/modules/client/back/locale/tpv-transaction/en.yml b/modules/client/back/locale/tpv-transaction/en.yml new file mode 100644 index 000000000..fbe1bbadc --- /dev/null +++ b/modules/client/back/locale/tpv-transaction/en.yml @@ -0,0 +1,15 @@ +name: tpv transaction +columns: + id: id + merchantFk: merchant + clientFk: client + receiptFk: receipt + amount: amount + response: response + errorCode: error code + status: status + created: created + merchantParameters: merchant parameters + signature: signature + signatureVersion: signature version + responseError: response error diff --git a/modules/client/back/locale/tpv-transaction/es.yml b/modules/client/back/locale/tpv-transaction/es.yml new file mode 100644 index 000000000..c751b354d --- /dev/null +++ b/modules/client/back/locale/tpv-transaction/es.yml @@ -0,0 +1,15 @@ +name: transacción tpv +columns: + id: id + merchantFk: comerciante + clientFk: cliente + receiptFk: recibo + amount: cantidad + response: respuesta + errorCode: código error + status: estado + created: creado + merchantParameters: parámetros comerciante + signature: firma + signatureVersion: versión firma + responseError: error de respuesta diff --git a/modules/client/back/methods/client/getCard.js b/modules/client/back/methods/client/getCard.js index a2365ee25..414cbe058 100644 --- a/modules/client/back/methods/client/getCard.js +++ b/modules/client/back/methods/client/getCard.js @@ -76,7 +76,7 @@ module.exports = function(Self) { const date = Date.vnNew(); date.setHours(0, 0, 0, 0); - const query = `SELECT vn.clientGetDebt(?, ?) AS debt`; + const query = `SELECT vn.client_getDebt(?, ?) AS debt`; const data = await Self.rawSql(query, [id, date], myOptions); client.debt = data[0].debt; diff --git a/modules/client/back/methods/client/getDebt.js b/modules/client/back/methods/client/getDebt.js index 5f8a8c569..859746083 100644 --- a/modules/client/back/methods/client/getDebt.js +++ b/modules/client/back/methods/client/getDebt.js @@ -27,7 +27,7 @@ module.exports = Self => { const date = Date.vnNew(); date.setHours(0, 0, 0, 0); - const query = `SELECT vn.clientGetDebt(?, ?) AS debt`; + const query = `SELECT vn.client_getDebt(?, ?) AS debt`; const [debt] = await Self.rawSql(query, [clientFk, date], myOptions); return debt; diff --git a/modules/client/back/models/client-log.json b/modules/client/back/models/client-log.json index 28b767b2a..316dbe972 100644 --- a/modules/client/back/models/client-log.json +++ b/modules/client/back/models/client-log.json @@ -1,6 +1,6 @@ { "name": "ClientLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "clientLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/entry/back/locale/buy/en.yml b/modules/entry/back/locale/buy/en.yml new file mode 100644 index 000000000..2db7c7be5 --- /dev/null +++ b/modules/entry/back/locale/buy/en.yml @@ -0,0 +1,18 @@ +name: buy +columns: + id: id + quantity: quantity + buyingValue: buying value + freightValue: freight value + packing: packing + grouping: grouping + stickers: stickers + groupingMode: grouping mode + comissionValue: comission value + packageValue: package value + price2: price2 + price3: price3 + weight: weight + entryFk: entry + itemFk: item + packageFk: package diff --git a/modules/entry/back/locale/buy/es.yml b/modules/entry/back/locale/buy/es.yml new file mode 100644 index 000000000..666bf7640 --- /dev/null +++ b/modules/entry/back/locale/buy/es.yml @@ -0,0 +1,18 @@ +name: compra +columns: + id: id + quantity: cantidad + buyingValue: valor compra + freightValue: valor flete + packing: embalaje + grouping: agrupación + stickers: pegatinas + groupingMode: modo agrupación + comissionValue: valor comisión + packageValue: valor paquete + price2: precio2 + price3: precio3 + weight: peso + entryFk: entrada + itemFk: artículo + packageFk: paquete diff --git a/modules/entry/back/locale/entry-observation/en.yml b/modules/entry/back/locale/entry-observation/en.yml new file mode 100644 index 000000000..efe908c9f --- /dev/null +++ b/modules/entry/back/locale/entry-observation/en.yml @@ -0,0 +1,6 @@ +name: entry observation +columns: + id: id + description: description + entryFk: entry + observationTypeFk: observation type diff --git a/modules/entry/back/locale/entry-observation/es.yml b/modules/entry/back/locale/entry-observation/es.yml new file mode 100644 index 000000000..43799ae00 --- /dev/null +++ b/modules/entry/back/locale/entry-observation/es.yml @@ -0,0 +1,6 @@ +name: observación entrada +columns: + id: id + description: descripción + entryFk: entrada + observationTypeFk: tipo observación diff --git a/modules/entry/back/locale/entry/en.yml b/modules/entry/back/locale/entry/en.yml new file mode 100644 index 000000000..6bc2333e6 --- /dev/null +++ b/modules/entry/back/locale/entry/en.yml @@ -0,0 +1,23 @@ +name: entry +columns: + id: id + dated: dated + reference: reference + invoiceNumber: invoice number + isBooked: booked + isExcludedFromAvailable: excluded from available + notes: notes + isConfirmed: confirmed + isVirtual: virtual + isRaid: raid + commission: commission + isOrdered: price3 + created: created + observation: observation + isBlocked: blocked + loadPriority: load priority + supplierFk: supplier + travelFk: travel + companyFk: company + observationEditorFk: observation editor + currencyFk: currency diff --git a/modules/entry/back/locale/entry/es.yml b/modules/entry/back/locale/entry/es.yml new file mode 100644 index 000000000..3a0c3d9c1 --- /dev/null +++ b/modules/entry/back/locale/entry/es.yml @@ -0,0 +1,23 @@ +name: entrada +columns: + id: id + dated: fecha + reference: referencia + invoiceNumber: número factura + isBooked: reservado + isExcludedFromAvailable: excluido del disponible + notes: notas + isConfirmed: confirmado + isVirtual: virtual + isRaid: incursión + commission: comisión + isOrdered: precio3 + created: creado + observation: observación + isBlocked: bloqueado + loadPriority: prioridad de carga + supplierFk: proveedor + travelFk: envío + companyFk: empresa + observationEditorFk: editor observación + currencyFk: moneda diff --git a/modules/entry/back/models/entry-log.json b/modules/entry/back/models/entry-log.json index 7415a3efe..b4370e3bc 100644 --- a/modules/entry/back/models/entry-log.json +++ b/modules/entry/back/models/entry-log.json @@ -1,6 +1,6 @@ { "name": "EntryLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "entryLog" @@ -55,4 +55,4 @@ "scope": { "order": ["creationDate DESC", "id DESC"] } -} \ No newline at end of file +} diff --git a/modules/invoiceIn/back/models/invoice-in-log.json b/modules/invoiceIn/back/models/invoice-in-log.json index b5c5afea9..70892d0f9 100644 --- a/modules/invoiceIn/back/models/invoice-in-log.json +++ b/modules/invoiceIn/back/models/invoice-in-log.json @@ -1,6 +1,6 @@ { "name": "InvoiceInLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "invoiceInLog" @@ -58,4 +58,4 @@ "id DESC" ] } -} \ No newline at end of file +} diff --git a/modules/item/back/locale/item-barcode/en.yml b/modules/item/back/locale/item-barcode/en.yml new file mode 100644 index 000000000..c1b20855f --- /dev/null +++ b/modules/item/back/locale/item-barcode/en.yml @@ -0,0 +1,5 @@ +name: item barcode +columns: + id: id + code: code + itemFk: item diff --git a/modules/item/back/locale/item-barcode/es.yml b/modules/item/back/locale/item-barcode/es.yml new file mode 100644 index 000000000..c1557f6d8 --- /dev/null +++ b/modules/item/back/locale/item-barcode/es.yml @@ -0,0 +1,5 @@ +name: código barras artículo +columns: + id: id + code: código + itemFk: artículo diff --git a/modules/item/back/locale/item-botanical/en.yml b/modules/item/back/locale/item-botanical/en.yml new file mode 100644 index 000000000..f5a9e4c5a --- /dev/null +++ b/modules/item/back/locale/item-botanical/en.yml @@ -0,0 +1,5 @@ +name: item botanical +columns: + itemFk: item + genusFk: genus + specieFk: specie diff --git a/modules/item/back/locale/item-botanical/es.yml b/modules/item/back/locale/item-botanical/es.yml new file mode 100644 index 000000000..8e0a45491 --- /dev/null +++ b/modules/item/back/locale/item-botanical/es.yml @@ -0,0 +1,5 @@ +name: artículo botánico +columns: + itemFk: artículo + genusFk: género + specieFk: especie diff --git a/modules/item/back/locale/item-tag/en.yml b/modules/item/back/locale/item-tag/en.yml new file mode 100644 index 000000000..fee588b4c --- /dev/null +++ b/modules/item/back/locale/item-tag/en.yml @@ -0,0 +1,7 @@ +name: item tag +columns: + id: id + value: value + itemFk: item + tagFk: tag + priority: priority diff --git a/modules/item/back/locale/item-tag/es.yml b/modules/item/back/locale/item-tag/es.yml new file mode 100644 index 000000000..3e1d1a9cf --- /dev/null +++ b/modules/item/back/locale/item-tag/es.yml @@ -0,0 +1,7 @@ +name: etiqueta artículo +columns: + id: id + value: valor + itemFk: artículo + tagFk: etiqueta + priority: prioridad diff --git a/modules/item/back/locale/item-tax-country/en.yml b/modules/item/back/locale/item-tax-country/en.yml new file mode 100644 index 000000000..060ad9910 --- /dev/null +++ b/modules/item/back/locale/item-tax-country/en.yml @@ -0,0 +1,7 @@ +name: item tax country +columns: + id: id + effectived: effectived + itemFk: item + countryFk: country + taxClassFk: tax class diff --git a/modules/item/back/locale/item-tax-country/es.yml b/modules/item/back/locale/item-tax-country/es.yml new file mode 100644 index 000000000..2a0e6b5e2 --- /dev/null +++ b/modules/item/back/locale/item-tax-country/es.yml @@ -0,0 +1,7 @@ +name: impuesto país del artículo +columns: + id: id + effectived: efectivo + itemFk: artículo + countryFk: país + taxClassFk: clase impuestos diff --git a/modules/item/back/locale/item/en.yml b/modules/item/back/locale/item/en.yml new file mode 100644 index 000000000..d63c95c70 --- /dev/null +++ b/modules/item/back/locale/item/en.yml @@ -0,0 +1,47 @@ +name: item +columns: + id: id + name: name + quantity: quantity + size: size + category: category + typeFk: type + stems: stems + description: description + isActive: active + relevancy: relevancy + weightByPiece: weight by piece + stemMultiplier: stem multiplier + image: image + longName: long name + subName: sub name + tag5: tag5 + value5: value5 + tag6: tag6 + value6: value6 + tag7: tag7 + value7: value7 + tag8: tag8 + value8: value8 + tag9: tag9 + value9: value9 + tag10: tag10 + value10: value10 + itemPackingTypeFk: item packing type + hasKgPrice: has kg price + family: family + expenseFk: expense + minPrice: min price + packingOut: packing out + hasMinPrice: has min price + isFragile: fragile + isFloramondo: is floramondo + packingShelve: packing shelve + isLaid: laid + inkFk: ink + originFk: origin + producerFk: producer + intrastatFk: intrastat + genericFk: generic + itemFk: item + diff --git a/modules/item/back/locale/item/es.yml b/modules/item/back/locale/item/es.yml new file mode 100644 index 000000000..d65288954 --- /dev/null +++ b/modules/item/back/locale/item/es.yml @@ -0,0 +1,47 @@ +name: artículo +columns: + id: id + name: nombre + quantity: cantidad + size: tamaño + category: categoría + typeFk: tipo + stems: tallos + description: descripción + isActive: activo + relevancy: relevancia + weightByPiece: peso por pieza + stemMultiplier: multiplicador de tallo + image: imagen + longName: nombre largo + subName: subnombre + tag5: etiqueta5 + value5: valor5 + tag6: etiqueta6 + value6: valor6 + tag7: etiqueta7 + value7: valor7 + tag8: etiqueta8 + value8: valor8 + tag9: etiqueta9 + value9: valor9 + tag10: etiqueta10 + value10: valor10 + itemPackingTypeFk: embalaje del artículo + hasKgPrice: tiene precio kg + family: familia + expenseFk: gasto + minPrice: precio mínimo + packingOut: empaquetar + hasMinPrice: tiene precio mínimo + isFragile: frágil + isFloramondo: es floramondo + packingShelve: estantería embalaje + isLaid: puesto + inkFk: tinta + originFk: origen + producerFk: productor + intrastatFk: intrastat + genericFk: genérico + itemFk: artículo + diff --git a/modules/item/back/models/item-log.json b/modules/item/back/models/item-log.json index 5bab2af86..19c132187 100644 --- a/modules/item/back/models/item-log.json +++ b/modules/item/back/models/item-log.json @@ -1,6 +1,6 @@ { "name": "ItemLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "itemLog" @@ -12,7 +12,7 @@ "type": "number", "forceId": false }, - "originFk": { + "originFk": { "type": "number", "required": true }, @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/item/front/fixed-price-search-panel/style.scss b/modules/item/front/fixed-price-search-panel/style.scss index a63f84f3b..e386033dd 100644 --- a/modules/item/front/fixed-price-search-panel/style.scss +++ b/modules/item/front/fixed-price-search-panel/style.scss @@ -2,7 +2,7 @@ vn-fixed-price-search-panel vn-side-menu { .menu { - min-width: $right-menu-width; + min-width: $menu-width; } & > div { .input { diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index 8f7b336ab..4f9edd11c 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -238,7 +238,7 @@ module.exports = Self => { ENGINE = MEMORY SELECT DISTINCT clientFk FROM tmp.filter`); - stmt = new ParameterizedSQL('CALL clientGetDebt(?)', [args.to]); + stmt = new ParameterizedSQL('CALL client_getDebt(?)', [args.to]); stmts.push(stmt); stmts.push('DROP TEMPORARY TABLE tmp.clientGetDebt'); diff --git a/modules/route/back/locale/route/en.yml b/modules/route/back/locale/route/en.yml new file mode 100644 index 000000000..96aaddb72 --- /dev/null +++ b/modules/route/back/locale/route/en.yml @@ -0,0 +1,19 @@ +name: route +columns: + id: id + created: created + time: time + kmStart: km start + kmEnd: km end + started: started + finished: finished + gestdoc: gestdoc + cost: cost + m3: m3 + description: description + isOk: ok + workerFk: worker + vehicleFk: vehicle + agencyModeFk: agency + routeFk: route + zoneFk: zone diff --git a/modules/route/back/locale/route/es.yml b/modules/route/back/locale/route/es.yml new file mode 100644 index 000000000..d1e38ff7e --- /dev/null +++ b/modules/route/back/locale/route/es.yml @@ -0,0 +1,19 @@ +name: ruta +columns: + id: id + created: creado + time: tiempo + kmStart: km inicio + kmEnd: km fin + started: comenzado + finished: terminado + gestdoc: gestdoc + cost: costo + m3: m3 + description: descripción + isOk: ok + workerFk: trabajador + vehicleFk: vehículo + agencyModeFk: agencia + routeFk: ruta + zoneFk: zona diff --git a/modules/route/back/models/route-log.json b/modules/route/back/models/route-log.json index c8b7b5e9b..93f570593 100644 --- a/modules/route/back/models/route-log.json +++ b/modules/route/back/models/route-log.json @@ -1,6 +1,6 @@ { "name": "RouteLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "routeLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/shelving/back/models/shelving-log.json b/modules/shelving/back/models/shelving-log.json index d47058b8b..e8245f770 100644 --- a/modules/shelving/back/models/shelving-log.json +++ b/modules/shelving/back/models/shelving-log.json @@ -1,6 +1,6 @@ { "name": "ShelvingLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "shelvingLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/supplier/back/locale/supplier-account/en.yml b/modules/supplier/back/locale/supplier-account/en.yml new file mode 100644 index 000000000..bc2add833 --- /dev/null +++ b/modules/supplier/back/locale/supplier-account/en.yml @@ -0,0 +1,7 @@ +name: supplier account +columns: + id: id + iban: iban + beneficiary: beneficiary + supplierFk: supplier + bankEntityFk: bank entity diff --git a/modules/supplier/back/locale/supplier-account/es.yml b/modules/supplier/back/locale/supplier-account/es.yml new file mode 100644 index 000000000..0d751b387 --- /dev/null +++ b/modules/supplier/back/locale/supplier-account/es.yml @@ -0,0 +1,7 @@ +name: cuenta proveedor +columns: + id: id + iban: iban + beneficiary: beneficiario + supplierFk: proveedor + bankEntityFk: entidad bancaria diff --git a/modules/supplier/back/locale/supplier-contact/en.yml b/modules/supplier/back/locale/supplier-contact/en.yml new file mode 100644 index 000000000..62f923293 --- /dev/null +++ b/modules/supplier/back/locale/supplier-contact/en.yml @@ -0,0 +1,9 @@ +name: supplier contact +columns: + id: id + supplierFk: supplier + phone: phone + mobile: mobile + email: email + observation: observation + name: name diff --git a/modules/supplier/back/locale/supplier-contact/es.yml b/modules/supplier/back/locale/supplier-contact/es.yml new file mode 100644 index 000000000..d35f0bf2e --- /dev/null +++ b/modules/supplier/back/locale/supplier-contact/es.yml @@ -0,0 +1,9 @@ +name: contacto proveedor +columns: + id: id + supplierFk: proveedor + phone: teléfono + mobile: móvil + email: email + observation: observación + name: nombre diff --git a/modules/supplier/back/locale/supplier/en.yml b/modules/supplier/back/locale/supplier/en.yml new file mode 100644 index 000000000..1be941a70 --- /dev/null +++ b/modules/supplier/back/locale/supplier/en.yml @@ -0,0 +1,36 @@ +name: supplier +columns: + id: id + name: name + account: account + countryFk: country + nif: nif + phone: phone + retAccount: ret account + commission: commission + postcodeFk: postcode + isActive: active + isOfficial: official + isSerious: serious + isTrucker: trucker + note: note + street: street + city: city + provinceFk: province + postCode: postcode + payMethodFk: pay method + payDemFk: pay dem + payDay: pay day + nickname: nickname + workerFk: worker + sageTaxTypeFk: sage tax type + taxTypeSageFk: sage tax type + sageTransactionTypeFk: sage transaction type + transactionTypeSageFk: sage transaction type + sageWithholdingFk: sage with holding + withholdingSageFk: sage with holding + isPayMethodChecked: pay method checked + supplierActivityFk: supplier activity + healthRegister: health register + isVies: vies + supplierFk: supplier diff --git a/modules/supplier/back/locale/supplier/es.yml b/modules/supplier/back/locale/supplier/es.yml new file mode 100644 index 000000000..6ac8379f5 --- /dev/null +++ b/modules/supplier/back/locale/supplier/es.yml @@ -0,0 +1,36 @@ +name: proveedor +columns: + id: id + name: nombre + account: cuenta + countryFk: país + nif: nif + phone: teléfono + retAccount: cuenta ret + commission: comisión + postcodeFk: código postal + isActive: activo + isOfficial: oficial + isSerious: serio + isTrucker: camionero + note: nota + street: calle + city: ciudad + provinceFk: provincia + postCode: código postal + payMethodFk: método pago + payDemFk: pagar dem + payDay: día pago + nickname: apodo + workerFk: trabajador + sageTaxTypeFk: tipo de impuesto sage + taxTypeSageFk: tipo de impuesto sage + sageTransactionTypeFk: tipo de transacción sage + transactionTypeSageFk: tipo de transacción sage + sageWithholdingFk: sage con tenencia + withholdingSageFk: sage con tenencia + isPayMethodChecked: método pago verificado + supplierActivityFk: actividad del proveedor + healthRegister: registro sanitario + isVies: vies + supplierFk: proveedor diff --git a/modules/supplier/back/models/supplier-log.json b/modules/supplier/back/models/supplier-log.json index b88266988..86fa2e54a 100644 --- a/modules/supplier/back/models/supplier-log.json +++ b/modules/supplier/back/models/supplier-log.json @@ -1,6 +1,6 @@ { "name": "SupplierLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "supplierLog" @@ -55,4 +55,4 @@ "scope": { "order": ["creationDate DESC", "id DESC"] } -} \ No newline at end of file +} diff --git a/modules/supplier/front/fiscal-data/index.html b/modules/supplier/front/fiscal-data/index.html index f84a1890e..3a0aefbf2 100644 --- a/modules/supplier/front/fiscal-data/index.html +++ b/modules/supplier/front/fiscal-data/index.html @@ -42,6 +42,7 @@ vn-two vn-focus label="Social name" + name="socialName" ng-model="$ctrl.supplier.name" info="Only letters, numbers and spaces can be used" required="true" @@ -50,6 +51,7 @@ - - - @@ -96,12 +105,14 @@ - - - - - diff --git a/modules/ticket/back/locale/expedition/en.yml b/modules/ticket/back/locale/expedition/en.yml new file mode 100644 index 000000000..1834984ea --- /dev/null +++ b/modules/ticket/back/locale/expedition/en.yml @@ -0,0 +1,10 @@ +name: expedition +columns: + id: id + freightItemFk: freight item + created: created + counter: counter + ticketFk: ticket + agencyModeFk: agency + workerFk: worker + packagingFk: packaging diff --git a/modules/ticket/back/locale/expedition/es.yml b/modules/ticket/back/locale/expedition/es.yml new file mode 100644 index 000000000..32f72b943 --- /dev/null +++ b/modules/ticket/back/locale/expedition/es.yml @@ -0,0 +1,10 @@ +name: expedición +columns: + id: id + freightItemFk: artículo de carga + created: creado + counter: contador + ticketFk: ticket + agencyModeFk: agencia + workerFk: trabajador + packagingFk: embalaje diff --git a/modules/ticket/back/locale/sale/en.yml b/modules/ticket/back/locale/sale/en.yml index ae8f67d5e..f844bf0c5 100644 --- a/modules/ticket/back/locale/sale/en.yml +++ b/modules/ticket/back/locale/sale/en.yml @@ -1,11 +1,13 @@ -concept: concept -quantity: quantity -price: price -discount: discount -reserved: reserved -isPicked: is picked -created: created -originalQuantity: original quantity -itemFk: item -ticketFk: ticket -saleFk: sale +name: sale +columns: + concept: concept + quantity: quantity + price: price + discount: discount + reserved: reserved + isPicked: is picked + created: created + originalQuantity: original quantity + itemFk: item + ticketFk: ticket + saleFk: sale diff --git a/modules/ticket/back/locale/sale/es.yml b/modules/ticket/back/locale/sale/es.yml index ff8cc5466..8196a089c 100644 --- a/modules/ticket/back/locale/sale/es.yml +++ b/modules/ticket/back/locale/sale/es.yml @@ -1,11 +1,13 @@ -concept: concepto -quantity: cantidad -price: precio -discount: descuento -reserved: reservado -isPicked: esta seleccionado -created: creado -originalQuantity: cantidad original -itemFk: artículo -ticketFk: ticket -saleFk: línea +name: línea +columns: + concept: concepto + quantity: cantidad + price: precio + discount: descuento + reserved: reservado + isPicked: esta seleccionado + created: creado + originalQuantity: cantidad original + itemFk: artículo + ticketFk: ticket + saleFk: línea diff --git a/modules/ticket/back/locale/ticket-dms/en.yml b/modules/ticket/back/locale/ticket-dms/en.yml new file mode 100644 index 000000000..771e4daf3 --- /dev/null +++ b/modules/ticket/back/locale/ticket-dms/en.yml @@ -0,0 +1,4 @@ +name: ticket dms +columns: + dmsFk: dms + ticketFk: ticket diff --git a/modules/ticket/back/locale/ticket-dms/es.yml b/modules/ticket/back/locale/ticket-dms/es.yml new file mode 100644 index 000000000..360268428 --- /dev/null +++ b/modules/ticket/back/locale/ticket-dms/es.yml @@ -0,0 +1,4 @@ +name: documento ticket +columns: + dmsFk: dms + ticketFk: ticket diff --git a/modules/ticket/back/locale/ticket-observation/en.yml b/modules/ticket/back/locale/ticket-observation/en.yml new file mode 100644 index 000000000..40bd567bf --- /dev/null +++ b/modules/ticket/back/locale/ticket-observation/en.yml @@ -0,0 +1,6 @@ +name: ticket observation +columns: + id: id + description: description + ticketFk: ticket + observationTypeFk: observation type diff --git a/modules/ticket/back/locale/ticket-observation/es.yml b/modules/ticket/back/locale/ticket-observation/es.yml new file mode 100644 index 000000000..155eb58e2 --- /dev/null +++ b/modules/ticket/back/locale/ticket-observation/es.yml @@ -0,0 +1,6 @@ +name: observación ticket +columns: + id: id + description: descripción + ticketFk: ticket + observationTypeFk: tipo observación diff --git a/modules/ticket/back/locale/ticket-packaging/en.yml b/modules/ticket/back/locale/ticket-packaging/en.yml new file mode 100644 index 000000000..4dd018524 --- /dev/null +++ b/modules/ticket/back/locale/ticket-packaging/en.yml @@ -0,0 +1,8 @@ +name: ticket packaging +columns: + id: id + quantity: quantity + created: created + pvp: pvp + ticketFk: ticket + packagingFk: packaging diff --git a/modules/ticket/back/locale/ticket-packaging/es.yml b/modules/ticket/back/locale/ticket-packaging/es.yml new file mode 100644 index 000000000..a31a8c097 --- /dev/null +++ b/modules/ticket/back/locale/ticket-packaging/es.yml @@ -0,0 +1,8 @@ +name: embalaje ticket +columns: + id: id + quantity: cantidad + created: creado + pvp: pvp + ticketFk: ticket + packagingFk: embalaje diff --git a/modules/ticket/back/locale/ticket-refund/en.yml b/modules/ticket/back/locale/ticket-refund/en.yml new file mode 100644 index 000000000..961b5c8c3 --- /dev/null +++ b/modules/ticket/back/locale/ticket-refund/en.yml @@ -0,0 +1,5 @@ +name: ticket refund +columns: + id: id + refundTicketFk: refund ticket + originalTicketFk: original ticket diff --git a/modules/ticket/back/locale/ticket-refund/es.yml b/modules/ticket/back/locale/ticket-refund/es.yml new file mode 100644 index 000000000..8826ef949 --- /dev/null +++ b/modules/ticket/back/locale/ticket-refund/es.yml @@ -0,0 +1,5 @@ +name: ticket abono +columns: + id: id + refundTicketFk: ticket abono + originalTicketFk: ticket original diff --git a/modules/ticket/back/locale/ticket-request/en.yml b/modules/ticket/back/locale/ticket-request/en.yml new file mode 100644 index 000000000..498a933ac --- /dev/null +++ b/modules/ticket/back/locale/ticket-request/en.yml @@ -0,0 +1,15 @@ +name: ticket request +columns: + id: id + description: description + created: created + quantity: quantity + price: price + isOk: ok + response: response + saleFk: sale + ticketFk: ticket + attenderFk: attender + requesterFk: requester + itemFk: item + diff --git a/modules/ticket/back/locale/ticket-request/es.yml b/modules/ticket/back/locale/ticket-request/es.yml new file mode 100644 index 000000000..b2871e737 --- /dev/null +++ b/modules/ticket/back/locale/ticket-request/es.yml @@ -0,0 +1,15 @@ +name: peticiones ticket +columns: + id: id + description: descripción + created: creado + quantity: cantidad + price: precio + isOk: ok + response: respuesta + saleFk: línea + ticketFk: ticket + attenderFk: asistente + requesterFk: solicitante + itemFk: artículo + diff --git a/modules/ticket/back/locale/ticket-service/en.yml b/modules/ticket/back/locale/ticket-service/en.yml new file mode 100644 index 000000000..cf4e6f43f --- /dev/null +++ b/modules/ticket/back/locale/ticket-service/en.yml @@ -0,0 +1,10 @@ +name: ticket service +columns: + id: id + ticketFk: ticket + description: description + quantity: quantity + price: price + taxClassFk: tax class + ticketServiceTypeFk: ticket service type + diff --git a/modules/ticket/back/locale/ticket-service/es.yml b/modules/ticket/back/locale/ticket-service/es.yml new file mode 100644 index 000000000..ee07c13d3 --- /dev/null +++ b/modules/ticket/back/locale/ticket-service/es.yml @@ -0,0 +1,10 @@ +name: servicios ticket +columns: + id: id + ticketFk: ticket + description: descripción + quantity: cantidad + price: precio + taxClassFk: tipo impuestos + ticketServiceTypeFk: tipo servicio ticket + diff --git a/modules/ticket/back/locale/ticket-tracking/en.yml b/modules/ticket/back/locale/ticket-tracking/en.yml new file mode 100644 index 000000000..15505a763 --- /dev/null +++ b/modules/ticket/back/locale/ticket-tracking/en.yml @@ -0,0 +1,7 @@ +name: ticket tracking +columns: + id: id + created: created + ticketFk: ticket + stateFk: state + workerFk: worker diff --git a/modules/ticket/back/locale/ticket-tracking/es.yml b/modules/ticket/back/locale/ticket-tracking/es.yml new file mode 100644 index 000000000..3459ab367 --- /dev/null +++ b/modules/ticket/back/locale/ticket-tracking/es.yml @@ -0,0 +1,7 @@ +name: seguimiento ticket +columns: + id: id + created: creado + ticketFk: ticket + stateFk: estado + workerFk: trabajador diff --git a/modules/ticket/back/locale/ticket-weekly/en.yml b/modules/ticket/back/locale/ticket-weekly/en.yml new file mode 100644 index 000000000..af1c94dc9 --- /dev/null +++ b/modules/ticket/back/locale/ticket-weekly/en.yml @@ -0,0 +1,5 @@ +name: ticket weekly +columns: + ticketFk: ticket + weekDay: week day + agencyModeFk: agency diff --git a/modules/ticket/back/locale/ticket-weekly/es.yml b/modules/ticket/back/locale/ticket-weekly/es.yml new file mode 100644 index 000000000..597d9d46a --- /dev/null +++ b/modules/ticket/back/locale/ticket-weekly/es.yml @@ -0,0 +1,5 @@ +name: ticket semanal +columns: + ticketFk: ticket + weekDay: día semana + agencyModeFk: agencia diff --git a/modules/ticket/back/locale/ticket/en.yml b/modules/ticket/back/locale/ticket/en.yml index c4ad84232..2481c42f8 100644 --- a/modules/ticket/back/locale/ticket/en.yml +++ b/modules/ticket/back/locale/ticket/en.yml @@ -1,23 +1,25 @@ -shipped: shipped -landed: landed -nickname: nickname -location: location -solution: solution -packages: packages -updated: updated -isDeleted: is deleted -priority: priority -zoneFk: zone -zonePrice: zone price -zoneBonus: zone bonus -totalWithVat: total with vat -totalWithoutVat: total without vat -clientFk: client -warehouseFk: warehouse -refFk: reference -addressFk: address -routeFk: route -companyFk: company -agencyModeFk: agency -ticketFk: ticket -mergedTicket: merged ticket +name: ticket +columns: + shipped: shipped + landed: landed + nickname: nickname + location: location + solution: solution + packages: packages + updated: updated + isDeleted: is deleted + priority: priority + zoneFk: zone + zonePrice: zone price + zoneBonus: zone bonus + totalWithVat: total with vat + totalWithoutVat: total without vat + clientFk: client + warehouseFk: warehouse + refFk: reference + addressFk: address + routeFk: route + companyFk: company + agencyModeFk: agency + ticketFk: ticket + mergedTicket: merged ticket diff --git a/modules/ticket/back/locale/ticket/es.yml b/modules/ticket/back/locale/ticket/es.yml index 15b5a39bf..558378612 100644 --- a/modules/ticket/back/locale/ticket/es.yml +++ b/modules/ticket/back/locale/ticket/es.yml @@ -1,25 +1,27 @@ -shipped: fecha salida -landed: fecha entrega -nickname: alias -location: ubicación -solution: solución -packages: embalajes -updated: fecha última actualización -isDeleted: esta eliminado -priority: prioridad -zoneFk: zona -zonePrice: precio zona -zoneBonus: bonus zona -totalWithVat: total con IVA -totalWithoutVat: total sin IVA -clientFk: cliente -warehouseFk: almacén -refFk: referencia -addressFk: dirección -routeFk: ruta -companyFk: empresa -agencyModeFk: agencia -ticketFk: ticket -mergedTicket: ticket fusionado -withWarningAccept: aviso negativos -isWithoutNegatives: sin negativos +name: ticket +columns: + shipped: salida + landed: entrega + nickname: alias + location: ubicación + solution: solución + packages: embalajes + updated: última actualización + isDeleted: eliminado + priority: prioridad + zoneFk: zona + zonePrice: precio zona + zoneBonus: bonus zona + totalWithVat: total con IVA + totalWithoutVat: total sin IVA + clientFk: cliente + warehouseFk: almacén + refFk: referencia + addressFk: dirección + routeFk: ruta + companyFk: empresa + agencyModeFk: agencia + ticketFk: ticket + mergedTicket: ticket fusionado + withWarningAccept: aviso negativos + isWithoutNegatives: sin negativos diff --git a/modules/ticket/back/models/ticket-log.json b/modules/ticket/back/models/ticket-log.json index 516ea506c..df04348da 100644 --- a/modules/ticket/back/models/ticket-log.json +++ b/modules/ticket/back/models/ticket-log.json @@ -1,6 +1,6 @@ { "name": "TicketLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "ticketLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/travel/back/locale/travel-thermograph/en.yml b/modules/travel/back/locale/travel-thermograph/en.yml new file mode 100644 index 000000000..92acee896 --- /dev/null +++ b/modules/travel/back/locale/travel-thermograph/en.yml @@ -0,0 +1,10 @@ +name: travel thermograph +columns: + id: id + created: created + temperatureFk: temperature + result: result + warehouseFk: warehouse + travelFk: travel + dmsFk: dms + thermographFk: thermograph diff --git a/modules/travel/back/locale/travel-thermograph/es.yml b/modules/travel/back/locale/travel-thermograph/es.yml new file mode 100644 index 000000000..0d08863b6 --- /dev/null +++ b/modules/travel/back/locale/travel-thermograph/es.yml @@ -0,0 +1,10 @@ +name: travel thermograph +columns: + id: id + created: creado + temperatureFk: temperatura + result: resultado + warehouseFk: almacén + travelFk: envío + dmsFk: dms + thermographFk: termógrafo diff --git a/modules/travel/back/locale/travel/en.yml b/modules/travel/back/locale/travel/en.yml new file mode 100644 index 000000000..f3bab57d1 --- /dev/null +++ b/modules/travel/back/locale/travel/en.yml @@ -0,0 +1,15 @@ +name: travel +columns: + id: id + shipped: shipped + landed: landed + isDelivered: delivered + isReceived: received + ref: ref + totalEntries: total entries + m3: m3 + kg: kg + cargoSupplierFk: cargo supplier + agencyModeFk: agency + warehouseInFk: warehouse in + warehouseOutFk: warehouse out diff --git a/modules/travel/back/locale/travel/es.yml b/modules/travel/back/locale/travel/es.yml new file mode 100644 index 000000000..ac86c003d --- /dev/null +++ b/modules/travel/back/locale/travel/es.yml @@ -0,0 +1,15 @@ +name: envío +columns: + id: id + shipped: enviado + landed: entregado + isDelivered: está entregado + isReceived: está recibido + ref: referencia + totalEntries: entradas totales + m3: m3 + kg: kg + cargoSupplierFk: proveedor carga + agencyModeFk: agencia + warehouseInFk: almacén entrega + warehouseOutFk: almacén salida diff --git a/modules/travel/back/models/travel-log.json b/modules/travel/back/models/travel-log.json index a72d9e0a5..e781c2948 100644 --- a/modules/travel/back/models/travel-log.json +++ b/modules/travel/back/models/travel-log.json @@ -1,6 +1,6 @@ { "name": "TravelLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "travelLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/travel/front/search-panel/style.scss b/modules/travel/front/search-panel/style.scss index 94fe7b239..0da52408a 100644 --- a/modules/travel/front/search-panel/style.scss +++ b/modules/travel/front/search-panel/style.scss @@ -2,7 +2,7 @@ vn-travel-search-panel vn-side-menu { .menu { - min-width: $right-menu-width; + min-width: $menu-width; } & > div { .input { diff --git a/modules/worker/back/locale/calendar/en.yml b/modules/worker/back/locale/calendar/en.yml new file mode 100644 index 000000000..b475768de --- /dev/null +++ b/modules/worker/back/locale/calendar/en.yml @@ -0,0 +1,6 @@ +name: calendar +columns: + id: id + businessFk: business + dated: dated + dayOffTypeFk: day off type diff --git a/modules/worker/back/locale/calendar/es.yml b/modules/worker/back/locale/calendar/es.yml new file mode 100644 index 000000000..106c5c371 --- /dev/null +++ b/modules/worker/back/locale/calendar/es.yml @@ -0,0 +1,6 @@ +name: calendario +columns: + id: id + businessFk: negocio + dated: fecha + dayOffTypeFk: tipo de día libre diff --git a/modules/worker/back/locale/worker-dms/en.yml b/modules/worker/back/locale/worker-dms/en.yml new file mode 100644 index 000000000..f870adaf0 --- /dev/null +++ b/modules/worker/back/locale/worker-dms/en.yml @@ -0,0 +1,6 @@ +name: worker dms +columns: + id: id + dmsFk: dms + workerFk: worker + isReadableByWorker: readable by worker diff --git a/modules/worker/back/locale/worker-dms/es.yml b/modules/worker/back/locale/worker-dms/es.yml new file mode 100644 index 000000000..c3bdea5af --- /dev/null +++ b/modules/worker/back/locale/worker-dms/es.yml @@ -0,0 +1,6 @@ +name: documento trabajador +columns: + id: id + dmsFk: dms + workerFk: trabajador + isReadableByWorker: legible por trabajador diff --git a/modules/worker/back/locale/worker-time-control-mail/en.yml b/modules/worker/back/locale/worker-time-control-mail/en.yml new file mode 100644 index 000000000..821a3a3c9 --- /dev/null +++ b/modules/worker/back/locale/worker-time-control-mail/en.yml @@ -0,0 +1,10 @@ +name: worker time control mail +columns: + id: id + workerFk: worker + year: year + week: week + state: state + updated: updated + reason: reason + diff --git a/modules/worker/back/locale/worker-time-control-mail/es.yml b/modules/worker/back/locale/worker-time-control-mail/es.yml new file mode 100644 index 000000000..159fcddf5 --- /dev/null +++ b/modules/worker/back/locale/worker-time-control-mail/es.yml @@ -0,0 +1,10 @@ +name: correo de control de tiempo del trabajador +columns: + id: id + workerFk: trabajador + year: año + week: semana + state: estado + updated: actualizado + reason: razón + diff --git a/modules/worker/back/locale/worker/en.yml b/modules/worker/back/locale/worker/en.yml new file mode 100644 index 000000000..f46aed678 --- /dev/null +++ b/modules/worker/back/locale/worker/en.yml @@ -0,0 +1,20 @@ +name: worker +columns: + id: id + firstName: first name + lastName: last name + phone: phone + userFk: user + bossFk: boss + maritalStatus: marital status + originCountryFk: origin country + educationLevelFk: education level + SSN: SSN + labelerFk: labeler + mobileExtension: mobile extension + code: code + locker: locker + workerFk: worker + sectorFk: sector + + diff --git a/modules/worker/back/locale/worker/es.yml b/modules/worker/back/locale/worker/es.yml new file mode 100644 index 000000000..182bc5f53 --- /dev/null +++ b/modules/worker/back/locale/worker/es.yml @@ -0,0 +1,20 @@ +name: trabajador +columns: + id: id + firstName: nombre + lastName: apellido + phone: teléfono + userFk: usuario + bossFk: jefe + maritalStatus: estado civil + originCountryFk: país origen + educationLevelFk: nivel educativo + SSN: SSN + labelerFk: etiquetadora + mobileExtension: extensión móvil + code: código + locker: casillero + workerFk: trabajador + sectorFk: sector + + diff --git a/modules/worker/back/models/device-production-log.json b/modules/worker/back/models/device-production-log.json index c935398fc..71c54a9c1 100644 --- a/modules/worker/back/models/device-production-log.json +++ b/modules/worker/back/models/device-production-log.json @@ -1,6 +1,6 @@ { "name": "DeviceProductionLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "deviceProductionLog" diff --git a/modules/worker/back/models/worker-log.json b/modules/worker/back/models/worker-log.json index 3cd5f9010..6eb8b75be 100644 --- a/modules/worker/back/models/worker-log.json +++ b/modules/worker/back/models/worker-log.json @@ -1,6 +1,6 @@ { "name": "WorkerLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "workerLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"] diff --git a/modules/zone/back/locale/zone-event/en.yml b/modules/zone/back/locale/zone-event/en.yml new file mode 100644 index 000000000..2d6ef39ab --- /dev/null +++ b/modules/zone/back/locale/zone-event/en.yml @@ -0,0 +1,14 @@ +name: zone event +columns: + id: id + zoneFk: zone + type: type + dated: dated + started: started + ended: ended + weekDays: week days + hour: hour + travelingDays: traveling days + price: price + bonus: bonus + m3Max: max m3 diff --git a/modules/zone/back/locale/zone-event/es.yml b/modules/zone/back/locale/zone-event/es.yml new file mode 100644 index 000000000..9bc8db9fe --- /dev/null +++ b/modules/zone/back/locale/zone-event/es.yml @@ -0,0 +1,14 @@ +name: evento zona +columns: + id: id + zoneFk: zona + type: tipo + dated: fecha + started: comenzado + ended: terminado + weekDays: días semana + hour: hora + travelingDays: días de viaje + price: precio + bonus: bono + m3Max: máx. m3 diff --git a/modules/zone/back/locale/zone-exclusion/en.yml b/modules/zone/back/locale/zone-exclusion/en.yml new file mode 100644 index 000000000..4389d8b93 --- /dev/null +++ b/modules/zone/back/locale/zone-exclusion/en.yml @@ -0,0 +1,5 @@ +name: zone exclusion +columns: + id: id + dated: dated + zoneFk: zone diff --git a/modules/zone/back/locale/zone-exclusion/es.yml b/modules/zone/back/locale/zone-exclusion/es.yml new file mode 100644 index 000000000..4e59cba46 --- /dev/null +++ b/modules/zone/back/locale/zone-exclusion/es.yml @@ -0,0 +1,5 @@ +name: zone exclusion +columns: + id: id + dated: fecha + zoneFk: zona diff --git a/modules/zone/back/locale/zone-included/en.yml b/modules/zone/back/locale/zone-included/en.yml new file mode 100644 index 000000000..0e44989e9 --- /dev/null +++ b/modules/zone/back/locale/zone-included/en.yml @@ -0,0 +1,5 @@ +name: zone included +columns: + id: id + dated: dated + zoneFk: zone diff --git a/modules/zone/back/locale/zone-included/es.yml b/modules/zone/back/locale/zone-included/es.yml new file mode 100644 index 000000000..30a89373a --- /dev/null +++ b/modules/zone/back/locale/zone-included/es.yml @@ -0,0 +1,5 @@ +name: zona incluida +columns: + id: id + dated: fecha + zoneFk: zona diff --git a/modules/zone/back/locale/zone-warehouse/en.yml b/modules/zone/back/locale/zone-warehouse/en.yml new file mode 100644 index 000000000..b9c4f7609 --- /dev/null +++ b/modules/zone/back/locale/zone-warehouse/en.yml @@ -0,0 +1,5 @@ +name: zone warehouse +columns: + id: id + warehouseFk: warehouse + zoneFk: zone diff --git a/modules/zone/back/locale/zone-warehouse/es.yml b/modules/zone/back/locale/zone-warehouse/es.yml new file mode 100644 index 000000000..ec8dec2dd --- /dev/null +++ b/modules/zone/back/locale/zone-warehouse/es.yml @@ -0,0 +1,5 @@ +name: almacén zona +columns: + id: id + warehouseFk: almacén + zoneFk: zona diff --git a/modules/zone/back/locale/zone/en.yml b/modules/zone/back/locale/zone/en.yml new file mode 100644 index 000000000..649631faa --- /dev/null +++ b/modules/zone/back/locale/zone/en.yml @@ -0,0 +1,14 @@ +name: zone +columns: + id: id + name: name + hour: hour + travelingDays: traveling days + price: price + bonus: bonus + isVolumetric: volumetric + inflation: inflation + m3Max: max m3 + itemMaxSize: item max size + agencyModeFk: agency + zoneFk: zone diff --git a/modules/zone/back/locale/zone/es.yml b/modules/zone/back/locale/zone/es.yml new file mode 100644 index 000000000..3534c2e12 --- /dev/null +++ b/modules/zone/back/locale/zone/es.yml @@ -0,0 +1,14 @@ +name: zona +columns: + id: id + name: nombre + hour: hora + travelingDays: días viaje + price: precio + bonus: bono + isVolumetric: volumétrico + inflation: inflación + m3Max: máx. m3 + itemMaxSize: tamaño máximo artículo + agencyModeFk: agencia + zoneFk: zona diff --git a/modules/zone/back/models/zone-log.json b/modules/zone/back/models/zone-log.json index e84153467..72dd305b2 100644 --- a/modules/zone/back/models/zone-log.json +++ b/modules/zone/back/models/zone-log.json @@ -1,6 +1,6 @@ { "name": "ZoneLog", - "base": "VnModel", + "base": "Log", "options": { "mysql": { "table": "zoneLog" @@ -50,7 +50,7 @@ "type": "belongsTo", "model": "VnUser", "foreignKey": "userFk" - } + } }, "scope": { "order": ["creationDate DESC", "id DESC"]