From 1c6a5164d49acb04f8845b661ea8eb11b5c264db Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 23 Nov 2022 14:04:43 +0100 Subject: [PATCH 01/20] feat: buscar por itemFk y claimResponsibleFk --- modules/claim/back/methods/claim/filter.js | 42 +++++++++++++++------ modules/claim/front/search-panel/index.html | 22 ++++++++++- modules/claim/front/search-panel/index.js | 9 ++++- 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index e86830200..730fa9ec0 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -23,7 +23,7 @@ module.exports = Self => { { arg: 'search', type: 'string', - description: `If it's and integer searchs by id, otherwise it searchs by client name`, + description: `If it's and number searchs by id, otherwise it searchs by client name`, http: {source: 'query'} }, { @@ -34,31 +34,31 @@ module.exports = Self => { }, { arg: 'id', - type: 'integer', + type: 'number', description: 'The claim id', http: {source: 'query'} }, { arg: 'clientFk', - type: 'integer', + type: 'number', description: 'The client id', http: {source: 'query'} }, { arg: 'claimStateFk', - type: 'integer', + type: 'number', description: 'The claim state id', http: {source: 'query'} }, { arg: 'salesPersonFk', - type: 'integer', + type: 'number', description: 'The salesPerson id', http: {source: 'query'} }, { arg: 'attenderFk', - type: 'integer', + type: 'number', description: 'The attender worker id', http: {source: 'query'} }, @@ -67,6 +67,18 @@ module.exports = Self => { type: 'date', description: 'The to date filter', http: {source: 'query'} + }, + { + arg: 'itemFk', + type: 'number', + description: 'The item id', + http: {source: 'query'} + }, + { + arg: 'claimResponsibleFk', + type: 'number', + description: 'The claimResponsible id', + http: {source: 'query'} } ], returns: { @@ -100,9 +112,10 @@ module.exports = Self => { case 'clientName': return {'cl.clientName': {like: `%${value}%`}}; case 'clientFk': - return {'cl.clientFk': value}; case 'id': case 'claimStateFk': + case 'itemFk': + case 'claimResponsibleFk': case 'priority': return {[`cl.${param}`]: value}; case 'salesPersonFk': @@ -123,9 +136,9 @@ module.exports = Self => { const stmts = []; const stmt = new ParameterizedSQL( - `SELECT * + `SELECT * FROM ( - SELECT + SELECT DISTINCT cl.id, cl.clientFk, c.name AS clientName, @@ -135,12 +148,17 @@ module.exports = Self => { cl.created, cs.priority, cl.claimStateFk, - c.salesPersonFk + c.salesPersonFk, + s.itemFk, + cd.claimResponsibleFk FROM claim cl LEFT JOIN client c ON c.id = cl.clientFk - LEFT JOIN worker w ON w.id = cl.workerFk + LEFT JOIN worker w ON w.id = cl.workerFk LEFT JOIN account.user u ON u.id = w.userFk - LEFT JOIN claimState cs ON cs.id = cl.claimStateFk ) cl` + LEFT JOIN claimState cs ON cs.id = cl.claimStateFk + LEFT JOIN claimBeginning cb ON cb.claimFk = cl.id + LEFT JOIN sale s ON s.id = cb.saleFk + LEFT JOIN claimDevelopment cd ON cd.claimFk = cl.id ) cl` ); stmt.merge(conn.makeSuffix(filter)); diff --git a/modules/claim/front/search-panel/index.html b/modules/claim/front/search-panel/index.html index eec8cd727..151a06c8e 100644 --- a/modules/claim/front/search-panel/index.html +++ b/modules/claim/front/search-panel/index.html @@ -58,8 +58,28 @@ ng-model="filter.created"> + + + {{::id}} - {{::name}} + + + + - \ No newline at end of file + diff --git a/modules/claim/front/search-panel/index.js b/modules/claim/front/search-panel/index.js index a7e8fb046..2400b8ede 100644 --- a/modules/claim/front/search-panel/index.js +++ b/modules/claim/front/search-panel/index.js @@ -1,7 +1,14 @@ import ngModule from '../module'; import SearchPanel from 'core/components/searchbar/search-panel'; +class Controller extends SearchPanel { + itemSearchFunc($search) { + return /^\d+$/.test($search) + ? {id: $search} + : {name: {like: '%' + $search + '%'}}; + } +} ngModule.vnComponent('vnClaimSearchPanel', { template: require('./index.html'), - controller: SearchPanel + controller: Controller }); From 14eba75a8e5311b38a1fd9e6d1614f61064b54ad Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 23 Nov 2022 14:08:43 +0100 Subject: [PATCH 02/20] feat: backTest --- .../back/methods/claim/specs/filter.spec.js | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/modules/claim/back/methods/claim/specs/filter.spec.js b/modules/claim/back/methods/claim/specs/filter.spec.js index b26afe8c4..49e258505 100644 --- a/modules/claim/back/methods/claim/specs/filter.spec.js +++ b/modules/claim/back/methods/claim/specs/filter.spec.js @@ -57,4 +57,44 @@ describe('claim filter()', () => { throw e; } }); + + it('should return 3 results filtering by item id', async() => { + const tx = await app.models.Claim.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const result = await app.models.Claim.filter({args: {filter: {}, itemFk: 2}}, null, options); + + expect(result.length).toEqual(3); + expect(result[0].id).toEqual(1); + expect(result[1].id).toEqual(2); + expect(result[2].id).toEqual(4); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return 3 results filtering by claimResponsible id', async() => { + const tx = await app.models.Claim.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const result = await app.models.Claim.filter({args: {filter: {}, claimResponsibleFk: 7}}, null, options); + + expect(result.length).toEqual(3); + expect(result[0].id).toEqual(2); + expect(result[1].id).toEqual(3); + expect(result[2].id).toEqual(4); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); }); From d023ec0a13fab813089a70c3004a690c69ae6692 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 25 Nov 2022 08:24:25 +0100 Subject: [PATCH 03/20] update fixtures --- db/dump/fixtures.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 41cd84638..04adc5649 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -1776,7 +1776,7 @@ INSERT INTO `vn`.`claimDestination`(`id`, `description`, `addressFk`) INSERT INTO `vn`.`claimDevelopment`(`id`, `claimFk`, `claimResponsibleFk`, `workerFk`, `claimReasonFk`, `claimResultFk`, `claimRedeliveryFk`, `claimDestinationFk`) VALUES (1, 1, 1, 21, 1, 1, 2, 5), - (2, 1, 1, 21, 7, 2, 2, 5), + (2, 1, 2, 21, 7, 2, 2, 5), (3, 2, 7, 21, 9, 3, 2, 5), (4, 3, 7, 21, 15, 8, 2, 5), (5, 4, 7, 21, 7, 8, 2, 5); From 4c0effc48aefdbb80702c045312dcdcfee0cab6a Mon Sep 17 00:00:00 2001 From: vicent Date: Thu, 1 Dec 2022 07:25:18 +0100 Subject: [PATCH 04/20] refacor: description actualizada --- modules/claim/back/methods/claim/filter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index 730fa9ec0..c31ac3ebd 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -23,7 +23,7 @@ module.exports = Self => { { arg: 'search', type: 'string', - description: `If it's and number searchs by id, otherwise it searchs by client name`, + description: `If it's a number searchs by id, otherwise it searchs by client name`, http: {source: 'query'} }, { From 9bcef08397f5495d0af5d78727ff7f8bbe21a2c5 Mon Sep 17 00:00:00 2001 From: vicent Date: Mon, 12 Dec 2022 12:08:30 +0100 Subject: [PATCH 05/20] feat: buscar por responsibleFk sin afectar a la consulta principal --- modules/claim/back/methods/claim/filter.js | 75 +++++++++++++--------- 1 file changed, 45 insertions(+), 30 deletions(-) diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index c31ac3ebd..8ff3288de 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -93,33 +93,34 @@ module.exports = Self => { Self.filter = async(ctx, filter, options) => { const conn = Self.dataSource.connector; + const args = ctx.args; const myOptions = {}; let to; if (typeof options == 'object') Object.assign(myOptions, options); - const where = buildFilter(ctx.args, (param, value) => { + const where = buildFilter(args, (param, value) => { switch (param) { case 'search': return /^\d+$/.test(value) ? {'cl.id': value} : { or: [ - {'cl.clientName': {like: `%${value}%`}} + {'c.name': {like: `%${value}%`}} ] }; case 'clientName': - return {'cl.clientName': {like: `%${value}%`}}; + return {'c.name': {like: `%${value}%`}}; case 'clientFk': case 'id': case 'claimStateFk': - case 'itemFk': - case 'claimResponsibleFk': case 'priority': return {[`cl.${param}`]: value}; + case 'itemFk': + return {[`s.${param}`]: value}; case 'salesPersonFk': - return {'cl.salesPersonFk': value}; + return {'c.salesPersonFk': value}; case 'attenderFk': return {'cl.workerFk': value}; case 'created': @@ -131,36 +132,50 @@ module.exports = Self => { } }); - filter = mergeFilters(ctx.args.filter, {where}); + filter = mergeFilters(args.filter, {where}); const stmts = []; const stmt = new ParameterizedSQL( - `SELECT * - FROM ( - SELECT DISTINCT - cl.id, - cl.clientFk, - c.name AS clientName, - cl.workerFk, - u.name AS workerName, - cs.description, - cl.created, - cs.priority, - cl.claimStateFk, - c.salesPersonFk, - s.itemFk, - cd.claimResponsibleFk - FROM claim cl - LEFT JOIN client c ON c.id = cl.clientFk - LEFT JOIN worker w ON w.id = cl.workerFk - LEFT JOIN account.user u ON u.id = w.userFk - LEFT JOIN claimState cs ON cs.id = cl.claimStateFk - LEFT JOIN claimBeginning cb ON cb.claimFk = cl.id - LEFT JOIN sale s ON s.id = cb.saleFk - LEFT JOIN claimDevelopment cd ON cd.claimFk = cl.id ) cl` + `SELECT + cl.id, + cl.clientFk, + c.name AS clientName, + cl.workerFk, + u.name AS workerName, + cs.description, + cl.created, + cs.priority, + cl.claimStateFk, + c.salesPersonFk, + s.itemFk + FROM claim cl + LEFT JOIN client c ON c.id = cl.clientFk + LEFT JOIN worker w ON w.id = cl.workerFk + LEFT JOIN account.user u ON u.id = w.userFk + LEFT JOIN claimState cs ON cs.id = cl.claimStateFk + LEFT JOIN claimBeginning cb ON cb.claimFk = cl.id + LEFT JOIN sale s ON s.id = cb.saleFk` ); + if (args.claimResponsibleFk) { + query = `SELECT cd.claimFk + FROM claimDevelopment cd + WHERE cd.claimResponsibleFk = ?`; + const claimDevelopments = await Self.rawSql(query, [args.claimResponsibleFk], myOptions); + + const claimIds = claimDevelopments.map(claimDevelopment => { + return claimDevelopment.claimFk; + }); + + stmt.merge({ + sql: `LEFT JOIN claimDevelopment cd ON cd.claimFk = cl.id + WHERE cl.id IN (?) + GROUP BY cl.id`, + params: [claimIds], + }); + } + stmt.merge(conn.makeSuffix(filter)); const itemsIndex = stmts.push(stmt) - 1; From 799c26796e4e1e3b8ed692e0abc5335d66204c8e Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 20 Dec 2022 15:19:05 +0100 Subject: [PATCH 06/20] =?UTF-8?q?feat:=20a=C3=B1adidos=20chips?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../back/methods/sale/salePreparingList.js | 33 +++++++++++++++++ modules/ticket/back/models/sale.js | 1 + modules/ticket/front/sale-checked/index.html | 9 +++-- modules/ticket/front/sale-checked/index.js | 37 ++++++++++++++++++- 4 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 modules/ticket/back/methods/sale/salePreparingList.js diff --git a/modules/ticket/back/methods/sale/salePreparingList.js b/modules/ticket/back/methods/sale/salePreparingList.js new file mode 100644 index 000000000..c75444223 --- /dev/null +++ b/modules/ticket/back/methods/sale/salePreparingList.js @@ -0,0 +1,33 @@ +module.exports = Self => { + Self.remoteMethodCtx('salePreparingList', { + description: 'Returns a list with the lines of a ticket and its different states of preparation', + accessType: 'READ', + accepts: [{ + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/:id/salePreparingList`, + verb: 'GET' + } + }); + + Self.salePreparingList = async(ctx, id, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + query = `CALL vn.salePreparingList(?)`; + const [sales] = await Self.rawSql(query, [id], myOptions); + + return sales; + }; +}; diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index ae247fc24..bab201fdd 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -1,5 +1,6 @@ module.exports = Self => { require('../methods/sale/getClaimableFromTicket')(Self); + require('../methods/sale/salePreparingList')(Self); require('../methods/sale/reserve')(Self); require('../methods/sale/deleteSales')(Self); require('../methods/sale/updatePrice')(Self); diff --git a/modules/ticket/front/sale-checked/index.html b/modules/ticket/front/sale-checked/index.html index 1bc6f1f68..0ee1a56d4 100644 --- a/modules/ticket/front/sale-checked/index.html +++ b/modules/ticket/front/sale-checked/index.html @@ -22,10 +22,11 @@ - - + + + + + { + this.salePreparingList = res.data; + }); + } + showItemDescriptor(event, sale) { this.quicklinks = { btnThree: { icon: 'icon-transaction', state: `item.card.diary({ - id: ${sale.itemFk}, + id: ${sale.itemFk}, warehouseFk: ${this.ticket.warehouseFk}, lineFk: ${sale.id} })`, @@ -31,6 +40,32 @@ class Controller extends Section { }; this.$.itemDescriptor.show(event.target, sale.itemFk); } + + chipHasSaleGroupDetail(saleId) { + const salePreparing = this.salePreparingList.find(element => element.saleFk = saleId); + if (salePreparing.hasSaleGroupDetail) return 'success'; + else return 'message'; + } + + chipIsPreviousSelected(isActive) { + if (isActive) return 'notice'; + else return 'message'; + } + + chipIsPrevious(isActive) { + if (isActive) return 'success'; + else return 'message'; + } + + chipIsPrepared(isActive) { + if (isActive) return 'warning'; + else return 'message'; + } + + chipIsControled(isActive) { + if (isActive) return 'warning'; + else return 'message'; + } } ngModule.vnComponent('vnTicketSaleChecked', { From 8880a83b895a466ec98f13826daacea2aa352fb0 Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 21 Dec 2022 15:03:41 +0100 Subject: [PATCH 07/20] =?UTF-8?q?feat:=20a=C3=B1adido=20saleTracking?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- front/core/components/table/style.scss | 20 ++++- front/core/styles/variables.scss | 2 + .../back/methods/sale/salePreparingList.js | 2 +- modules/ticket/front/sale-checked/index.html | 77 +++++++++++++++++-- modules/ticket/front/sale-checked/index.js | 26 ++++--- modules/ticket/front/sale-checked/style.scss | 7 ++ 6 files changed, 113 insertions(+), 21 deletions(-) create mode 100644 modules/ticket/front/sale-checked/style.scss diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index d0a29a3ba..557268661 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -29,7 +29,7 @@ vn-table { & > tbody { display: table-row-group; } - & > vn-tfoot, + & > vn-tfoot, & > .vn-tfoot, & > tfoot { border-top: $border; @@ -42,7 +42,7 @@ vn-table { height: 48px; } vn-thead, .vn-thead, - vn-tbody, .vn-tbody, + vn-tbody, .vn-tbody, vn-tfoot, .vn-tfoot, thead, tbody, tfoot { & > * { @@ -153,6 +153,18 @@ vn-table { background-color: $color-font-bg-dark; color: $color-font-bg; } + &.dark-notice { + background-color: $color-notice; + color: $color-font-bg; + } + &.yellow { + background-color: $color-yellow; + color: $color-font-bg; + } + &.pink { + background-color: $color-pink; + color: $color-font-bg; + } } vn-icon-menu { display: inline-block; @@ -194,7 +206,7 @@ vn-table.scrollable > .vn-table, } vn-thead th, - vn-thead vn-th, + vn-thead vn-th, thead vn-th, thead th { border-bottom: $border; @@ -217,4 +229,4 @@ vn-table.scrollable.lg, .tableWrapper { overflow-x: auto; -} \ No newline at end of file +} diff --git a/front/core/styles/variables.scss b/front/core/styles/variables.scss index c79a8590f..bcc9fab66 100644 --- a/front/core/styles/variables.scss +++ b/front/core/styles/variables.scss @@ -101,6 +101,8 @@ $color-marginal: #222; $color-success: #a3d131; $color-notice: #32b1ce; $color-alert: #fa3939; +$color-pink: #ff99cc; +$color-yellow: #ffff00; $color-button: $color-secondary; $color-spacer: rgba(255, 255, 255, .3); diff --git a/modules/ticket/back/methods/sale/salePreparingList.js b/modules/ticket/back/methods/sale/salePreparingList.js index c75444223..e6e7d5164 100644 --- a/modules/ticket/back/methods/sale/salePreparingList.js +++ b/modules/ticket/back/methods/sale/salePreparingList.js @@ -10,7 +10,7 @@ module.exports = Self => { http: {source: 'path'} }], returns: { - type: 'object', + type: ['object'], root: true }, http: { diff --git a/modules/ticket/front/sale-checked/index.html b/modules/ticket/front/sale-checked/index.html index 0ee1a56d4..a8b0b6230 100644 --- a/modules/ticket/front/sale-checked/index.html +++ b/modules/ticket/front/sale-checked/index.html @@ -17,16 +17,18 @@ Item Description Quantity + + - - - - - - + + + + + + {{::sale.quantity}} + + + + + + + + @@ -59,3 +75,52 @@ warehouse-fk="$ctrl.ticket.warehouseFk" ticket-fk="$ctrl.ticket.id"> + + + + + + + + + + Quantity + Original + Worker + State + Created + + + + + {{::sale.quantity}} + {{::sale.originalQuantity}} + + + {{::sale.userNickname | dashIfEmpty}} + + + {{::sale.state}} + {{::sale.created | date: 'dd/MM/yyyy HH:mm'}} + + + + + + + + + + diff --git a/modules/ticket/front/sale-checked/index.js b/modules/ticket/front/sale-checked/index.js index 14ea93343..baa4c9af0 100644 --- a/modules/ticket/front/sale-checked/index.js +++ b/modules/ticket/front/sale-checked/index.js @@ -1,5 +1,6 @@ import ngModule from '../module'; import Section from 'salix/components/section'; +import './style.scss'; class Controller extends Section { constructor($element, $) { @@ -42,30 +43,35 @@ class Controller extends Section { } chipHasSaleGroupDetail(saleId) { - const salePreparing = this.salePreparingList.find(element => element.saleFk = saleId); - if (salePreparing.hasSaleGroupDetail) return 'success'; + this.salePreparing = this.salePreparingList.find(element => element.saleFk == saleId); + if (this.salePreparing.hasSaleGroupDetail) return 'pink'; else return 'message'; } - chipIsPreviousSelected(isActive) { - if (isActive) return 'notice'; + chipIsPreviousSelected() { + if (this.salePreparing.isPreviousSelected) return 'notice'; else return 'message'; } - chipIsPrevious(isActive) { - if (isActive) return 'success'; + chipIsPrevious() { + if (this.salePreparing.isPrevious) return 'dark-notice'; else return 'message'; } - chipIsPrepared(isActive) { - if (isActive) return 'warning'; + chipIsPrepared() { + if (this.salePreparing.isPrepared) return 'warning'; else return 'message'; } - chipIsControled(isActive) { - if (isActive) return 'warning'; + chipIsControled() { + if (this.salePreparing.isControled) return 'yellow'; else return 'message'; } + + showSaleTracking(sale) { + this.saleId = sale.id; + this.$.saleTracking.show(); + } } ngModule.vnComponent('vnTicketSaleChecked', { diff --git a/modules/ticket/front/sale-checked/style.scss b/modules/ticket/front/sale-checked/style.scss new file mode 100644 index 000000000..8f02410c2 --- /dev/null +++ b/modules/ticket/front/sale-checked/style.scss @@ -0,0 +1,7 @@ +@import "variables"; + +.chip { + display: inline-block; + min-width: 10px; + min-height: 20px; +} From 16c20e470028c6d004f6fe9407c7f2157d63791f Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 23 Dec 2022 12:08:16 +0100 Subject: [PATCH 08/20] feat: add itemShelvingSale popup --- db/changes/230201/00-ACL_ItemShelvingSale.sql | 2 + db/dump/fixtures.sql | 8 +-- modules/item/back/models/item-shelving.json | 7 ++- modules/ticket/front/sale-checked/index.html | 49 +++++++++++++++++-- modules/ticket/front/sale-checked/index.js | 28 +++++++++++ .../ticket/front/sale-checked/locale/es.yml | 1 + 6 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 db/changes/230201/00-ACL_ItemShelvingSale.sql create mode 100644 modules/ticket/front/sale-checked/locale/es.yml diff --git a/db/changes/230201/00-ACL_ItemShelvingSale.sql b/db/changes/230201/00-ACL_ItemShelvingSale.sql new file mode 100644 index 000000000..38b65f89a --- /dev/null +++ b/db/changes/230201/00-ACL_ItemShelvingSale.sql @@ -0,0 +1,2 @@ +INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalId`) + VALUES ('ItemShelvingSale','*','*','ALLOW','employee'); diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 762e5411a..4bbce0442 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -1143,10 +1143,10 @@ INSERT INTO `vn`.`itemShelving` (`itemFk`, `shelvingFk`, `visible`, `grouping`, INSERT INTO `vn`.`itemShelvingSale` (`itemShelvingFk`, `saleFk`, `quantity`, `created`, `userFk`) VALUES - ('1', '1', '1', '', '1106'), - ('2', '2', '5', '', '1106'), - ('1', '7', '1', '', '1106'), - ('2', '8', '5', '', '1106'); + ('1', '1', '1', util.VN_CURDATE(), '1106'), + ('2', '2', '5', util.VN_CURDATE(), '1106'), + ('1', '7', '1', util.VN_CURDATE(), '1106'), + ('2', '8', '5', util.VN_CURDATE(), '1106'); INSERT INTO `vncontrol`.`accion`(`accion_id`, `accion`) VALUES diff --git a/modules/item/back/models/item-shelving.json b/modules/item/back/models/item-shelving.json index 951a4553a..51659e716 100644 --- a/modules/item/back/models/item-shelving.json +++ b/modules/item/back/models/item-shelving.json @@ -41,6 +41,11 @@ "type": "belongsTo", "model": "Account", "foreignKey": "userFk" - } + }, + "shelving": { + "type": "belongsTo", + "model": "Shelving", + "foreignKey": "shelvingFk" + } } } diff --git a/modules/ticket/front/sale-checked/index.html b/modules/ticket/front/sale-checked/index.html index a8b0b6230..3da4471c6 100644 --- a/modules/ticket/front/sale-checked/index.html +++ b/modules/ticket/front/sale-checked/index.html @@ -54,14 +54,14 @@ @@ -124,3 +124,46 @@ vn-id="worker-descriptor"> + + + + + + + + + + Quantity + Worker + Shelving + Parking + Created + + + + + {{::itemShelvingSale.quantity}} + {{::itemShelvingSale.userFk}} + {{::itemShelvingSale.itemShelving.shelvingFk}} + {{::itemShelvingSale.state}} + {{::itemShelvingSale.created | date: 'dd/MM/yyyy HH:mm'}} + + + + + + + + + + diff --git a/modules/ticket/front/sale-checked/index.js b/modules/ticket/front/sale-checked/index.js index baa4c9af0..04196c313 100644 --- a/modules/ticket/front/sale-checked/index.js +++ b/modules/ticket/front/sale-checked/index.js @@ -17,6 +17,27 @@ class Controller extends Section { } ] }; + + this.filterItemShelvingSale = { + include: { + relation: 'itemShelving', + scope: { + fields: ['shelvingFk'], + include: { + relation: 'shelving', + scope: { + fields: ['parkingFk'], + include: { + relation: 'parking', + scope: { + fields: ['id', 'code'] + } + } + } + } + } + } + }; } $onInit() { @@ -72,6 +93,13 @@ class Controller extends Section { this.saleId = sale.id; this.$.saleTracking.show(); } + + showItemShelvingSale(sale) { + this.saleId = sale.id; + this.$.itemShelvingSale.show(); + + console.log(this.itemShelvingSales); + } } ngModule.vnComponent('vnTicketSaleChecked', { diff --git a/modules/ticket/front/sale-checked/locale/es.yml b/modules/ticket/front/sale-checked/locale/es.yml new file mode 100644 index 000000000..3a7964bb2 --- /dev/null +++ b/modules/ticket/front/sale-checked/locale/es.yml @@ -0,0 +1 @@ +ItemShelvings sale: Carros línea From d3a9e9ac891db0f111295b14ac15b9a7d88c1355 Mon Sep 17 00:00:00 2001 From: vicent Date: Fri, 23 Dec 2022 12:17:24 +0100 Subject: [PATCH 09/20] delete: columnas que ya no existen en la tabla --- modules/item/back/models/item-shelving.json | 9 --------- modules/ticket/front/sale-checked/index.html | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/modules/item/back/models/item-shelving.json b/modules/item/back/models/item-shelving.json index 51659e716..0890350da 100644 --- a/modules/item/back/models/item-shelving.json +++ b/modules/item/back/models/item-shelving.json @@ -12,21 +12,12 @@ "id": true, "description": "Identifier" }, - "shelve": { - "type": "string" - }, "shelvingFk": { "type": "string" }, "itemFk": { "type": "number" }, - "deep": { - "type": "number" - }, - "quantity": { - "type": "number" - }, "created": { "type": "date" } diff --git a/modules/ticket/front/sale-checked/index.html b/modules/ticket/front/sale-checked/index.html index 3da4471c6..3e1d3d2d0 100644 --- a/modules/ticket/front/sale-checked/index.html +++ b/modules/ticket/front/sale-checked/index.html @@ -152,7 +152,7 @@ {{::itemShelvingSale.quantity}} {{::itemShelvingSale.userFk}} {{::itemShelvingSale.itemShelving.shelvingFk}} - {{::itemShelvingSale.state}} + {{::itemShelvingSale.itemShelving.shelving.parking.code}} {{::itemShelvingSale.created | date: 'dd/MM/yyyy HH:mm'}} From 3dd0c79629d6fd1958d64fe4d168659cc72f011b Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 27 Dec 2022 15:00:49 +0100 Subject: [PATCH 10/20] feat: add ItemShelvingSales/filter --- .../back/methods/item-shelving-sale/filter.js | 48 +++++++++++++++++++ .../item/back/models/item-shelving-sale.js | 3 ++ modules/ticket/front/sale-checked/index.html | 21 ++++---- modules/ticket/front/sale-checked/index.js | 21 -------- 4 files changed, 62 insertions(+), 31 deletions(-) create mode 100644 modules/item/back/methods/item-shelving-sale/filter.js create mode 100644 modules/item/back/models/item-shelving-sale.js diff --git a/modules/item/back/methods/item-shelving-sale/filter.js b/modules/item/back/methods/item-shelving-sale/filter.js new file mode 100644 index 000000000..a91ae7c86 --- /dev/null +++ b/modules/item/back/methods/item-shelving-sale/filter.js @@ -0,0 +1,48 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethod('filter', { + description: 'Returns all ticket sale trackings', + accessType: 'READ', + accepts: [{ + arg: 'filter', + type: 'object', + description: 'Filter defining where and paginated data' + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/filter`, + verb: 'GET' + } + }); + + Self.filter = async(filter, options) => { + const conn = Self.dataSource.connector; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const stmt = new ParameterizedSQL(` + SELECT iss.created, + iss.saleFk, + iss.quantity, + ish.shelvingFk, + p.code, + u.name + FROM itemShelvingSale iss + LEFT JOIN itemShelving ish ON iss.itemShelvingFk = ish.id + LEFT JOIN shelving s ON ish.shelvingFk = s.code + LEFT JOIN parking p ON s.parkingFk = p.id + LEFT JOIN account.user u ON u.id = iss.userFk` + ); + + stmt.merge(conn.makeSuffix(filter)); + + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/item/back/models/item-shelving-sale.js b/modules/item/back/models/item-shelving-sale.js new file mode 100644 index 000000000..b89be9f00 --- /dev/null +++ b/modules/item/back/models/item-shelving-sale.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/item-shelving-sale/filter')(Self); +}; diff --git a/modules/ticket/front/sale-checked/index.html b/modules/ticket/front/sale-checked/index.html index 3e1d3d2d0..2a7b53a8f 100644 --- a/modules/ticket/front/sale-checked/index.html +++ b/modules/ticket/front/sale-checked/index.html @@ -128,8 +128,7 @@ Quantity - Worker + Worker Shelving Parking Created @@ -150,19 +149,21 @@ {{::itemShelvingSale.quantity}} - {{::itemShelvingSale.userFk}} - {{::itemShelvingSale.itemShelving.shelvingFk}} - {{::itemShelvingSale.itemShelving.shelving.parking.code}} + + + {{::itemShelvingSale.name | dashIfEmpty}} + + + {{::itemShelvingSale.shelvingFk}} + {{::itemShelvingSale.code}} {{::itemShelvingSale.created | date: 'dd/MM/yyyy HH:mm'}} - - diff --git a/modules/ticket/front/sale-checked/index.js b/modules/ticket/front/sale-checked/index.js index 04196c313..382225ad8 100644 --- a/modules/ticket/front/sale-checked/index.js +++ b/modules/ticket/front/sale-checked/index.js @@ -17,27 +17,6 @@ class Controller extends Section { } ] }; - - this.filterItemShelvingSale = { - include: { - relation: 'itemShelving', - scope: { - fields: ['shelvingFk'], - include: { - relation: 'shelving', - scope: { - fields: ['parkingFk'], - include: { - relation: 'parking', - scope: { - fields: ['id', 'code'] - } - } - } - } - } - } - }; } $onInit() { From eb4cb318ed981c084d47ebedb8c54576e3f41bce Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 28 Dec 2022 08:43:02 +0100 Subject: [PATCH 11/20] refactor: evitar join innecesarios en el filter general --- modules/claim/back/methods/claim/filter.js | 53 +++++++++++----------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index 8ff3288de..1ec641642 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -100,6 +100,26 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); + let claimIdsByItemFk = []; + let claimIdsByClaimResponsibleFk = []; + + if (args.itemFk) { + query = `SELECT cb.claimFk + FROM claimBeginning cb + LEFT JOIN sale s ON s.id = cb.saleFk + WHERE s.itemFk = ?`; + const claims = await Self.rawSql(query, [args.itemFk], myOptions); + claimIdsByItemFk = claims.map(claim => claim.claimFk); + } + + if (args.claimResponsibleFk) { + query = `SELECT cd.claimFk + FROM claimDevelopment cd + WHERE cd.claimResponsibleFk = ?`; + const claims = await Self.rawSql(query, [args.claimResponsibleFk], myOptions); + claimIdsByClaimResponsibleFk = claims.map(claim => claim.claimFk); + } + const where = buildFilter(args, (param, value) => { switch (param) { case 'search': @@ -118,7 +138,9 @@ module.exports = Self => { case 'priority': return {[`cl.${param}`]: value}; case 'itemFk': - return {[`s.${param}`]: value}; + return {'cl.id': {inq: claimIdsByItemFk}}; + case 'claimResponsibleFk': + return {'cl.id': {inq: claimIdsByClaimResponsibleFk}}; case 'salesPersonFk': return {'c.salesPersonFk': value}; case 'attenderFk': @@ -144,42 +166,19 @@ module.exports = Self => { cl.workerFk, u.name AS workerName, cs.description, - cl.created, - cs.priority, - cl.claimStateFk, - c.salesPersonFk, - s.itemFk + cl.created FROM claim cl LEFT JOIN client c ON c.id = cl.clientFk LEFT JOIN worker w ON w.id = cl.workerFk LEFT JOIN account.user u ON u.id = w.userFk - LEFT JOIN claimState cs ON cs.id = cl.claimStateFk - LEFT JOIN claimBeginning cb ON cb.claimFk = cl.id - LEFT JOIN sale s ON s.id = cb.saleFk` + LEFT JOIN claimState cs ON cs.id = cl.claimStateFk` ); - if (args.claimResponsibleFk) { - query = `SELECT cd.claimFk - FROM claimDevelopment cd - WHERE cd.claimResponsibleFk = ?`; - const claimDevelopments = await Self.rawSql(query, [args.claimResponsibleFk], myOptions); - - const claimIds = claimDevelopments.map(claimDevelopment => { - return claimDevelopment.claimFk; - }); - - stmt.merge({ - sql: `LEFT JOIN claimDevelopment cd ON cd.claimFk = cl.id - WHERE cl.id IN (?) - GROUP BY cl.id`, - params: [claimIds], - }); - } - stmt.merge(conn.makeSuffix(filter)); const itemsIndex = stmts.push(stmt) - 1; const sql = ParameterizedSQL.join(stmts, ';'); + console.log(sql); const result = await conn.executeStmt(sql, myOptions); return itemsIndex === 0 ? result : result[itemsIndex]; From eed6d05e2370266ccec66fe97310376ad70c3ca9 Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 28 Dec 2022 08:51:39 +0100 Subject: [PATCH 12/20] delete console.log --- modules/claim/back/methods/claim/filter.js | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index 1ec641642..ab6c25582 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -178,7 +178,6 @@ module.exports = Self => { const itemsIndex = stmts.push(stmt) - 1; const sql = ParameterizedSQL.join(stmts, ';'); - console.log(sql); const result = await conn.executeStmt(sql, myOptions); return itemsIndex === 0 ? result : result[itemsIndex]; From ba7e5d6a91015d7979402a2c4c61f6287ee820aa Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 28 Dec 2022 11:56:34 +0100 Subject: [PATCH 13/20] refator: se usa loopback cuando se puede --- modules/claim/back/methods/claim/filter.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index ab6c25582..965e48cca 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -92,6 +92,7 @@ module.exports = Self => { }); Self.filter = async(ctx, filter, options) => { + const models = Self.app.models; const conn = Self.dataSource.connector; const args = ctx.args; const myOptions = {}; @@ -113,10 +114,10 @@ module.exports = Self => { } if (args.claimResponsibleFk) { - query = `SELECT cd.claimFk - FROM claimDevelopment cd - WHERE cd.claimResponsibleFk = ?`; - const claims = await Self.rawSql(query, [args.claimResponsibleFk], myOptions); + const claims = await models.ClaimDevelopment.find({ + fields: ['claimFk'], + where: {claimResponsibleFk: args.claimResponsibleFk} + }, myOptions); claimIdsByClaimResponsibleFk = claims.map(claim => claim.claimFk); } From d0ae97e41ba512327da28cf42323c817848b1833 Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 28 Dec 2022 12:16:23 +0100 Subject: [PATCH 14/20] refactor: move changes from ticket.sale-checked to ticket.sale-tracking --- modules/ticket/front/sale-tracking/index.html | 153 ++++++++++++++---- modules/ticket/front/sale-tracking/index.js | 82 +++++++++- .../ticket/front/sale-tracking/locale/es.yml | 1 + modules/ticket/front/sale-tracking/style.scss | 7 + 4 files changed, 210 insertions(+), 33 deletions(-) create mode 100644 modules/ticket/front/sale-tracking/locale/es.yml create mode 100644 modules/ticket/front/sale-tracking/style.scss diff --git a/modules/ticket/front/sale-tracking/index.html b/modules/ticket/front/sale-tracking/index.html index fc585650a..2a7b53a8f 100644 --- a/modules/ticket/front/sale-tracking/index.html +++ b/modules/ticket/front/sale-tracking/index.html @@ -1,10 +1,11 @@ @@ -12,31 +13,28 @@ - + Is checked Item - Description + Description Quantity - Original - Worker - State - Created + + - - - + + + + + + - {{sale.itemFk | zeroFill:6}} + {{::sale.itemFk | zeroFill:6}} @@ -53,16 +51,20 @@ {{::sale.quantity}} - {{::sale.originalQuantity}} - - - {{::sale.userNickname | dashIfEmpty}} - + + + + + + + - {{::sale.state}} - {{::sale.created | date: 'dd/MM/yyyy HH:mm'}} @@ -70,8 +72,99 @@ + warehouse-fk="$ctrl.ticket.warehouseFk" + ticket-fk="$ctrl.ticket.id"> - - \ No newline at end of file + + + + + + + + + + Quantity + Original + Worker + State + Created + + + + + {{::sale.quantity}} + {{::sale.originalQuantity}} + + + {{::sale.userNickname | dashIfEmpty}} + + + {{::sale.state}} + {{::sale.created | date: 'dd/MM/yyyy HH:mm'}} + + + + + + + + + + + + + + + + + + + + Quantity + Worker + Shelving + Parking + Created + + + + + {{::itemShelvingSale.quantity}} + + + {{::itemShelvingSale.name | dashIfEmpty}} + + + {{::itemShelvingSale.shelvingFk}} + {{::itemShelvingSale.code}} + {{::itemShelvingSale.created | date: 'dd/MM/yyyy HH:mm'}} + + + + + + + + diff --git a/modules/ticket/front/sale-tracking/index.js b/modules/ticket/front/sale-tracking/index.js index 394ef4f1e..25a4632ca 100644 --- a/modules/ticket/front/sale-tracking/index.js +++ b/modules/ticket/front/sale-tracking/index.js @@ -1,12 +1,88 @@ import ngModule from '../module'; import Section from 'salix/components/section'; +import './style.scss'; -class Controller extends Section {} +class Controller extends Section { + constructor($element, $) { + super($element, $); + this.filter = { + include: [ + { + relation: 'item' + }, { + relation: 'isChecked', + scope: { + fields: ['isChecked'] + } + } + ] + }; + } + + $onInit() { + const query = `Sales/${this.$params.id}/salePreparingList`; + this.$http.get(query) + .then(res => { + this.salePreparingList = res.data; + }); + } + + showItemDescriptor(event, sale) { + this.quicklinks = { + btnThree: { + icon: 'icon-transaction', + state: `item.card.diary({ + id: ${sale.itemFk}, + warehouseFk: ${this.ticket.warehouseFk}, + lineFk: ${sale.id} + })`, + tooltip: 'Item diary' + } + }; + this.$.itemDescriptor.show(event.target, sale.itemFk); + } + + chipHasSaleGroupDetail(saleId) { + this.salePreparing = this.salePreparingList.find(element => element.saleFk == saleId); + if (this.salePreparing.hasSaleGroupDetail) return 'pink'; + else return 'message'; + } + + chipIsPreviousSelected() { + if (this.salePreparing.isPreviousSelected) return 'notice'; + else return 'message'; + } + + chipIsPrevious() { + if (this.salePreparing.isPrevious) return 'dark-notice'; + else return 'message'; + } + + chipIsPrepared() { + if (this.salePreparing.isPrepared) return 'warning'; + else return 'message'; + } + + chipIsControled() { + if (this.salePreparing.isControled) return 'yellow'; + else return 'message'; + } + + showSaleTracking(sale) { + this.saleId = sale.id; + this.$.saleTracking.show(); + } + + showItemShelvingSale(sale) { + this.saleId = sale.id; + this.$.itemShelvingSale.show(); + } +} ngModule.vnComponent('vnTicketSaleTracking', { template: require('./index.html'), controller: Controller, bindings: { - ticket: '<', - }, + ticket: '<' + } }); diff --git a/modules/ticket/front/sale-tracking/locale/es.yml b/modules/ticket/front/sale-tracking/locale/es.yml new file mode 100644 index 000000000..3a7964bb2 --- /dev/null +++ b/modules/ticket/front/sale-tracking/locale/es.yml @@ -0,0 +1 @@ +ItemShelvings sale: Carros línea diff --git a/modules/ticket/front/sale-tracking/style.scss b/modules/ticket/front/sale-tracking/style.scss new file mode 100644 index 000000000..8f02410c2 --- /dev/null +++ b/modules/ticket/front/sale-tracking/style.scss @@ -0,0 +1,7 @@ +@import "variables"; + +.chip { + display: inline-block; + min-width: 10px; + min-height: 20px; +} From ab0af27f8b685471092ae5b4014527646599c044 Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 28 Dec 2022 12:23:41 +0100 Subject: [PATCH 15/20] refactor: delete changes in ticket.sale-checked --- modules/ticket/front/sale-checked/index.html | 120 +----------------- modules/ticket/front/sale-checked/index.js | 48 ------- .../ticket/front/sale-checked/locale/es.yml | 1 - modules/ticket/front/sale-checked/style.scss | 7 - 4 files changed, 5 insertions(+), 171 deletions(-) delete mode 100644 modules/ticket/front/sale-checked/locale/es.yml delete mode 100644 modules/ticket/front/sale-checked/style.scss diff --git a/modules/ticket/front/sale-checked/index.html b/modules/ticket/front/sale-checked/index.html index 2a7b53a8f..38ec2e306 100644 --- a/modules/ticket/front/sale-checked/index.html +++ b/modules/ticket/front/sale-checked/index.html @@ -17,18 +17,15 @@ Item Description Quantity - - - - - - - - + + + {{::sale.quantity}} - - - - - - - - @@ -75,96 +58,3 @@ warehouse-fk="$ctrl.ticket.warehouseFk" ticket-fk="$ctrl.ticket.id"> - - - - - - - - - - Quantity - Original - Worker - State - Created - - - - - {{::sale.quantity}} - {{::sale.originalQuantity}} - - - {{::sale.userNickname | dashIfEmpty}} - - - {{::sale.state}} - {{::sale.created | date: 'dd/MM/yyyy HH:mm'}} - - - - - - - - - - - - - - - - - - - - Quantity - Worker - Shelving - Parking - Created - - - - - {{::itemShelvingSale.quantity}} - - - {{::itemShelvingSale.name | dashIfEmpty}} - - - {{::itemShelvingSale.shelvingFk}} - {{::itemShelvingSale.code}} - {{::itemShelvingSale.created | date: 'dd/MM/yyyy HH:mm'}} - - - - - - - - diff --git a/modules/ticket/front/sale-checked/index.js b/modules/ticket/front/sale-checked/index.js index 382225ad8..d416c2f50 100644 --- a/modules/ticket/front/sale-checked/index.js +++ b/modules/ticket/front/sale-checked/index.js @@ -1,6 +1,5 @@ import ngModule from '../module'; import Section from 'salix/components/section'; -import './style.scss'; class Controller extends Section { constructor($element, $) { @@ -18,15 +17,6 @@ class Controller extends Section { ] }; } - - $onInit() { - const query = `Sales/${this.$params.id}/salePreparingList`; - this.$http.get(query) - .then(res => { - this.salePreparingList = res.data; - }); - } - showItemDescriptor(event, sale) { this.quicklinks = { btnThree: { @@ -41,44 +31,6 @@ class Controller extends Section { }; this.$.itemDescriptor.show(event.target, sale.itemFk); } - - chipHasSaleGroupDetail(saleId) { - this.salePreparing = this.salePreparingList.find(element => element.saleFk == saleId); - if (this.salePreparing.hasSaleGroupDetail) return 'pink'; - else return 'message'; - } - - chipIsPreviousSelected() { - if (this.salePreparing.isPreviousSelected) return 'notice'; - else return 'message'; - } - - chipIsPrevious() { - if (this.salePreparing.isPrevious) return 'dark-notice'; - else return 'message'; - } - - chipIsPrepared() { - if (this.salePreparing.isPrepared) return 'warning'; - else return 'message'; - } - - chipIsControled() { - if (this.salePreparing.isControled) return 'yellow'; - else return 'message'; - } - - showSaleTracking(sale) { - this.saleId = sale.id; - this.$.saleTracking.show(); - } - - showItemShelvingSale(sale) { - this.saleId = sale.id; - this.$.itemShelvingSale.show(); - - console.log(this.itemShelvingSales); - } } ngModule.vnComponent('vnTicketSaleChecked', { diff --git a/modules/ticket/front/sale-checked/locale/es.yml b/modules/ticket/front/sale-checked/locale/es.yml deleted file mode 100644 index 3a7964bb2..000000000 --- a/modules/ticket/front/sale-checked/locale/es.yml +++ /dev/null @@ -1 +0,0 @@ -ItemShelvings sale: Carros línea diff --git a/modules/ticket/front/sale-checked/style.scss b/modules/ticket/front/sale-checked/style.scss deleted file mode 100644 index 8f02410c2..000000000 --- a/modules/ticket/front/sale-checked/style.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import "variables"; - -.chip { - display: inline-block; - min-width: 10px; - min-height: 20px; -} From d5b626434be58cdb53215f853f3eca18aab29cb8 Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 28 Dec 2022 12:42:51 +0100 Subject: [PATCH 16/20] refactor: add translations, change css... --- modules/item/back/methods/item-shelving-sale/filter.js | 1 + modules/ticket/front/sale-tracking/index.html | 5 +---- modules/ticket/front/sale-tracking/locale/es.yml | 5 +++++ modules/ticket/front/sale-tracking/style.scss | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/item/back/methods/item-shelving-sale/filter.js b/modules/item/back/methods/item-shelving-sale/filter.js index a91ae7c86..87b3c15a6 100644 --- a/modules/item/back/methods/item-shelving-sale/filter.js +++ b/modules/item/back/methods/item-shelving-sale/filter.js @@ -31,6 +31,7 @@ module.exports = Self => { SELECT iss.created, iss.saleFk, iss.quantity, + iss.userFk, ish.shelvingFk, p.code, u.name diff --git a/modules/ticket/front/sale-tracking/index.html b/modules/ticket/front/sale-tracking/index.html index 2a7b53a8f..015e8954a 100644 --- a/modules/ticket/front/sale-tracking/index.html +++ b/modules/ticket/front/sale-tracking/index.html @@ -18,7 +18,6 @@ Description Quantity - @@ -51,14 +50,12 @@ {{::sale.quantity}} - + - - Date: Tue, 3 Jan 2023 13:06:30 +0100 Subject: [PATCH 17/20] refs #2952 feat: add chips --- modules/ticket/front/sale-tracking/index.html | 18 +++---- modules/ticket/front/sale-tracking/index.js | 48 ++++++++++++------- 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/modules/ticket/front/sale-tracking/index.html b/modules/ticket/front/sale-tracking/index.html index 015e8954a..851817551 100644 --- a/modules/ticket/front/sale-tracking/index.html +++ b/modules/ticket/front/sale-tracking/index.html @@ -4,7 +4,7 @@ filter="::$ctrl.filter" link="{ticketFk: $ctrl.$params.id}" limit="20" - data="sales" + data="$ctrl.sales" order="concept ASC" auto-load="true"> @@ -21,13 +21,13 @@ - + - - - - - + + + + + @@ -96,7 +96,7 @@ - + {{::sale.quantity}} {{::sale.originalQuantity}} diff --git a/modules/ticket/front/sale-tracking/index.js b/modules/ticket/front/sale-tracking/index.js index 25a4632ca..60e42a461 100644 --- a/modules/ticket/front/sale-tracking/index.js +++ b/modules/ticket/front/sale-tracking/index.js @@ -10,7 +10,7 @@ class Controller extends Section { { relation: 'item' }, { - relation: 'isChecked', + relation: 'saleTracking', scope: { fields: ['isChecked'] } @@ -19,12 +19,25 @@ class Controller extends Section { }; } - $onInit() { - const query = `Sales/${this.$params.id}/salePreparingList`; - this.$http.get(query) - .then(res => { - this.salePreparingList = res.data; - }); + get sales() { + return this._sales; + } + + set sales(value) { + this._sales = value; + if (value) { + const query = `Sales/${this.$params.id}/salePreparingList`; + this.$http.get(query) + .then(res => { + this.salePreparingList = res.data; + for (const salePreparing of this.salePreparingList) { + for (const sale of this.sales) { + if (salePreparing.saleFk == sale.id) + sale.preparingList = salePreparing; + } + } + }); + } } showItemDescriptor(event, sale) { @@ -42,29 +55,28 @@ class Controller extends Section { this.$.itemDescriptor.show(event.target, sale.itemFk); } - chipHasSaleGroupDetail(saleId) { - this.salePreparing = this.salePreparingList.find(element => element.saleFk == saleId); - if (this.salePreparing.hasSaleGroupDetail) return 'pink'; + chipHasSaleGroupDetail(hasSaleGroupDetail) { + if (hasSaleGroupDetail) return 'pink'; else return 'message'; } - chipIsPreviousSelected() { - if (this.salePreparing.isPreviousSelected) return 'notice'; + chipIsPreviousSelected(isPreviousSelected) { + if (isPreviousSelected) return 'notice'; else return 'message'; } - chipIsPrevious() { - if (this.salePreparing.isPrevious) return 'dark-notice'; + chipIsPrevious(isPrevious) { + if (isPrevious) return 'dark-notice'; else return 'message'; } - chipIsPrepared() { - if (this.salePreparing.isPrepared) return 'warning'; + chipIsPrepared(isPrepared) { + if (isPrepared) return 'warning'; else return 'message'; } - chipIsControled() { - if (this.salePreparing.isControled) return 'yellow'; + chipIsControled(isControled) { + if (isControled) return 'yellow'; else return 'message'; } From 1aa21c16b52c440decb207c30bd8ffe0294fce34 Mon Sep 17 00:00:00 2001 From: vicent Date: Thu, 5 Jan 2023 11:42:21 +0100 Subject: [PATCH 18/20] refactor: borrado join a worker --- modules/claim/back/methods/claim/filter.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index 965e48cca..d653229e5 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -170,8 +170,7 @@ module.exports = Self => { cl.created FROM claim cl LEFT JOIN client c ON c.id = cl.clientFk - LEFT JOIN worker w ON w.id = cl.workerFk - LEFT JOIN account.user u ON u.id = w.userFk + LEFT JOIN account.user u ON u.id = cl.workerFk LEFT JOIN claimState cs ON cs.id = cl.claimStateFk` ); From cdee85e1e82e9c82090d1fffb7ca907e96b5e963 Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 10 Jan 2023 08:31:32 +0100 Subject: [PATCH 19/20] refacotor: change description --- modules/item/back/methods/item-shelving-sale/filter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/item/back/methods/item-shelving-sale/filter.js b/modules/item/back/methods/item-shelving-sale/filter.js index 87b3c15a6..12029d33d 100644 --- a/modules/item/back/methods/item-shelving-sale/filter.js +++ b/modules/item/back/methods/item-shelving-sale/filter.js @@ -3,7 +3,7 @@ const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethod('filter', { - description: 'Returns all ticket sale trackings', + description: 'Returns all item shelving sale matching with the filter', accessType: 'READ', accepts: [{ arg: 'filter', From 5f0fa5e369a3489b72847a070d6d1a0fadba5d2e Mon Sep 17 00:00:00 2001 From: vicent Date: Tue, 10 Jan 2023 08:34:38 +0100 Subject: [PATCH 20/20] add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7073dc53..f70019f2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [General](Inicio) Permite recuperar la contraseña ### Changed +- [Tickets](Líneas preparadas) Actualizada sección para que sea más visual ### Fixed - [General] Al utilizar el traductor de Google se descuadraban los iconos