diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 284945241..2f1c5d893 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -366,7 +366,7 @@ export default { ticketsIndex: { openAdvancedSearchButton: 'vn-searchbar .append vn-icon[icon="arrow_drop_down"]', advancedSearchInvoiceOut: 'vn-ticket-search-panel vn-textfield[ng-model="filter.refFk"]', - newTicketButton: 'vn-ticket-index > a', + newTicketButton: 'vn-ticket-index a', searchResult: 'vn-ticket-index vn-card > vn-table > div > vn-tbody > a.vn-tr', searchWeeklyResult: 'vn-ticket-weekly-index vn-table vn-tbody > vn-tr', searchResultDate: 'vn-ticket-index vn-table vn-tbody > a:nth-child(1) > vn-td:nth-child(5)', @@ -525,6 +525,7 @@ export default { }, ticketLog: { + firstTD: 'vn-ticket-log vn-table vn-td:nth-child(1)', logButton: 'vn-left-menu a[ui-sref="ticket.card.log"]', changedBy: 'vn-ticket-log > vn-log vn-tr:nth-child(1) > vn-td:nth-child(2) > span', actionTaken: 'vn-ticket-log > vn-log vn-td:nth-child(1) > div > div:nth-child(3) > span.value', diff --git a/e2e/paths/02-client/14_balance.spec.js b/e2e/paths/02-client/14_balance.spec.js index f45937deb..0d020831e 100644 --- a/e2e/paths/02-client/14_balance.spec.js +++ b/e2e/paths/02-client/14_balance.spec.js @@ -35,7 +35,7 @@ describe('Client balance path', () => { await page.clearInput(selectors.globalItems.userConfigThirdAutocomplete); let result = await page.waitForLastSnackbar(); - expect(result).toEqual('Data saved!'); + expect(result).toContain('Data saved!'); }); it('should click the new payment button', async() => { @@ -63,7 +63,6 @@ describe('Client balance path', () => { let firstBalanceLine = await page .waitToGetProperty(selectors.clientBalance.firstBalanceLine, 'innerText'); - expect(company).toEqual('VNL'); expect(firstBalanceLine).toContain('0.00'); }); diff --git a/e2e/paths/05-ticket/17_log.spec.js b/e2e/paths/05-ticket/17_log.spec.js new file mode 100644 index 000000000..2008d022e --- /dev/null +++ b/e2e/paths/05-ticket/17_log.spec.js @@ -0,0 +1,65 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Ticket log path', () => { + let browser; + let page; + const ticketId = '5'; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should navigate to the target ticket notes section', async() => { + await page.loginAndModule('employee', 'ticket'); + await page.accessToSearchResult(ticketId); + await page.accessToSection('ticket.card.observation'); + let url = await page.expectURL('/observation'); + + expect(url).toBe(true); + }); + + it('should create a new note for the test', async() => { + await page.waitToClick(selectors.ticketNotes.addNoteButton); + await page.autocompleteSearch(selectors.ticketNotes.firstNoteType, 'observation one'); + await page.write(selectors.ticketNotes.firstDescription, 'description'); + await page.waitToClick(selectors.ticketNotes.submitNotesButton); + const result = await page.waitForLastSnackbar(); + + expect(result).toEqual('Data saved!'); + }); + + it('should navigate to the log section', async() => { + await page.accessToSection('ticket.card.log'); + let url = await page.expectURL('/log'); + + expect(url).toBe(true); + }); + + it('should set the viewport width to 1920 to see the table full width', async() => { + await page.setViewport({ + width: 1920, + height: 0, + }); + + const result = await page.waitToGetProperty(selectors.ticketLog.firstTD, 'innerText'); + + expect(result.length).not.toBeGreaterThan('20'); + }); + + it('should set the viewport width to 800 to see the table shrink and move data to the 1st column', async() => { + await page.setViewport({ + width: 800, + height: 0, + }); + + const result = await page.waitToGetProperty(selectors.ticketLog.firstTD, 'innerText'); + + expect(result.length).toBeGreaterThan('20'); + }); +}); diff --git a/front/core/components/drop-down/index.html b/front/core/components/drop-down/index.html index 5366d9d90..52ceeeaae 100644 --- a/front/core/components/drop-down/index.html +++ b/front/core/components/drop-down/index.html @@ -3,7 +3,8 @@ ng-model="$ctrl.search" class="dense search" ng-blur="$ctrl.onFocusOut()" - placeholder="{{::'Search' | translate}}"> + placeholder="{{::'Search' | translate}}" + autocomplete="off">
diff --git a/front/core/components/field/index.js b/front/core/components/field/index.js index 481ccce91..62adf3233 100644 --- a/front/core/components/field/index.js +++ b/front/core/components/field/index.js @@ -132,6 +132,17 @@ export default class Field extends FormInput { return this.error || this.inputError || null; } + get autocomplete() { + return this._autocomplete; + } + + set autocomplete(value) { + this._autocomplete = value; + + if (value === 'off') + this.input.setAttribute('autocomplete', 'off'); + } + refreshHint() { let error = this.shownError; let hint = error || this.hint; @@ -206,6 +217,7 @@ ngModule.vnComponent('vnField', { controller: Field, bindings: { type: '@?', + autocomplete: '@?', placeholder: '@?', value: '=?', info: '@?', diff --git a/front/core/components/input-file/index.html b/front/core/components/input-file/index.html index be4c15248..ad71b744d 100644 --- a/front/core/components/input-file/index.html +++ b/front/core/components/input-file/index.html @@ -30,7 +30,7 @@ ng-click="$ctrl.onClear($event)"> diff --git a/front/core/styles/icons/salixfont.css b/front/core/styles/icons/salixfont.css index 505fb8520..8805815e8 100644 --- a/front/core/styles/icons/salixfont.css +++ b/front/core/styles/icons/salixfont.css @@ -23,6 +23,21 @@ -moz-osx-font-smoothing: grayscale; } +.icon-zone:before { + content: "\e95d"; +} +.icon-inventory:before { + content: "\e95e"; +} +.icon-wiki:before { + content: "\e968"; +} +.icon-attach:before { + content: "\e96c"; +} +.icon-zone2:before { + content: "\e96d"; +} .icon-net:before { content: "\e95b"; } @@ -301,4 +316,4 @@ } .icon-worker:before { content: "\e943"; -} +} \ No newline at end of file diff --git a/front/core/styles/icons/salixfont.svg b/front/core/styles/icons/salixfont.svg index 7cd1af528..9ca57000d 100644 --- a/front/core/styles/icons/salixfont.svg +++ b/front/core/styles/icons/salixfont.svg @@ -100,4 +100,9 @@ + + + + + \ No newline at end of file diff --git a/front/core/styles/icons/salixfont.ttf b/front/core/styles/icons/salixfont.ttf index 08a36a48b..ab5de35ff 100644 Binary files a/front/core/styles/icons/salixfont.ttf and b/front/core/styles/icons/salixfont.ttf differ diff --git a/front/core/styles/icons/salixfont.woff b/front/core/styles/icons/salixfont.woff index 325a1bc2d..d9ade1e31 100644 Binary files a/front/core/styles/icons/salixfont.woff and b/front/core/styles/icons/salixfont.woff differ diff --git a/modules/claim/front/search-panel/index.html b/modules/claim/front/search-panel/index.html index 93d3db455..f50af1e5a 100644 --- a/modules/claim/front/search-panel/index.html +++ b/modules/claim/front/search-panel/index.html @@ -10,24 +10,17 @@ + + - - - - - - - - - - - - + + { JOIN vn.currency cu ON cu.id = e.currencyFk` ); - stmt.merge(conn.makeSuffix(filter)); let itemsIndex = stmts.push(stmt) - 1; diff --git a/modules/entry/back/models/entry.json b/modules/entry/back/models/entry.json index 6d38dbba1..d3f149680 100644 --- a/modules/entry/back/models/entry.json +++ b/modules/entry/back/models/entry.json @@ -11,7 +11,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -19,46 +19,49 @@ "type": "date" }, "ref": { - "type": "String" + "type": "string" }, "isBooked": { - "type": "Boolean" + "type": "boolean" }, "isInventory": { - "type": "Boolean" + "type": "boolean" }, "notes": { - "type": "Number" + "type": "number" }, "isConfirmed": { - "type": "Boolean" + "type": "boolean" }, "isVirtual": { - "type": "Boolean", + "type": "boolean", "mysql": { "columnName": "isRaid" } }, + "isRaid": { + "type": "boolean" + }, "commission": { - "type": "Number" + "type": "number" }, "isOrdered": { - "type": "Boolean" + "type": "boolean" }, "created": { "type": "date" }, "observation": { - "type": "String", + "type": "string", "mysql": { "columnName": "evaNotes" } }, "isBlocked": { - "type": "Boolean" + "type": "boolean" }, "loadPriority": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/entry/front/buy/index.html b/modules/entry/front/buy/index.html new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/modules/entry/front/buy/index.html @@ -0,0 +1 @@ + diff --git a/modules/entry/front/buy/index.js b/modules/entry/front/buy/index.js new file mode 100644 index 000000000..bc8788239 --- /dev/null +++ b/modules/entry/front/buy/index.js @@ -0,0 +1,18 @@ +import ngModule from '../module'; +import Component from 'core/lib/component'; + +class Controller extends Component { + constructor($element, $) { + super($element, $); + } +} + +Controller.$inject = ['$element', '$scope']; + +ngModule.component('vnEntryBuy', { + template: require('./index.html'), + controller: Controller, + bindings: { + entry: '<' + } +}); diff --git a/modules/entry/front/buy/locale/es.yml b/modules/entry/front/buy/locale/es.yml new file mode 100644 index 000000000..8f2be1e44 --- /dev/null +++ b/modules/entry/front/buy/locale/es.yml @@ -0,0 +1 @@ +Buy: Lineas de entrada \ No newline at end of file diff --git a/modules/entry/front/descriptor/index.html b/modules/entry/front/descriptor/index.html index cd4057c43..917c5d721 100644 --- a/modules/entry/front/descriptor/index.html +++ b/modules/entry/front/descriptor/index.html @@ -35,6 +35,18 @@ value="{{$ctrl.entry.travel.warehouseOut.name}}">
+
+ + + + +
diff --git a/modules/entry/front/descriptor/locale/es.yml b/modules/entry/front/descriptor/locale/es.yml index 5e1eb25c2..47fabb8f0 100644 --- a/modules/entry/front/descriptor/locale/es.yml +++ b/modules/entry/front/descriptor/locale/es.yml @@ -1,4 +1,6 @@ Reference: Referencia All travels with current agency: Todos los envios con la agencia actual All entries with current supplier: Todas las entradas con el proveedor actual -Show entry report: Ver informe del pedido \ No newline at end of file +Show entry report: Ver informe del pedido +Is inventory entry: Es una entrada de inventario +Is virtual entry: Es una redada \ No newline at end of file diff --git a/modules/entry/front/index.js b/modules/entry/front/index.js index 0679b946b..f0c845b14 100644 --- a/modules/entry/front/index.js +++ b/modules/entry/front/index.js @@ -7,3 +7,4 @@ import './descriptor'; import './card'; import './summary'; import './log'; +import './buy'; diff --git a/modules/entry/front/index/index.html b/modules/entry/front/index/index.html index 60bbe46d5..cb44aa630 100644 --- a/modules/entry/front/index/index.html +++ b/modules/entry/front/index/index.html @@ -38,7 +38,7 @@ ng-show="entry.isInventory" class="bright" vn-tooltip="Inventory entry" - icon="icon-anonymous"> + icon="icon-inventory"> - - { accessType: 'WRITE', accepts: [{ arg: 'clientId', - type: 'Number', + type: 'number', description: `The client id filter`, required: true }, @@ -22,29 +22,29 @@ module.exports = Self => { }, { arg: 'warehouseId', - type: 'Number', + type: 'number', description: `The warehouse id filter`, required: true }, { arg: 'companyId', - type: 'Number', + type: 'number', description: `The company id filter` }, { arg: 'addressId', - type: 'Number', + type: 'number', description: `The address id filter`, required: true }, { arg: 'agencyModeId', - type: 'Number', + type: 'any', description: `The agencyMode id filter` }, { arg: 'routeId', - type: 'Number', + type: 'number', description: `The route id filter` }], returns: { diff --git a/modules/ticket/front/index/index.html b/modules/ticket/front/index/index.html index ee218df56..6a0b051ec 100644 --- a/modules/ticket/front/index/index.html +++ b/modules/ticket/front/index/index.html @@ -129,7 +129,7 @@
- - -