From 00fcd3a800344afb04385b01b95490ac4c864274 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 7 Aug 2023 14:03:07 +0200 Subject: [PATCH 1/7] refs #6083 feat: add lilium ticketSms --- db/changes/233202/00-ticketSmsACL.sql | 3 +++ modules/ticket/front/index.js | 1 + modules/ticket/front/routes.json | 12 +++++++++++- modules/ticket/front/sms/index.html | 2 ++ modules/ticket/front/sms/index.js | 21 +++++++++++++++++++++ 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 db/changes/233202/00-ticketSmsACL.sql create mode 100644 modules/ticket/front/sms/index.html create mode 100644 modules/ticket/front/sms/index.js diff --git a/db/changes/233202/00-ticketSmsACL.sql b/db/changes/233202/00-ticketSmsACL.sql new file mode 100644 index 0000000000..a25a876f86 --- /dev/null +++ b/db/changes/233202/00-ticketSmsACL.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId) + VALUES + ('TicketSms', 'find', 'READ', 'ALLOW', 'ROLE', 'salesPerson'); diff --git a/modules/ticket/front/index.js b/modules/ticket/front/index.js index 029dc16a41..d805cb0f8c 100644 --- a/modules/ticket/front/index.js +++ b/modules/ticket/front/index.js @@ -36,3 +36,4 @@ import './future'; import './future-search-panel'; import './advance'; import './advance-search-panel'; +import './sms'; diff --git a/modules/ticket/front/routes.json b/modules/ticket/front/routes.json index c86b3a1efc..e403ab02dc 100644 --- a/modules/ticket/front/routes.json +++ b/modules/ticket/front/routes.json @@ -26,7 +26,8 @@ {"state": "ticket.card.components", "icon": "icon-components"}, {"state": "ticket.card.saleTracking", "icon": "assignment"}, {"state": "ticket.card.dms.index", "icon": "cloud_download"}, - {"state": "ticket.card.boxing", "icon": "science"} + {"state": "ticket.card.boxing", "icon": "science"}, + {"state": "ticket.card.sms", "icon": "sms"} ] }, "keybindings": [ @@ -287,6 +288,15 @@ "state": "ticket.advance", "component": "vn-ticket-advance", "description": "Advance tickets" + }, + { + "url": "/sms", + "state": "ticket.card.sms", + "component": "vn-ticket-sms", + "description": "Sms", + "params": { + "ticket": "$ctrl.ticket" + } } ] } diff --git a/modules/ticket/front/sms/index.html b/modules/ticket/front/sms/index.html new file mode 100644 index 0000000000..7fb3b870e0 --- /dev/null +++ b/modules/ticket/front/sms/index.html @@ -0,0 +1,2 @@ + + diff --git a/modules/ticket/front/sms/index.js b/modules/ticket/front/sms/index.js new file mode 100644 index 0000000000..69d54aafe8 --- /dev/null +++ b/modules/ticket/front/sms/index.js @@ -0,0 +1,21 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +class Controller extends Section { + constructor($element, $) { + super($element, $); + } + + async $onInit() { + this.$state.go('ticket.card.summary', {id: this.$params.id}); + window.location.href = await this.vnApp.getUrl(`ticket/${this.$params.id}/sms`); + } +} + +ngModule.vnComponent('vnTicketSms', { + template: require('./index.html'), + controller: Controller, + bindings: { + ticket: '<' + } +}); From 2f64a41f645de5deeff913894cd631850f40ef2d Mon Sep 17 00:00:00 2001 From: guillermo Date: Tue, 8 Aug 2023 14:16:47 +0200 Subject: [PATCH 2/7] refs #5995 Added getExternalCmrs --- .../back/methods/route/getExternalCmrs.js | 139 ++++++++++++++++++ modules/route/back/models/route.js | 1 + 2 files changed, 140 insertions(+) create mode 100644 modules/route/back/methods/route/getExternalCmrs.js diff --git a/modules/route/back/methods/route/getExternalCmrs.js b/modules/route/back/methods/route/getExternalCmrs.js new file mode 100644 index 0000000000..4947aeffa2 --- /dev/null +++ b/modules/route/back/methods/route/getExternalCmrs.js @@ -0,0 +1,139 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const buildFilter = require('vn-loopback/util/filter').buildFilter; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethodCtx('getExternalCmrs', { + description: 'Returns an array of external cmrs', + accessType: 'READ', + accepts: [ + { + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', + http: {source: 'query'} + }, + { + arg: 'cmrFk', + type: 'integer', + description: 'Searchs the route by id', + http: {source: 'query'} + }, + { + arg: 'ticketFk', + type: 'integer', + description: 'The worker id', + http: {source: 'query'} + }, + { + arg: 'country', + type: 'string', + description: 'The agencyMode id', + http: {source: 'query'} + }, + { + arg: 'clientFk', + type: 'integer', + description: 'The vehicle id', + http: {source: 'query'} + }, + { + arg: 'hasCmrDms', + type: 'boolean', + description: 'The vehicle id', + http: {source: 'query'} + }, + { + arg: 'shipped', + type: 'date', + description: 'The to date filter', + http: {source: 'query'} + }, + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/getExternalCmrs`, + verb: 'GET' + } + }); + + Self.getExternalCmrs = async(ctx, filter, options) => { + const conn = Self.dataSource.connector; + + let where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'cmrFk': + return {'cmrFk': value}; + case 'ticketFk': + return {'ticketFk': value}; + case 'country': + return {'country': value}; + case 'clientFk': + return {'clientFk': value}; + case 'hasCmrDms': + return {'hasCmrDms': value}; + case 'shipped': + return {'shipped': value}; + } + }); + + filter = mergeFilters(ctx.args.filter, {where}); + + if (!filter.where) { + const yesterday = new Date(); + yesterday.setDate(yesterday.getDate() - 1); + filter.where = {'shipped': yesterday.toISOString().split('T')[0]} + } + + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + let stmts = []; + const stmt = new ParameterizedSQL(` + SELECT * + FROM ( + SELECT t.cmrFk, + t.id ticketFk, + co.country, + t.clientFk, + IF(sub.id, TRUE, FALSE) hasCmrDms, + DATE(t.shipped) shipped + FROM ticket t + JOIN ticketState ts ON ts.ticketFk = t.id + JOIN state s ON s.id = ts.stateFk + JOIN alertLevel al ON al.id = s.alertLevel + JOIN client c ON c.id = t.clientFk + JOIN address a ON a.id = t.addressFk + JOIN province p ON p.id = a.provinceFk + JOIN country co ON co.id = p.countryFk + JOIN agencyMode am ON am.id = t.agencyModeFk + JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk + JOIN warehouse w ON w.id = t.warehouseFk + LEFT JOIN ( + SELECT td.ticketFk, d.id + FROM ticketDms td + JOIN dms d ON d.id = td.dmsFk + JOIN dmsType dt ON dt.id = d.dmsTypeFk + WHERE dt.name = 'cmr' + ) sub ON sub.ticketFk = t.id + WHERE co.code <> 'ES' + AND am.name <> 'ABONO' + AND w.code = 'ALG' + AND dm.code = 'DELIVERY' + AND t.cmrFk + ) sub + `); + + stmt.merge(conn.makeSuffix(filter)); + let itemsIndex = stmts.push(stmt) - 1; + + let sql = ParameterizedSQL.join(stmts, ';'); + let result = await conn.executeStmt(sql); + return itemsIndex === 0 ? result : result[itemsIndex]; + }; +}; diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js index a8d44cd05f..7e61acf25f 100644 --- a/modules/route/back/models/route.js +++ b/modules/route/back/models/route.js @@ -15,6 +15,7 @@ module.exports = Self => { require('../methods/route/sendSms')(Self); require('../methods/route/downloadZip')(Self); require('../methods/route/cmr')(Self); + require('../methods/route/getExternalCmrs')(Self); Self.validate('kmStart', validateDistance, { message: 'Distance must be lesser than 1000' From 765ab054a11def25e8d4c16e28362b17b5bbeb49 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 9 Aug 2023 07:41:38 +0200 Subject: [PATCH 3/7] refs #5934 fix(clientSms): add vn-tooltip --- modules/client/front/sms/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/client/front/sms/index.html b/modules/client/front/sms/index.html index 9abadd3128..e2bc0785e3 100644 --- a/modules/client/front/sms/index.html +++ b/modules/client/front/sms/index.html @@ -8,7 +8,7 @@ auto-load="true"> - + @@ -27,7 +27,7 @@ {{::clientSms.sms.destination}} - {{::clientSms.sms.message}} + {{::clientSms.sms.message}} {{::clientSms.sms.status}} {{::clientSms.sms.created | date:'dd/MM/yyyy HH:mm'}} From ed88a5b25f807fd83e40cb73bfef9b3bacc4668f Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 10 Aug 2023 07:54:49 +0200 Subject: [PATCH 4/7] refs #5995 Minor change --- modules/route/back/methods/route/getExternalCmrs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/route/back/methods/route/getExternalCmrs.js b/modules/route/back/methods/route/getExternalCmrs.js index 4947aeffa2..a232b98cdd 100644 --- a/modules/route/back/methods/route/getExternalCmrs.js +++ b/modules/route/back/methods/route/getExternalCmrs.js @@ -101,7 +101,7 @@ module.exports = Self => { t.id ticketFk, co.country, t.clientFk, - IF(sub.id, TRUE, FALSE) hasCmrDms, + sub.id hasCmrDms, DATE(t.shipped) shipped FROM ticket t JOIN ticketState ts ON ts.ticketFk = t.id From d6b30271f287d437314b35d66ed916afa2f46e34 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 10 Aug 2023 08:12:52 +0200 Subject: [PATCH 5/7] refs #5995 Requested changes --- .../back/methods/route/getExternalCmrs.js | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/modules/route/back/methods/route/getExternalCmrs.js b/modules/route/back/methods/route/getExternalCmrs.js index a232b98cdd..b7312d02eb 100644 --- a/modules/route/back/methods/route/getExternalCmrs.js +++ b/modules/route/back/methods/route/getExternalCmrs.js @@ -3,7 +3,7 @@ const buildFilter = require('vn-loopback/util/filter').buildFilter; const mergeFilters = require('vn-loopback/util/filter').mergeFilters; module.exports = Self => { - Self.remoteMethodCtx('getExternalCmrs', { + Self.remoteMethod('getExternalCmrs', { description: 'Returns an array of external cmrs', accessType: 'READ', accepts: [ @@ -11,43 +11,36 @@ module.exports = Self => { arg: 'filter', type: 'object', description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', - http: {source: 'query'} }, { arg: 'cmrFk', type: 'integer', description: 'Searchs the route by id', - http: {source: 'query'} }, { arg: 'ticketFk', type: 'integer', description: 'The worker id', - http: {source: 'query'} }, { arg: 'country', type: 'string', description: 'The agencyMode id', - http: {source: 'query'} }, { arg: 'clientFk', type: 'integer', description: 'The vehicle id', - http: {source: 'query'} }, { arg: 'hasCmrDms', type: 'boolean', description: 'The vehicle id', - http: {source: 'query'} }, { arg: 'shipped', type: 'date', description: 'The to date filter', - http: {source: 'query'} }, ], returns: { @@ -60,10 +53,27 @@ module.exports = Self => { } }); - Self.getExternalCmrs = async(ctx, filter, options) => { + Self.getExternalCmrs = async( + filter, + cmrFk, + ticketFk, + country, + clientFk, + hasCmrDms, + shipped, + options + ) => { + const params = { + cmrFk, + ticketFk, + country, + clientFk, + hasCmrDms, + shipped, + }; const conn = Self.dataSource.connector; - let where = buildFilter(ctx.args, (param, value) => { + let where = buildFilter(params, (param, value) => { switch (param) { case 'cmrFk': return {'cmrFk': value}; @@ -80,7 +90,7 @@ module.exports = Self => { } }); - filter = mergeFilters(ctx.args.filter, {where}); + filter = mergeFilters(filter, {where}); if (!filter.where) { const yesterday = new Date(); From b1971095566ffe7a6c62ab1cd0925f25329affe1 Mon Sep 17 00:00:00 2001 From: guillermo Date: Thu, 10 Aug 2023 10:14:22 +0200 Subject: [PATCH 6/7] refs #5995 Requested changes --- .../back/methods/route/getExternalCmrs.js | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/modules/route/back/methods/route/getExternalCmrs.js b/modules/route/back/methods/route/getExternalCmrs.js index b7312d02eb..5b08cf34ae 100644 --- a/modules/route/back/methods/route/getExternalCmrs.js +++ b/modules/route/back/methods/route/getExternalCmrs.js @@ -73,23 +73,7 @@ module.exports = Self => { }; const conn = Self.dataSource.connector; - let where = buildFilter(params, (param, value) => { - switch (param) { - case 'cmrFk': - return {'cmrFk': value}; - case 'ticketFk': - return {'ticketFk': value}; - case 'country': - return {'country': value}; - case 'clientFk': - return {'clientFk': value}; - case 'hasCmrDms': - return {'hasCmrDms': value}; - case 'shipped': - return {'shipped': value}; - } - }); - + let where = buildFilter(params, (param, value) => {return {[param]: value}}); filter = mergeFilters(filter, {where}); if (!filter.where) { @@ -140,10 +124,10 @@ module.exports = Self => { `); stmt.merge(conn.makeSuffix(filter)); - let itemsIndex = stmts.push(stmt) - 1; + const itemsIndex = stmts.push(stmt) - 1; - let sql = ParameterizedSQL.join(stmts, ';'); - let result = await conn.executeStmt(sql); + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql); return itemsIndex === 0 ? result : result[itemsIndex]; }; }; From e5c47a2057706ee6fb175c3aa9165a640e6e33ed Mon Sep 17 00:00:00 2001 From: alexm Date: Thu, 10 Aug 2023 10:58:44 +0200 Subject: [PATCH 7/7] refs #6054 add changeLog --- CHANGELOG.md | 5 ++++- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6399235de1..25fc30137b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,17 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [2332.01] - 2023-08-09 +## [2332.01] - 2023-08-10 ### Added - (Trabajadores -> Gestión documental) Soporte para Docuware - (General -> Agencia) Soporte para Viaexpress +- (Tickets -> SMS) Nueva sección en Lilium ### Changed - (General -> Tickets) Devuelve el motivo por el cual no es editable - (Desplegables -> Trabajadores) Mejorados +- (General -> Clientes) Razón social y dirección en mayúsculas ### Fixed +- (Clientes -> SMS) Al pasar el ratón por encima muestra el mensaje completo ## [2330.01] - 2023-07-27 diff --git a/package-lock.json b/package-lock.json index f87e3f64b8..10b5e6b022 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "salix-back", - "version": "23.34.01", + "version": "23.32.02", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 37e39d5a5c..04d1f1c7c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salix-back", - "version": "23.32.01", + "version": "23.32.02", "author": "Verdnatura Levante SL", "description": "Salix backend", "license": "GPL-3.0",