From 5c7efbb838ff4ac2b103b67ca95208b4df6a14f0 Mon Sep 17 00:00:00 2001 From: alexm Date: Thu, 11 Nov 2021 10:33:21 +0100 Subject: [PATCH 01/25] feat(item): back filter buyer in search panel ans test --- .../10370-pickles/00-item_getBalance.sql | 4 +- db/dump/fixtures.sql | 2 +- modules/item/back/methods/item/active.js | 42 +++++++++++++++++++ .../item/back/methods/item/activeWithBuyer.js | 31 ++++++++++++++ .../item/specs/activeWithBuyer.spec.js | 14 +++++++ modules/item/back/models/item.js | 2 + modules/item/front/search-panel/index.html | 4 +- 7 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 modules/item/back/methods/item/active.js create mode 100644 modules/item/back/methods/item/activeWithBuyer.js create mode 100644 modules/item/back/methods/item/specs/activeWithBuyer.spec.js diff --git a/db/changes/10370-pickles/00-item_getBalance.sql b/db/changes/10370-pickles/00-item_getBalance.sql index 91e5c36815..90e3ee2bb2 100644 --- a/db/changes/10370-pickles/00-item_getBalance.sql +++ b/db/changes/10370-pickles/00-item_getBalance.sql @@ -1,9 +1,9 @@ -DROP PROCEDURE IF EXISTS vn.item_getBalance; +DROP PROCEDURE IF EXISTS `vn`.`item_getBalance`; DELIMITER $$ $$ CREATE - definer = root@`%` procedure vn.item_getBalance(IN vItemId int, IN vWarehouse int) + definer = root@`%` procedure `vn`.`item_getBalance`(IN vItemId int, IN vWarehouse int) BEGIN DECLARE vDateInventory DATETIME; DECLARE vCurdate DATE DEFAULT CURDATE(); diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 49a78ec982..28b8e91818 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -739,7 +739,7 @@ INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `warehouseFk`, ` (3, 'WPN', 'Paniculata', 2, 1, 31, 35, 0), (4, 'PRT', 'Delivery ports', 3, 1, NULL, 35, 1), (5, 'CON', 'Container', 3, 1, NULL, 35, 1), - (6, 'ALS', 'Alstroemeria', 1, 1, 31, 35, 0); + (6, 'ALS', 'Alstroemeria', 1, 1, 31, 16, 0); INSERT INTO `vn`.`ink`(`id`, `name`, `picture`, `showOrder`, `hex`) VALUES diff --git a/modules/item/back/methods/item/active.js b/modules/item/back/methods/item/active.js new file mode 100644 index 0000000000..4537ab9943 --- /dev/null +++ b/modules/item/back/methods/item/active.js @@ -0,0 +1,42 @@ +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.activeWorkers = async(query, filter) => { + let conn = Self.dataSource.connector; + if (filter.where && filter.where.and && Array.isArray(filter.where.and)) { + let where = {}; + filter.where.and.forEach(element => { + where[Object.keys(element)[0]] = Object.values(element)[0]; + }); + filter.where = where; + } + let clientFilter = Object.assign({}, filter); + clientFilter.where = buildFilter(filter.where, (param, value) => { + switch (param) { + case 'role': + return {'r.name': value}; + case 'firstName': + return {or: [ + {'w.firstName': {like: `%${value}%`}}, + {'w.lastName': {like: `%${value}%`}}, + {'u.name': {like: `%${value}%`}}, + {'u.nickname': {like: `%${value}%`}} + ]}; + case 'id': + return {'w.id': value}; + } + }); + + let myFilter = { + where: {'u.active': true} + }; + + myFilter = mergeFilters(myFilter, clientFilter); + + let stmt = new ParameterizedSQL(query); + stmt.merge(conn.makeSuffix(myFilter)); + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/item/back/methods/item/activeWithBuyer.js b/modules/item/back/methods/item/activeWithBuyer.js new file mode 100644 index 0000000000..ca2c9329d5 --- /dev/null +++ b/modules/item/back/methods/item/activeWithBuyer.js @@ -0,0 +1,31 @@ + +module.exports = Self => { + Self.remoteMethod('activeWithBuyer', { + description: 'Returns active workers in itemType', + accessType: 'READ', + accepts: [{ + arg: 'filter', + type: 'Object', + description: 'Filter defining where and paginated data', + required: false + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/activeWithBuyer`, + verb: 'GET' + } + }); + + Self.activeWithBuyer = async filter => { + const query = + `SELECT DISTINCT w.id, w.firstName, w.lastName, u.name, u.nickname + FROM worker w + JOIN itemType i ON i.workerFk = w.id + JOIN account.user u ON u.id = w.id`; + + return Self.activeWorkers(query, filter); + }; +}; diff --git a/modules/item/back/methods/item/specs/activeWithBuyer.spec.js b/modules/item/back/methods/item/specs/activeWithBuyer.spec.js new file mode 100644 index 0000000000..f894e431a8 --- /dev/null +++ b/modules/item/back/methods/item/specs/activeWithBuyer.spec.js @@ -0,0 +1,14 @@ +const models = require('vn-loopback/server/server').models; + +describe('Worker activeWithBuyer', () => { + it('should return the buyers in itemType as result', async() => { + const filter = {}; + const result = await models.Item.activeWithBuyer(filter); + const firstWorker = result[0]; + const secondWorker = result[1]; + + expect(result.length).toEqual(2); + expect(firstWorker.nickname).toEqual('logisticBossNick'); + expect(secondWorker.nickname).toEqual('buyerNick'); + }); +}); diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index 6cf5ba6258..887aa0a116 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -14,6 +14,8 @@ module.exports = Self => { require('../methods/item/getWasteByWorker')(Self); require('../methods/item/getWasteByItem')(Self); require('../methods/item/createIntrastat')(Self); + require('../methods/item/active')(Self); + require('../methods/item/activeWithBuyer')(Self); Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'}); diff --git a/modules/item/front/search-panel/index.html b/modules/item/front/search-panel/index.html index 518062ebaf..425df3d4f9 100644 --- a/modules/item/front/search-panel/index.html +++ b/modules/item/front/search-panel/index.html @@ -41,12 +41,10 @@ From adf295ebf304edc30a699848b0f2dcda31780308 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 15 Nov 2021 12:14:34 +0100 Subject: [PATCH 02/25] fix(item): add ng-model, add fixture and transaction back test --- db/dump/fixtures.sql | 2 +- .../item/specs/activeWithBuyer.spec.js | 24 +++++++++++++------ modules/item/front/search-panel/index.html | 1 + 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 28b8e91818..08f6643e73 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -814,7 +814,7 @@ INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `d (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT'), (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'), (16, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'), - (71, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT'); + (71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT'); -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 diff --git a/modules/item/back/methods/item/specs/activeWithBuyer.spec.js b/modules/item/back/methods/item/specs/activeWithBuyer.spec.js index f894e431a8..58860c2043 100644 --- a/modules/item/back/methods/item/specs/activeWithBuyer.spec.js +++ b/modules/item/back/methods/item/specs/activeWithBuyer.spec.js @@ -2,13 +2,23 @@ const models = require('vn-loopback/server/server').models; describe('Worker activeWithBuyer', () => { it('should return the buyers in itemType as result', async() => { - const filter = {}; - const result = await models.Item.activeWithBuyer(filter); - const firstWorker = result[0]; - const secondWorker = result[1]; + const tx = await models.Item.beginTransaction({}); - expect(result.length).toEqual(2); - expect(firstWorker.nickname).toEqual('logisticBossNick'); - expect(secondWorker.nickname).toEqual('buyerNick'); + try { + const options = {transaction: tx}; + const filter = {}; + const result = await models.Item.activeWithBuyer(filter, options); + const firstWorker = result[0]; + const secondWorker = result[1]; + + expect(result.length).toEqual(2); + expect(firstWorker.nickname).toEqual('logisticBossNick'); + expect(secondWorker.nickname).toEqual('buyerNick'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } }); }); diff --git a/modules/item/front/search-panel/index.html b/modules/item/front/search-panel/index.html index 425df3d4f9..29b2a24fc5 100644 --- a/modules/item/front/search-panel/index.html +++ b/modules/item/front/search-panel/index.html @@ -41,6 +41,7 @@ Date: Mon, 15 Nov 2021 13:53:18 +0100 Subject: [PATCH 03/25] feat(item): add checkbox isFloramondo in search-panel --- db/dump/fixtures.sql | 36 +++++++++---------- modules/item/back/methods/item/filter.js | 8 +++++ .../back/methods/item/specs/filter.spec.js | 19 ++++++++++ modules/item/back/models/item.json | 3 ++ modules/item/front/search-panel/index.html | 8 +++++ 5 files changed, 56 insertions(+), 18 deletions(-) diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 49ff08db98..1c044b4311 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -796,25 +796,25 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`) ('SER', 'Services'), ('VT', 'Sales'); -INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenceFk`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`) +INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenceFk`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`, `isFloramondo`) VALUES - (1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT'), - (2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT'), - (3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT'), - (4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT'), - (5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT'), - (6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT'), - (7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT'), - (8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT'), - (9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT'), - (10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT'), - (11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT'), - (12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT'), - (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT'), - (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT'), - (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'), - (16, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'), - (71, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT'); + (1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT', 0), + (2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT', 0), + (3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT', 0), + (4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT', 0), + (5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT', 0), + (6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT', 0), + (7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT', 0), + (8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT', 0), + (9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT', 0), + (10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT', 0), + (11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT', 0), + (12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT', 0), + (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT', 1), + (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT', 1), + (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0), + (16, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0), + (71, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT', 0); -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js index cff36a2233..bdd5e1ecc7 100644 --- a/modules/item/back/methods/item/filter.js +++ b/modules/item/back/methods/item/filter.js @@ -62,6 +62,11 @@ module.exports = Self => { arg: 'landed', type: 'date', description: 'The item last buy landed date', + }, + { + arg: 'isFloramondo', + type: 'boolean', + description: 'Whether the the item is or not floramondo', } ], returns: { @@ -121,6 +126,8 @@ module.exports = Self => { return {'intr.description': value}; case 'landed': return {'lb.landed': value}; + case 'isFloramondo': + return {'i.isFloramondo': value}; } }); @@ -146,6 +153,7 @@ module.exports = Self => { i.density, i.stemMultiplier, i.typeFk, + i.isFloramondo, it.name AS typeName, it.workerFk AS buyerFk, u.name AS userName, diff --git a/modules/item/back/methods/item/specs/filter.spec.js b/modules/item/back/methods/item/specs/filter.spec.js index 572aa0167c..7b1fac9ac0 100644 --- a/modules/item/back/methods/item/specs/filter.spec.js +++ b/modules/item/back/methods/item/specs/filter.spec.js @@ -60,4 +60,23 @@ describe('item filter()', () => { throw e; } }); + + it('should return 2 result filtering by isFloramondo checkbox', async() => { + const tx = await models.Item.beginTransaction({}); + const options = {transaction: tx}; + + try { + const filter = {}; + const ctx = {args: {filter: filter, isFloramondo: true}}; + const result = await models.Item.filter(ctx, filter, options); + + expect(result.length).toEqual(2); + expect(result[0].id).toEqual(13); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); }); diff --git a/modules/item/back/models/item.json b/modules/item/back/models/item.json index d39b39178b..fd4b6b0794 100644 --- a/modules/item/back/models/item.json +++ b/modules/item/back/models/item.json @@ -140,6 +140,9 @@ }, "isFragile": { "type": "boolean" + }, + "isFloramondo": { + "type": "boolean" } }, "relations": { diff --git a/modules/item/front/search-panel/index.html b/modules/item/front/search-panel/index.html index 518062ebaf..1be4102f40 100644 --- a/modules/item/front/search-panel/index.html +++ b/modules/item/front/search-panel/index.html @@ -155,6 +155,14 @@ tabindex="-1"> + + + + From ec25df39e49eb4b6defdea11be2935e603480b38 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 15 Nov 2021 14:50:02 +0100 Subject: [PATCH 04/25] transaction activeWithBuyer.js --- db/dump/fixtures.sql | 2 +- .../item/back/methods/item/activeWithBuyer.js | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index e31c873c49..9a83f41636 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -813,7 +813,7 @@ INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `d (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT'), (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT'), (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'), - (16, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'), + (16, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB'), (71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT'); -- Update the taxClass after insert of the items diff --git a/modules/item/back/methods/item/activeWithBuyer.js b/modules/item/back/methods/item/activeWithBuyer.js index ca2c9329d5..121079aaa3 100644 --- a/modules/item/back/methods/item/activeWithBuyer.js +++ b/modules/item/back/methods/item/activeWithBuyer.js @@ -1,4 +1,3 @@ - module.exports = Self => { Self.remoteMethod('activeWithBuyer', { description: 'Returns active workers in itemType', @@ -19,13 +18,18 @@ module.exports = Self => { } }); - Self.activeWithBuyer = async filter => { - const query = - `SELECT DISTINCT w.id, w.firstName, w.lastName, u.name, u.nickname - FROM worker w - JOIN itemType i ON i.workerFk = w.id - JOIN account.user u ON u.id = w.id`; + Self.activeWithBuyer = async(filter, options) => { + const myOptions = {}; - return Self.activeWorkers(query, filter); + if (typeof options == 'object') + Object.assign(myOptions, options); + + const query = + `SELECT DISTINCT w.id, w.firstName, w.lastName, u.name, u.nickname + FROM worker w + JOIN itemType i ON i.workerFk = w.id + JOIN account.user u ON u.id = w.id`; + + return Self.activeWorkers(query, filter, myOptions); }; }; From f27420c14aa21db5cbb0dde0fe0366ad9479cc2a Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 16 Nov 2021 13:56:09 +0100 Subject: [PATCH 05/25] refactor(item): activeBuyers --- modules/item/back/methods/item/active.js | 42 ----------------- .../item/back/methods/item/activeBuyers.js | 45 +++++++++++++++++++ .../item/back/methods/item/activeWithBuyer.js | 35 --------------- modules/item/back/methods/item/filter.js | 2 +- modules/item/back/models/item.js | 3 +- modules/item/front/search-panel/index.html | 7 ++- 6 files changed, 50 insertions(+), 84 deletions(-) delete mode 100644 modules/item/back/methods/item/active.js create mode 100644 modules/item/back/methods/item/activeBuyers.js delete mode 100644 modules/item/back/methods/item/activeWithBuyer.js diff --git a/modules/item/back/methods/item/active.js b/modules/item/back/methods/item/active.js deleted file mode 100644 index 4537ab9943..0000000000 --- a/modules/item/back/methods/item/active.js +++ /dev/null @@ -1,42 +0,0 @@ -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.activeWorkers = async(query, filter) => { - let conn = Self.dataSource.connector; - if (filter.where && filter.where.and && Array.isArray(filter.where.and)) { - let where = {}; - filter.where.and.forEach(element => { - where[Object.keys(element)[0]] = Object.values(element)[0]; - }); - filter.where = where; - } - let clientFilter = Object.assign({}, filter); - clientFilter.where = buildFilter(filter.where, (param, value) => { - switch (param) { - case 'role': - return {'r.name': value}; - case 'firstName': - return {or: [ - {'w.firstName': {like: `%${value}%`}}, - {'w.lastName': {like: `%${value}%`}}, - {'u.name': {like: `%${value}%`}}, - {'u.nickname': {like: `%${value}%`}} - ]}; - case 'id': - return {'w.id': value}; - } - }); - - let myFilter = { - where: {'u.active': true} - }; - - myFilter = mergeFilters(myFilter, clientFilter); - - let stmt = new ParameterizedSQL(query); - stmt.merge(conn.makeSuffix(myFilter)); - return conn.executeStmt(stmt); - }; -}; diff --git a/modules/item/back/methods/item/activeBuyers.js b/modules/item/back/methods/item/activeBuyers.js new file mode 100644 index 0000000000..ed19dd46be --- /dev/null +++ b/modules/item/back/methods/item/activeBuyers.js @@ -0,0 +1,45 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethod('activeBuyers', { + description: 'Returns a list of agencies from a warehouse', + accepts: [{ + arg: 'filter', + type: 'object', + description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string` + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/activeBuyers`, + verb: 'GET' + } + }); + + Self.activeBuyers = async(filter, options) => { + const conn = Self.dataSource.connector; + const where = {isActive: true}; + let myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + filter = mergeFilters(filter, {where}); + + let stmt = new ParameterizedSQL( + `SELECT DISTINCT w.id workerFk, w.firstName, w.lastName, u.name, u.nickname + FROM worker w + JOIN itemType it ON it.workerFk = w.id + JOIN account.user u ON u.id = w.id + JOIN item i ON i.typeFk = it.id`, + null, myOptions); + + stmt.merge(conn.makeSuffix(filter)); + console.log(stmt); + + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/item/back/methods/item/activeWithBuyer.js b/modules/item/back/methods/item/activeWithBuyer.js deleted file mode 100644 index 121079aaa3..0000000000 --- a/modules/item/back/methods/item/activeWithBuyer.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = Self => { - Self.remoteMethod('activeWithBuyer', { - description: 'Returns active workers in itemType', - accessType: 'READ', - accepts: [{ - arg: 'filter', - type: 'Object', - description: 'Filter defining where and paginated data', - required: false - }], - returns: { - type: ['object'], - root: true - }, - http: { - path: `/activeWithBuyer`, - verb: 'GET' - } - }); - - Self.activeWithBuyer = async(filter, options) => { - const myOptions = {}; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - const query = - `SELECT DISTINCT w.id, w.firstName, w.lastName, u.name, u.nickname - FROM worker w - JOIN itemType i ON i.workerFk = w.id - JOIN account.user u ON u.id = w.id`; - - return Self.activeWorkers(query, filter, myOptions); - }; -}; diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js index 8cfefac9f0..99152467a7 100644 --- a/modules/item/back/methods/item/filter.js +++ b/modules/item/back/methods/item/filter.js @@ -44,7 +44,7 @@ module.exports = Self => { description: 'Whether the the item is or not active', }, { - arg: 'salesPersonFk', + arg: 'buyerFk', type: 'integer', description: 'The buyer of the item', }, diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index 887aa0a116..457cce4f2f 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -14,8 +14,7 @@ module.exports = Self => { require('../methods/item/getWasteByWorker')(Self); require('../methods/item/getWasteByItem')(Self); require('../methods/item/createIntrastat')(Self); - require('../methods/item/active')(Self); - require('../methods/item/activeWithBuyer')(Self); + require('../methods/item/activeBuyers')(Self); Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'}); diff --git a/modules/item/front/search-panel/index.html b/modules/item/front/search-panel/index.html index 29b2a24fc5..2a8f52827f 100644 --- a/modules/item/front/search-panel/index.html +++ b/modules/item/front/search-panel/index.html @@ -40,12 +40,11 @@ From 6fa60e597ab4201675f00c088693ee9d60747354 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 16 Nov 2021 14:13:15 +0100 Subject: [PATCH 06/25] refactor(item): activeBuyer.spec.js --- modules/item/back/methods/item/activeBuyers.js | 1 - .../specs/{activeWithBuyer.spec.js => activeBuyers.spec.js} | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) rename modules/item/back/methods/item/specs/{activeWithBuyer.spec.js => activeBuyers.spec.js} (84%) diff --git a/modules/item/back/methods/item/activeBuyers.js b/modules/item/back/methods/item/activeBuyers.js index ed19dd46be..6489ae74f2 100644 --- a/modules/item/back/methods/item/activeBuyers.js +++ b/modules/item/back/methods/item/activeBuyers.js @@ -38,7 +38,6 @@ module.exports = Self => { null, myOptions); stmt.merge(conn.makeSuffix(filter)); - console.log(stmt); return conn.executeStmt(stmt); }; diff --git a/modules/item/back/methods/item/specs/activeWithBuyer.spec.js b/modules/item/back/methods/item/specs/activeBuyers.spec.js similarity index 84% rename from modules/item/back/methods/item/specs/activeWithBuyer.spec.js rename to modules/item/back/methods/item/specs/activeBuyers.spec.js index 58860c2043..5bf36756fc 100644 --- a/modules/item/back/methods/item/specs/activeWithBuyer.spec.js +++ b/modules/item/back/methods/item/specs/activeBuyers.spec.js @@ -1,13 +1,13 @@ const models = require('vn-loopback/server/server').models; -describe('Worker activeWithBuyer', () => { +describe('Worker activeBuyers', () => { it('should return the buyers in itemType as result', async() => { const tx = await models.Item.beginTransaction({}); try { const options = {transaction: tx}; const filter = {}; - const result = await models.Item.activeWithBuyer(filter, options); + const result = await models.Item.activeBuyers(filter, options); const firstWorker = result[0]; const secondWorker = result[1]; From 4981a41d0cd2ec0a60f8c803c8a39dc86ce77340 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 16 Nov 2021 14:36:53 +0100 Subject: [PATCH 07/25] fix(supplier): delete verified supplier icon --- modules/supplier/front/descriptor/index.html | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/supplier/front/descriptor/index.html b/modules/supplier/front/descriptor/index.html index 9781c95b87..dcc065eff8 100644 --- a/modules/supplier/front/descriptor/index.html +++ b/modules/supplier/front/descriptor/index.html @@ -28,11 +28,6 @@ icon="icon-disabled" ng-if="$ctrl.supplier.isActive == false"> - - Date: Wed, 17 Nov 2021 09:11:26 +0100 Subject: [PATCH 08/25] feat(item): add filterParams in main --- modules/item/front/main/index.html | 7 +++++-- modules/item/front/main/index.js | 10 +++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/modules/item/front/main/index.html b/modules/item/front/main/index.html index a57d4fb2df..44d1257587 100644 --- a/modules/item/front/main/index.html +++ b/modules/item/front/main/index.html @@ -1,16 +1,19 @@ + data="items" + auto-load="true"> diff --git a/modules/item/front/main/index.js b/modules/item/front/main/index.js index f343699824..1d99c91a10 100644 --- a/modules/item/front/main/index.js +++ b/modules/item/front/main/index.js @@ -1,7 +1,15 @@ import ngModule from '../module'; import ModuleMain from 'salix/components/module-main'; +export default class Items extends ModuleMain { + constructor($element, $) { + super($element, $); -export default class Items extends ModuleMain {} + this.filterParams = { + isActive: true, + isFloramondo: false + }; + } +} ngModule.vnComponent('vnItems', { controller: Items, From 40656da7251852b23fd463399cae9822b68bf452 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 17 Nov 2021 13:15:59 +0100 Subject: [PATCH 09/25] fix(zone): calendar event --- modules/zone/front/calendar/index.js | 2 ++ modules/zone/front/events/index.html | 1 + 2 files changed, 3 insertions(+) diff --git a/modules/zone/front/calendar/index.js b/modules/zone/front/calendar/index.js index 00b6176c7f..a24d10aef6 100644 --- a/modules/zone/front/calendar/index.js +++ b/modules/zone/front/calendar/index.js @@ -45,6 +45,8 @@ class Controller extends Component { let date = new Date(this.date.getTime()); date.setMonth(date.getMonth() + (this.nMonths * direction)); this.date = date; + + this.emit('step'); } get data() { diff --git a/modules/zone/front/events/index.html b/modules/zone/front/events/index.html index 25ec2827f0..e71a1ae262 100644 --- a/modules/zone/front/events/index.html +++ b/modules/zone/front/events/index.html @@ -3,6 +3,7 @@ vn-id="calendar" data="data" on-selection="$ctrl.onSelection($days, $type, $weekday, $events, $exclusions)" + on-step="$ctrl.refresh()" class="vn-w-md"> From e9342af3f5cf5d4108a9d744a64f24b933b88984 Mon Sep 17 00:00:00 2001 From: joan Date: Thu, 18 Nov 2021 10:12:21 +0100 Subject: [PATCH 10/25] refactor(theme): enabled dark theme --- front/core/components/field/style.scss | 2 +- front/core/components/smart-table/table.scss | 11 +++-- front/core/components/table/style.scss | 2 +- front/core/styles/variables.scss | 49 ++++++++++++------- front/salix/components/summary/style.scss | 5 +- modules/entry/front/buy/index/style.scss | 8 +-- modules/entry/front/main/index.html | 3 +- modules/entry/front/summary/style.scss | 6 +-- modules/monitor/front/index/orders/style.scss | 2 +- modules/supplier/front/contact/style.scss | 2 +- 10 files changed, 52 insertions(+), 38 deletions(-) diff --git a/front/core/components/field/style.scss b/front/core/components/field/style.scss index 5f77e904ee..c611773e35 100644 --- a/front/core/components/field/style.scss +++ b/front/core/components/field/style.scss @@ -222,7 +222,7 @@ } } &.focused { - background-color: $color-bg-panel; + background-color: $color-font-dark; & > .container { & > .infix > .control > * { diff --git a/front/core/components/smart-table/table.scss b/front/core/components/smart-table/table.scss index e0464465ae..8555340116 100644 --- a/front/core/components/smart-table/table.scss +++ b/front/core/components/smart-table/table.scss @@ -27,7 +27,7 @@ smart-table table { & > th, & > td { text-align: left; - padding: 9px 5px; + padding: 5px; white-space: nowrap; text-overflow: ellipsis; @@ -76,23 +76,26 @@ smart-table table { .chip { padding: 4px; border-radius: 4px; - color: $color-font-bg; &.notice { - background-color: $color-notice-medium + background-color: $color-notice-medium; + color: $color-font-bg; } &.success { background-color: $color-success-medium; + color: $color-font-bg; } &.warning { background-color: $color-main-medium; + color: $color-font-bg; } &.alert { background-color: $color-alert-medium; + color: $color-font-bg; } &.message { + background-color: $color-bg-dark; color: $color-font-dark; - background-color: $color-bg-dark } } } diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index 2864ea8a1c..c73a7f0b08 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -195,7 +195,7 @@ vn-table.scrollable > .vn-table, thead vn-th, thead th { border-bottom: 2px solid $color-spacer; - background-color: #FFF; + background-color: $color-bg-panel; position: sticky; z-index: 9; top: 0 diff --git a/front/core/styles/variables.scss b/front/core/styles/variables.scss index 8883c54802..0c25aa8736 100644 --- a/front/core/styles/variables.scss +++ b/front/core/styles/variables.scss @@ -1,6 +1,6 @@ @import "./util"; -$font-size: 12pt; +$font-size: 11pt; $menu-width: 256px; $topbar-height: 56px; $mobile-width: 800px; @@ -24,7 +24,7 @@ $spacing-xl: 70px; // Light theme -$color-primary: #f7931e; +/* $color-primary: #f7931e; $color-secondary: $color-primary; $color-font: #222; @@ -72,28 +72,36 @@ $color-success-light: lighten($color-success, 35%); $color-notice-medium: lighten($color-notice, 20%); $color-notice-light: lighten($color-notice, 35%); $color-alert-medium: lighten($color-alert, 20%); -$color-alert-light: lighten($color-alert, 35%); +$color-alert-light: lighten($color-alert, 35%); */ /**/ // Dark theme -/* -$color-header: #3d3d3d; -$color-bg: #222; -$color-bg-dark: #222; +$color-primary: #f7931e; +$color-secondary: $color-primary; + $color-font: #eee; $color-font-light: #aaa; $color-font-secondary: #777; $color-font-dark: white; +$color-font-link: $color-primary; $color-font-bg: rgba(0, 0, 0, .8); -$color-font-link: #005a9a; +$color-font-bg-marginal: rgba(0, 0, 0, .4); +$color-font-bg-dark: rgba(255, 255, 255, .7); +$color-font-bg-dark-marginal: rgba(255, 255, 255, .4); + +$color-header: #3d3d3d; +$color-menu-header: #3d3d3d; +$color-bg: #222; +$color-bg-dark: #222; $color-active: #666; $color-active-font: white; $color-bg-panel: #3c3b3b; -$color-main: #f7931e; -$color-marginal: #ccc; +$color-main: $color-primary; +$color-marginal: #111; $color-success: #a3d131; $color-notice: #32b1ce; $color-alert: #f42121; +$color-button: $color-secondary; $color-spacer: rgba(255, 255, 255, .3); $color-spacer-light: rgba(255, 255, 255, .12); @@ -105,15 +113,18 @@ $color-hover-cd: rgba(255, 255, 255, .1); $color-hover-dc: .7; $color-disabled: .6; -$color-font-link: lighten($color-main, 10%); -$color-main-medium: darken($color-main, 20%); -$color-main-light: darken($color-main, 35%); -$color-success-medium: darken($color-success, 20%); -$color-success-light: darken($color-success, 35%); -$color-notice-medium: darken($color-notice, 20%); -$color-notice-light: darken($color-notice, 35%); -$color-alert-medium: darken($color-alert, 20%); -$color-alert-light: darken($color-alert, 35%); +$color-primary-medium: lighten($color-primary, 20%); +$color-primary-light: lighten($color-primary, 35%); +$color-font-link-medium: lighten($color-font-link, 20%); +$color-font-link-light: lighten($color-font-link, 35%); +$color-main-medium: lighten($color-main, 20%); +$color-main-light: lighten($color-main, 35%); +$color-success-medium: lighten($color-success, 20%); +$color-success-light: lighten($color-success, 35%); +$color-notice-medium: lighten($color-notice, 20%); +$color-notice-light: lighten($color-notice, 35%); +$color-alert-medium: lighten($color-alert, 20%); +$color-alert-light: lighten($color-alert, 35%); /**/ // Border diff --git a/front/salix/components/summary/style.scss b/front/salix/components/summary/style.scss index 99854fa9d6..2db3d961e0 100644 --- a/front/salix/components/summary/style.scss +++ b/front/salix/components/summary/style.scss @@ -68,7 +68,6 @@ ui-view > .vn-summary { padding: 7px; padding-bottom: 4px; /* Bottom line-height fix */ font-weight: lighter; - background-color: $color-main-light; border-bottom: 1px solid $color-main; white-space: nowrap; overflow: hidden; @@ -78,7 +77,7 @@ ui-view > .vn-summary { display: block; } a { - color: $color-font; + color: $color-font-link; } } h4 span:after { @@ -87,7 +86,7 @@ ui-view > .vn-summary { position: absolute; right: 5px; text-transform: none; - color: $color-spacer + color: $color-font-link; } & > * { margin: $spacing-sm; diff --git a/modules/entry/front/buy/index/style.scss b/modules/entry/front/buy/index/style.scss index 55df72f1c3..04c8d130a0 100644 --- a/modules/entry/front/buy/index/style.scss +++ b/modules/entry/front/buy/index/style.scss @@ -15,16 +15,16 @@ vn-entry-buy-index vn-card { tbody tr:nth-child(1), tbody tr:nth-child(2) { - border-left: 1px solid $color-marginal; - border-right: 1px solid $color-marginal; + border-left: 1px solid $color-spacer; + border-right: 1px solid $color-spacer; } tbody tr:nth-child(2) { - border-bottom: 1px solid $color-marginal; + border-bottom: 1px solid $color-spacer; } tbody{ - border-bottom: 1px solid $color-marginal; + border-bottom: 1px solid $color-spacer; } tbody:last-child { diff --git a/modules/entry/front/main/index.html b/modules/entry/front/main/index.html index 6c08cd0c42..f6a4c61fcf 100644 --- a/modules/entry/front/main/index.html +++ b/modules/entry/front/main/index.html @@ -2,7 +2,8 @@ vn-id="model" url="Entries/filter" limit="20" - auto-load="true"> + auto-load="true" + order="landed DESC, id DESC"> vn-td { - border-bottom: 2px solid $color-marginal; + border-bottom: 2px solid $color-spacer; font-size: 13px; } } diff --git a/modules/supplier/front/contact/style.scss b/modules/supplier/front/contact/style.scss index 84e98050df..becc66dcf5 100644 --- a/modules/supplier/front/contact/style.scss +++ b/modules/supplier/front/contact/style.scss @@ -6,5 +6,5 @@ margin-bottom: 10px; padding-right: 10px; padding-left: 10px; - border: 1px solid $color-marginal; + border: 1px solid $color-spacer; } From f49d66d9af822f04ff66018641303028e153f4f9 Mon Sep 17 00:00:00 2001 From: joan Date: Thu, 18 Nov 2021 10:36:12 +0100 Subject: [PATCH 11/25] fix(theme): chip color issues --- front/core/components/table/style.scss | 9 ++++++--- front/core/styles/variables.scss | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index c73a7f0b08..edb40d385b 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -132,23 +132,26 @@ vn-table { .chip { padding: 4px; border-radius: 4px; - color: $color-font-bg; &.notice { - background-color: $color-notice-medium + background-color: $color-notice-medium; + color: $color-font-bg; } &.success { background-color: $color-success-medium; + color: $color-font-bg; } &.warning { background-color: $color-main-medium; + color: $color-font-bg; } &.alert { background-color: $color-alert-medium; + color: $color-font-bg; } &.message { + background-color: $color-bg-dark; color: $color-font-dark; - background-color: $color-bg-dark } } vn-icon-menu { diff --git a/front/core/styles/variables.scss b/front/core/styles/variables.scss index 0c25aa8736..4a00d716d1 100644 --- a/front/core/styles/variables.scss +++ b/front/core/styles/variables.scss @@ -83,7 +83,7 @@ $color-font: #eee; $color-font-light: #aaa; $color-font-secondary: #777; $color-font-dark: white; -$color-font-link: $color-primary; +$color-font-link: #66bfff; $color-font-bg: rgba(0, 0, 0, .8); $color-font-bg-marginal: rgba(0, 0, 0, .4); $color-font-bg-dark: rgba(255, 255, 255, .7); @@ -100,7 +100,7 @@ $color-main: $color-primary; $color-marginal: #111; $color-success: #a3d131; $color-notice: #32b1ce; -$color-alert: #f42121; +$color-alert: #fa3939; $color-button: $color-secondary; $color-spacer: rgba(255, 255, 255, .3); From 03c7b3f743ca7779023e0ddef8b6a5105bbb1720 Mon Sep 17 00:00:00 2001 From: joan Date: Thu, 18 Nov 2021 11:13:10 +0100 Subject: [PATCH 12/25] fix(smtp): exclude png files on attachments --- print/core/smtp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/print/core/smtp.js b/print/core/smtp.js index 0017739da6..36a76dbafc 100644 --- a/print/core/smtp.js +++ b/print/core/smtp.js @@ -28,7 +28,7 @@ module.exports = { for (let attachment of options.attachments) { const fileName = attachment.filename; const filePath = attachment.path; - // if (fileName.includes('.png')) return; + if (fileName.includes('.png')) return; if (fileName || filePath) attachments.push(filePath ? filePath : fileName); From 1d253fc53db391989ce5a171be6fa953c783f2ee Mon Sep 17 00:00:00 2001 From: carlosjr Date: Thu, 18 Nov 2021 11:17:30 +0100 Subject: [PATCH 13/25] definitions corrected for myOptions of endpoints --- back/methods/chat/sendCheckingPresence.js | 2 +- back/methods/dms/updateFile.js | 2 +- back/methods/dms/uploadFile.js | 2 +- back/methods/starred-module/getStarredModules.js | 2 +- back/methods/starred-module/setPosition.js | 2 +- back/methods/starred-module/toggleStarredModule.js | 2 +- .../back/methods/claim-beginning/importToNewRefundTicket.js | 2 +- modules/claim/back/methods/claim-dms/removeFile.js | 2 +- modules/claim/back/methods/claim-end/importTicketSales.js | 2 +- modules/claim/back/methods/claim/regularizeClaim.js | 2 +- modules/claim/back/methods/claim/updateClaim.js | 2 +- modules/claim/back/methods/claim/updateClaimAction.js | 2 +- modules/claim/back/methods/claim/uploadFile.js | 2 +- modules/client/back/methods/client/canBeInvoiced.js | 2 +- modules/entry/back/methods/entry/addBuy.js | 2 +- modules/entry/back/methods/entry/deleteBuys.js | 2 +- modules/entry/back/methods/entry/editLatestBuys.js | 2 +- modules/entry/back/methods/entry/filter.js | 2 +- modules/entry/back/methods/entry/getBuys.js | 2 +- modules/entry/back/methods/entry/getEntry.js | 2 +- modules/entry/back/methods/entry/importBuysPreview.js | 2 +- modules/entry/back/methods/entry/latestBuysFilter.js | 2 +- modules/invoiceIn/back/methods/invoice-in/filter.js | 2 +- modules/invoiceIn/back/methods/invoice-in/summary.js | 2 +- modules/invoiceOut/back/methods/invoiceOut/book.js | 2 +- modules/invoiceOut/back/methods/invoiceOut/createPdf.js | 2 +- modules/invoiceOut/back/methods/invoiceOut/filter.js | 2 +- modules/invoiceOut/back/methods/invoiceOut/getTickets.js | 2 +- modules/invoiceOut/back/methods/invoiceOut/summary.js | 2 +- modules/item/back/methods/item/activeBuyers.js | 4 ++-- modules/route/back/methods/route/getSuggestedTickets.js | 2 +- modules/route/back/methods/route/getTickets.js | 3 ++- modules/route/back/methods/route/insertTicket.js | 2 +- modules/route/back/methods/route/updateVolume.js | 2 +- modules/worker/back/methods/calendar/absences.js | 2 +- .../worker/back/methods/worker-time-control/addTimeEntry.js | 2 +- .../back/methods/worker-time-control/deleteTimeEntry.js | 2 +- .../back/methods/worker-time-control/updateTimeEntry.js | 2 +- modules/worker/back/methods/worker/createAbsence.js | 2 +- modules/worker/back/methods/worker/deleteAbsence.js | 2 +- modules/worker/back/methods/worker/holidays.js | 2 +- modules/worker/back/methods/worker/isSubordinate.js | 2 +- modules/worker/back/methods/worker/mySubordinates.js | 2 +- modules/zone/back/methods/agency-mode/byWarehouse.js | 2 +- modules/zone/back/methods/agency/getAgenciesWithWarehouse.js | 2 +- modules/zone/back/methods/agency/landsThatDay.js | 2 +- modules/zone/back/methods/zone/clone.js | 2 +- modules/zone/back/methods/zone/getEvents.js | 2 +- modules/zone/back/methods/zone/getLeaves.js | 2 +- modules/zone/back/methods/zone/getUpcomingDeliveries.js | 2 +- modules/zone/back/methods/zone/includingExpired.js | 2 +- modules/zone/back/methods/zone/toggleIsIncluded.js | 2 +- 52 files changed, 54 insertions(+), 53 deletions(-) diff --git a/back/methods/chat/sendCheckingPresence.js b/back/methods/chat/sendCheckingPresence.js index c1bc565eb2..fcde20130c 100644 --- a/back/methods/chat/sendCheckingPresence.js +++ b/back/methods/chat/sendCheckingPresence.js @@ -27,7 +27,7 @@ module.exports = Self => { Self.sendCheckingPresence = async(ctx, recipientId, message, options) => { if (!recipientId) return false; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/back/methods/dms/updateFile.js b/back/methods/dms/updateFile.js index 161f4728c9..cfc4c322fc 100644 --- a/back/methods/dms/updateFile.js +++ b/back/methods/dms/updateFile.js @@ -60,7 +60,7 @@ module.exports = Self => { const args = ctx.args; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/back/methods/dms/uploadFile.js b/back/methods/dms/uploadFile.js index 6bda1e6db2..fb4b2e5b81 100644 --- a/back/methods/dms/uploadFile.js +++ b/back/methods/dms/uploadFile.js @@ -54,7 +54,7 @@ module.exports = Self => { const args = ctx.args; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/back/methods/starred-module/getStarredModules.js b/back/methods/starred-module/getStarredModules.js index 7b0f0e945d..5d399f16e1 100644 --- a/back/methods/starred-module/getStarredModules.js +++ b/back/methods/starred-module/getStarredModules.js @@ -16,7 +16,7 @@ module.exports = function(Self) { const models = Self.app.models; const userId = ctx.req.accessToken.userId; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/back/methods/starred-module/setPosition.js b/back/methods/starred-module/setPosition.js index c72de10834..d993f18e92 100644 --- a/back/methods/starred-module/setPosition.js +++ b/back/methods/starred-module/setPosition.js @@ -31,7 +31,7 @@ module.exports = function(Self) { const userId = ctx.req.accessToken.userId; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/back/methods/starred-module/toggleStarredModule.js b/back/methods/starred-module/toggleStarredModule.js index 16e14740ba..9cc496f44a 100644 --- a/back/methods/starred-module/toggleStarredModule.js +++ b/back/methods/starred-module/toggleStarredModule.js @@ -23,7 +23,7 @@ module.exports = function(Self) { const userId = ctx.req.accessToken.userId; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index 0e358678ea..de812417a0 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -63,7 +63,7 @@ module.exports = Self => { }; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/claim/back/methods/claim-dms/removeFile.js b/modules/claim/back/methods/claim-dms/removeFile.js index 310d2b941e..edc714235f 100644 --- a/modules/claim/back/methods/claim-dms/removeFile.js +++ b/modules/claim/back/methods/claim-dms/removeFile.js @@ -20,7 +20,7 @@ module.exports = Self => { Self.removeFile = async(ctx, id, options) => { let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/claim/back/methods/claim-end/importTicketSales.js b/modules/claim/back/methods/claim-end/importTicketSales.js index 106313f142..6dd64be363 100644 --- a/modules/claim/back/methods/claim-end/importTicketSales.js +++ b/modules/claim/back/methods/claim-end/importTicketSales.js @@ -22,7 +22,7 @@ module.exports = Self => { let userId = ctx.req.accessToken.userId; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/claim/back/methods/claim/regularizeClaim.js b/modules/claim/back/methods/claim/regularizeClaim.js index 2106ab2108..d1fe7c13ef 100644 --- a/modules/claim/back/methods/claim/regularizeClaim.js +++ b/modules/claim/back/methods/claim/regularizeClaim.js @@ -24,7 +24,7 @@ module.exports = Self => { const resolvedState = 3; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/claim/back/methods/claim/updateClaim.js b/modules/claim/back/methods/claim/updateClaim.js index 68df9481c6..a646db3556 100644 --- a/modules/claim/back/methods/claim/updateClaim.js +++ b/modules/claim/back/methods/claim/updateClaim.js @@ -44,7 +44,7 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; const args = ctx.args; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/claim/back/methods/claim/updateClaimAction.js b/modules/claim/back/methods/claim/updateClaimAction.js index 12749fb6ba..23d1d417da 100644 --- a/modules/claim/back/methods/claim/updateClaimAction.js +++ b/modules/claim/back/methods/claim/updateClaimAction.js @@ -30,7 +30,7 @@ module.exports = Self => { Self.updateClaimAction = async(ctx, id, options) => { let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/claim/back/methods/claim/uploadFile.js b/modules/claim/back/methods/claim/uploadFile.js index daab9341af..81ad402198 100644 --- a/modules/claim/back/methods/claim/uploadFile.js +++ b/modules/claim/back/methods/claim/uploadFile.js @@ -54,7 +54,7 @@ module.exports = Self => { Self.uploadFile = async(ctx, id, options) => { let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/client/back/methods/client/canBeInvoiced.js b/modules/client/back/methods/client/canBeInvoiced.js index d8a126ed20..567d491f1f 100644 --- a/modules/client/back/methods/client/canBeInvoiced.js +++ b/modules/client/back/methods/client/canBeInvoiced.js @@ -25,7 +25,7 @@ module.exports = function(Self) { Self.canBeInvoiced = async(id, options) => { const models = Self.app.models; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/addBuy.js b/modules/entry/back/methods/entry/addBuy.js index f21c1650ce..f612c16518 100644 --- a/modules/entry/back/methods/entry/addBuy.js +++ b/modules/entry/back/methods/entry/addBuy.js @@ -68,7 +68,7 @@ module.exports = Self => { Self.addBuy = async(ctx, options) => { const conn = Self.dataSource.connector; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/deleteBuys.js b/modules/entry/back/methods/entry/deleteBuys.js index ce5ff6a7d9..ac6d30ce67 100644 --- a/modules/entry/back/methods/entry/deleteBuys.js +++ b/modules/entry/back/methods/entry/deleteBuys.js @@ -21,7 +21,7 @@ module.exports = Self => { Self.deleteBuys = async(ctx, options) => { const models = Self.app.models; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/editLatestBuys.js b/modules/entry/back/methods/entry/editLatestBuys.js index 53b92d966e..fb0397d2b4 100644 --- a/modules/entry/back/methods/entry/editLatestBuys.js +++ b/modules/entry/back/methods/entry/editLatestBuys.js @@ -32,7 +32,7 @@ module.exports = Self => { Self.editLatestBuys = async(field, newValue, lines, options) => { let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index 24c518de87..13690d3acf 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -108,7 +108,7 @@ module.exports = Self => { }); Self.filter = async(ctx, filter, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/getBuys.js b/modules/entry/back/methods/entry/getBuys.js index 8adcc950d8..6da9ec53e6 100644 --- a/modules/entry/back/methods/entry/getBuys.js +++ b/modules/entry/back/methods/entry/getBuys.js @@ -29,7 +29,7 @@ module.exports = Self => { Self.getBuys = async(id, filter, options) => { const models = Self.app.models; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/getEntry.js b/modules/entry/back/methods/entry/getEntry.js index 74ccc88c51..66238d0dc4 100644 --- a/modules/entry/back/methods/entry/getEntry.js +++ b/modules/entry/back/methods/entry/getEntry.js @@ -21,7 +21,7 @@ module.exports = Self => { Self.getEntry = async(id, options) => { const models = Self.app.models; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/importBuysPreview.js b/modules/entry/back/methods/entry/importBuysPreview.js index 790d33364c..5b88b587ca 100644 --- a/modules/entry/back/methods/entry/importBuysPreview.js +++ b/modules/entry/back/methods/entry/importBuysPreview.js @@ -26,7 +26,7 @@ module.exports = Self => { Self.importBuysPreview = async(id, buys, options) => { const models = Self.app.models; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/entry/back/methods/entry/latestBuysFilter.js b/modules/entry/back/methods/entry/latestBuysFilter.js index cbf9e3b6a4..7711bc0f10 100644 --- a/modules/entry/back/methods/entry/latestBuysFilter.js +++ b/modules/entry/back/methods/entry/latestBuysFilter.js @@ -76,7 +76,7 @@ module.exports = Self => { }); Self.latestBuysFilter = async(ctx, filter, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/invoiceIn/back/methods/invoice-in/filter.js b/modules/invoiceIn/back/methods/invoice-in/filter.js index e2e759fb8b..b5fc904872 100644 --- a/modules/invoiceIn/back/methods/invoice-in/filter.js +++ b/modules/invoiceIn/back/methods/invoice-in/filter.js @@ -95,7 +95,7 @@ module.exports = Self => { const conn = Self.dataSource.connector; const args = ctx.args; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/invoiceIn/back/methods/invoice-in/summary.js b/modules/invoiceIn/back/methods/invoice-in/summary.js index f09be4add1..3693245cc6 100644 --- a/modules/invoiceIn/back/methods/invoice-in/summary.js +++ b/modules/invoiceIn/back/methods/invoice-in/summary.js @@ -20,7 +20,7 @@ module.exports = Self => { }); Self.summary = async(id, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/invoiceOut/back/methods/invoiceOut/book.js b/modules/invoiceOut/back/methods/invoiceOut/book.js index 0371d4f746..7aa0eac1f0 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/book.js +++ b/modules/invoiceOut/back/methods/invoiceOut/book.js @@ -23,7 +23,7 @@ module.exports = Self => { Self.book = async(ref, options) => { const models = Self.app.models; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/invoiceOut/back/methods/invoiceOut/createPdf.js b/modules/invoiceOut/back/methods/invoiceOut/createPdf.js index ac79f0d5d0..3f577c9b09 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/createPdf.js +++ b/modules/invoiceOut/back/methods/invoiceOut/createPdf.js @@ -35,7 +35,7 @@ module.exports = Self => { throw new UserError(`Action not allowed on the test environment`); let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/invoiceOut/back/methods/invoiceOut/filter.js b/modules/invoiceOut/back/methods/invoiceOut/filter.js index 3496c92963..192490090d 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/filter.js +++ b/modules/invoiceOut/back/methods/invoiceOut/filter.js @@ -87,7 +87,7 @@ module.exports = Self => { Self.filter = async(ctx, filter, options) => { const conn = Self.dataSource.connector; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/invoiceOut/back/methods/invoiceOut/getTickets.js b/modules/invoiceOut/back/methods/invoiceOut/getTickets.js index dc3296aba9..dc94f0f0f5 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/getTickets.js +++ b/modules/invoiceOut/back/methods/invoiceOut/getTickets.js @@ -29,7 +29,7 @@ module.exports = Self => { Self.getTickets = async(id, filter, options) => { const models = Self.app.models; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/invoiceOut/back/methods/invoiceOut/summary.js b/modules/invoiceOut/back/methods/invoiceOut/summary.js index a95016ff28..db01a41895 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/summary.js +++ b/modules/invoiceOut/back/methods/invoiceOut/summary.js @@ -21,7 +21,7 @@ module.exports = Self => { Self.summary = async(id, options) => { let summary = {}; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/item/back/methods/item/activeBuyers.js b/modules/item/back/methods/item/activeBuyers.js index 6489ae74f2..e16ff877b0 100644 --- a/modules/item/back/methods/item/activeBuyers.js +++ b/modules/item/back/methods/item/activeBuyers.js @@ -3,7 +3,7 @@ const mergeFilters = require('vn-loopback/util/filter').mergeFilters; module.exports = Self => { Self.remoteMethod('activeBuyers', { - description: 'Returns a list of agencies from a warehouse', + description: 'Returns a list of buyers for the given item type', accepts: [{ arg: 'filter', type: 'object', @@ -22,7 +22,7 @@ module.exports = Self => { Self.activeBuyers = async(filter, options) => { const conn = Self.dataSource.connector; const where = {isActive: true}; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/route/back/methods/route/getSuggestedTickets.js b/modules/route/back/methods/route/getSuggestedTickets.js index fe268f8ccc..49d7c1977e 100644 --- a/modules/route/back/methods/route/getSuggestedTickets.js +++ b/modules/route/back/methods/route/getSuggestedTickets.js @@ -20,7 +20,7 @@ module.exports = Self => { }); Self.getSuggestedTickets = async(id, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/route/back/methods/route/getTickets.js b/modules/route/back/methods/route/getTickets.js index 5705d89050..9a2f5289a4 100644 --- a/modules/route/back/methods/route/getTickets.js +++ b/modules/route/back/methods/route/getTickets.js @@ -26,7 +26,8 @@ module.exports = Self => { Self.getTickets = async(filter, options) => { const conn = Self.dataSource.connector; - let myOptions = {}; + const myOptions = {}; + if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/route/back/methods/route/insertTicket.js b/modules/route/back/methods/route/insertTicket.js index d716bd8ba1..f78e1cb831 100644 --- a/modules/route/back/methods/route/insertTicket.js +++ b/modules/route/back/methods/route/insertTicket.js @@ -30,7 +30,7 @@ module.exports = Self => { const models = Self.app.models; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/route/back/methods/route/updateVolume.js b/modules/route/back/methods/route/updateVolume.js index ce6e16b5c2..f3b8da1301 100644 --- a/modules/route/back/methods/route/updateVolume.js +++ b/modules/route/back/methods/route/updateVolume.js @@ -24,7 +24,7 @@ module.exports = Self => { const models = Self.app.models; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/calendar/absences.js b/modules/worker/back/methods/calendar/absences.js index 96293c931b..32d311cdb6 100644 --- a/modules/worker/back/methods/calendar/absences.js +++ b/modules/worker/back/methods/calendar/absences.js @@ -40,7 +40,7 @@ module.exports = Self => { ended.setMonth(12); ended.setDate(0); - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker-time-control/addTimeEntry.js b/modules/worker/back/methods/worker-time-control/addTimeEntry.js index 2079a62a39..80786b7236 100644 --- a/modules/worker/back/methods/worker-time-control/addTimeEntry.js +++ b/modules/worker/back/methods/worker-time-control/addTimeEntry.js @@ -34,8 +34,8 @@ module.exports = Self => { const models = Self.app.models; const args = ctx.args; const currentUserId = ctx.req.accessToken.userId; + const myOptions = {}; - let myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js b/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js index 23e4c5fffd..c80dcab81b 100644 --- a/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js +++ b/modules/worker/back/methods/worker-time-control/deleteTimeEntry.js @@ -25,7 +25,7 @@ module.exports = Self => { const currentUserId = ctx.req.accessToken.userId; const models = Self.app.models; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker-time-control/updateTimeEntry.js b/modules/worker/back/methods/worker-time-control/updateTimeEntry.js index abeda7f8e4..a99a617704 100644 --- a/modules/worker/back/methods/worker-time-control/updateTimeEntry.js +++ b/modules/worker/back/methods/worker-time-control/updateTimeEntry.js @@ -31,7 +31,7 @@ module.exports = Self => { const models = Self.app.models; const args = ctx.args; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker/createAbsence.js b/modules/worker/back/methods/worker/createAbsence.js index 549ba7fd15..b276cf1f7c 100644 --- a/modules/worker/back/methods/worker/createAbsence.js +++ b/modules/worker/back/methods/worker/createAbsence.js @@ -41,7 +41,7 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker/deleteAbsence.js b/modules/worker/back/methods/worker/deleteAbsence.js index 18427424df..72e9243d9f 100644 --- a/modules/worker/back/methods/worker/deleteAbsence.js +++ b/modules/worker/back/methods/worker/deleteAbsence.js @@ -28,7 +28,7 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker/holidays.js b/modules/worker/back/methods/worker/holidays.js index f3ce0c6615..e11d130020 100644 --- a/modules/worker/back/methods/worker/holidays.js +++ b/modules/worker/back/methods/worker/holidays.js @@ -34,7 +34,7 @@ module.exports = Self => { const models = Self.app.models; const args = ctx.args; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker/isSubordinate.js b/modules/worker/back/methods/worker/isSubordinate.js index 13cc365c63..f051cf7685 100644 --- a/modules/worker/back/methods/worker/isSubordinate.js +++ b/modules/worker/back/methods/worker/isSubordinate.js @@ -27,7 +27,7 @@ module.exports = Self => { const models = Self.app.models; const myUserId = ctx.req.accessToken.userId; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/worker/back/methods/worker/mySubordinates.js b/modules/worker/back/methods/worker/mySubordinates.js index 07a22291da..b6711e3827 100644 --- a/modules/worker/back/methods/worker/mySubordinates.js +++ b/modules/worker/back/methods/worker/mySubordinates.js @@ -25,7 +25,7 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; const stmts = []; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/agency-mode/byWarehouse.js b/modules/zone/back/methods/agency-mode/byWarehouse.js index 30716d145b..945e79320e 100644 --- a/modules/zone/back/methods/agency-mode/byWarehouse.js +++ b/modules/zone/back/methods/agency-mode/byWarehouse.js @@ -22,7 +22,7 @@ module.exports = Self => { Self.byWarehouse = async(filter, options) => { const conn = Self.dataSource.connector; const where = {isActive: true}; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js b/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js index 296b9ee8d4..846ad6a3db 100644 --- a/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js +++ b/modules/zone/back/methods/agency/getAgenciesWithWarehouse.js @@ -29,7 +29,7 @@ module.exports = Self => { }); Self.getAgenciesWithWarehouse = async(addressFk, landed, warehouseFk, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/agency/landsThatDay.js b/modules/zone/back/methods/agency/landsThatDay.js index 5a9efefe8f..b7f13dddae 100644 --- a/modules/zone/back/methods/agency/landsThatDay.js +++ b/modules/zone/back/methods/agency/landsThatDay.js @@ -23,7 +23,7 @@ module.exports = Self => { }); Self.landsThatDay = async(addressFk, landed, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/zone/clone.js b/modules/zone/back/methods/zone/clone.js index 64dc5aa553..391b3762a6 100644 --- a/modules/zone/back/methods/zone/clone.js +++ b/modules/zone/back/methods/zone/clone.js @@ -22,7 +22,7 @@ module.exports = Self => { Self.clone = async(id, options) => { const models = Self.app.models; let tx; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/zone/getEvents.js b/modules/zone/back/methods/zone/getEvents.js index c76a38ea50..a8ee8bb7be 100644 --- a/modules/zone/back/methods/zone/getEvents.js +++ b/modules/zone/back/methods/zone/getEvents.js @@ -26,7 +26,7 @@ module.exports = Self => { }); Self.getEvents = async(geoFk, agencyModeFk, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/zone/getLeaves.js b/modules/zone/back/methods/zone/getLeaves.js index cda5d7ff9a..db17beb1bb 100644 --- a/modules/zone/back/methods/zone/getLeaves.js +++ b/modules/zone/back/methods/zone/getLeaves.js @@ -32,7 +32,7 @@ module.exports = Self => { }); Self.getLeaves = async(id, parentId = null, search, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/zone/getUpcomingDeliveries.js b/modules/zone/back/methods/zone/getUpcomingDeliveries.js index 6aceb694b4..2a1c39ed6d 100644 --- a/modules/zone/back/methods/zone/getUpcomingDeliveries.js +++ b/modules/zone/back/methods/zone/getUpcomingDeliveries.js @@ -14,7 +14,7 @@ module.exports = Self => { }); Self.getUpcomingDeliveries = async options => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/zone/includingExpired.js b/modules/zone/back/methods/zone/includingExpired.js index 75aa41e1c8..cd951b6d08 100644 --- a/modules/zone/back/methods/zone/includingExpired.js +++ b/modules/zone/back/methods/zone/includingExpired.js @@ -19,7 +19,7 @@ module.exports = Self => { }); Self.includingExpired = async(ctx, filter, options) => { - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); diff --git a/modules/zone/back/methods/zone/toggleIsIncluded.js b/modules/zone/back/methods/zone/toggleIsIncluded.js index 32144ab971..bf8c86f464 100644 --- a/modules/zone/back/methods/zone/toggleIsIncluded.js +++ b/modules/zone/back/methods/zone/toggleIsIncluded.js @@ -29,7 +29,7 @@ module.exports = Self => { Self.toggleIsIncluded = async(id, geoId, isIncluded, options) => { const models = Self.app.models; - let myOptions = {}; + const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); From 4fc01e6a0da575641ab8f08569628269c83d8f6a Mon Sep 17 00:00:00 2001 From: carlosjr Date: Thu, 18 Nov 2021 11:18:45 +0100 Subject: [PATCH 14/25] typos corrected --- modules/invoiceIn/back/methods/invoice-in/filter.js | 2 +- modules/invoiceOut/back/methods/invoiceOut/filter.js | 2 +- modules/item/back/methods/item/filter.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/invoiceIn/back/methods/invoice-in/filter.js b/modules/invoiceIn/back/methods/invoice-in/filter.js index b5fc904872..7e497d39a0 100644 --- a/modules/invoiceIn/back/methods/invoice-in/filter.js +++ b/modules/invoiceIn/back/methods/invoice-in/filter.js @@ -78,7 +78,7 @@ module.exports = Self => { { arg: 'isBooked', type: 'boolean', - description: 'Whether the the invoice is booked or not', + description: 'Whether the invoice is booked or not', }, ], returns: { diff --git a/modules/invoiceOut/back/methods/invoiceOut/filter.js b/modules/invoiceOut/back/methods/invoiceOut/filter.js index 192490090d..99a80c169f 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/filter.js +++ b/modules/invoiceOut/back/methods/invoiceOut/filter.js @@ -35,7 +35,7 @@ module.exports = Self => { { arg: 'hasPdf', type: 'boolean', - description: 'Whether the the invoiceOut has PDF or not', + description: 'Whether the invoiceOut has PDF or not', http: {source: 'query'} }, { diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js index 99152467a7..53948c46e7 100644 --- a/modules/item/back/methods/item/filter.js +++ b/modules/item/back/methods/item/filter.js @@ -41,7 +41,7 @@ module.exports = Self => { { arg: 'isActive', type: 'boolean', - description: 'Whether the the item is or not active', + description: 'Whether the item is or not active', }, { arg: 'buyerFk', From 8676a1df90922be69e2c1115116d8d7919d762a4 Mon Sep 17 00:00:00 2001 From: carlosjr Date: Thu, 18 Nov 2021 11:28:11 +0100 Subject: [PATCH 15/25] updated method description --- modules/zone/back/methods/zone/includingExpired.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/zone/back/methods/zone/includingExpired.js b/modules/zone/back/methods/zone/includingExpired.js index cd951b6d08..e93b864712 100644 --- a/modules/zone/back/methods/zone/includingExpired.js +++ b/modules/zone/back/methods/zone/includingExpired.js @@ -2,7 +2,7 @@ const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethodCtx('includingExpired', { - description: 'Returns a list of agencies from a warehouse', + description: 'Returns a list of zones for the given warehouse and user', accepts: [{ arg: 'filter', type: 'Object', From 3ffbdc3fde1be7215c514a8fa214d75a7e40f4b1 Mon Sep 17 00:00:00 2001 From: joan Date: Thu, 18 Nov 2021 11:48:13 +0100 Subject: [PATCH 16/25] Updated fonts --- front/core/styles/icons/salixfont.css | 45 ++++++++++++++++--------- front/core/styles/icons/salixfont.svg | 18 ++++++---- front/core/styles/icons/salixfont.ttf | Bin 35916 -> 39328 bytes front/core/styles/icons/salixfont.woff | Bin 35992 -> 39404 bytes modules/item/front/routes.json | 2 +- modules/supplier/front/routes.json | 2 +- 6 files changed, 44 insertions(+), 23 deletions(-) diff --git a/front/core/styles/icons/salixfont.css b/front/core/styles/icons/salixfont.css index d6466a0ebd..48dd91a826 100644 --- a/front/core/styles/icons/salixfont.css +++ b/front/core/styles/icons/salixfont.css @@ -23,30 +23,30 @@ -moz-osx-font-smoothing: grayscale; } -.icon-basketadd:before { - content: "\e901"; +.icon-preserved:before { + content: "\e963"; } -.icon-addperson:before { - content: "\e955"; +.icon-treatments:before { + content: "\e964"; } -.icon-supplierfalse:before { +.icon-funeral:before { + content: "\e965"; +} +.icon-handmadeArtificial:before { + content: "\e966"; +} +.icon-fixedPrice:before { content: "\e962"; } -.icon-invoice-in-create:before { - content: "\e948"; +.icon-accounts:before { + content: "\e95f"; } -.icon-invoiceOut:before { +.icon-clientConsumption:before { content: "\e960"; } -.icon-invoiceIn:before { +.icon-lastBuy:before { content: "\e961"; } -.icon-supplier:before { - content: "\e936"; -} -.icon-latestBuy:before { - content: "\e95f"; -} .icon-zone:before { content: "\e95d"; } @@ -86,6 +86,9 @@ .icon-deliveryprices:before { content: "\e956"; } +.icon-basketadd:before { + content: "\e955"; +} .icon-catalog:before { content: "\e952"; } @@ -128,9 +131,15 @@ .icon-actions:before { content: "\e900"; } +.icon-addperson:before { + content: "\e901"; +} .icon-albaran:before { content: "\e902"; } +.icon-apps:before { + content: "\e948"; +} .icon-artificial:before { content: "\e903"; } @@ -239,6 +248,9 @@ .icon-mandatory:before { content: "\e921"; } +.icon-niche:before { + content: "\e922"; +} .icon-no036:before { content: "\e923"; } @@ -302,6 +314,9 @@ .icon-stowaway:before { content: "\e92c"; } +.icon-supplier:before { + content: "\e936"; +} .icon-tags:before { content: "\e937"; } diff --git a/front/core/styles/icons/salixfont.svg b/front/core/styles/icons/salixfont.svg index 7ff0f037d9..42129b284d 100644 --- a/front/core/styles/icons/salixfont.svg +++ b/front/core/styles/icons/salixfont.svg @@ -10,16 +10,16 @@ - + - + - + @@ -29,7 +29,7 @@ - + @@ -41,6 +41,7 @@ + @@ -49,7 +50,7 @@ - + @@ -66,7 +67,7 @@ - + @@ -104,6 +105,11 @@ + + + + + diff --git a/front/core/styles/icons/salixfont.ttf b/front/core/styles/icons/salixfont.ttf index 106994f836a214edb4f5a62ff62fb51725c1bd64..f0e5ad047402962787849d7583699640640f8158 100644 GIT binary patch delta 13204 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 Q{`g+~KI`Nk-TOTGKkKAt?f?J) delta 10051 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 delta 10072 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 VUGym+H{?gdf6Qr%1D9Sy{|EVDR5Jho diff --git a/modules/item/front/routes.json b/modules/item/front/routes.json index 8f3e037469..6d39083b43 100644 --- a/modules/item/front/routes.json +++ b/modules/item/front/routes.json @@ -9,7 +9,7 @@ {"state": "item.index", "icon": "icon-item"}, {"state": "item.request", "icon": "pan_tool"}, {"state": "item.waste.index", "icon": "icon-claims"}, - {"state": "item.fixedPrice", "icon": "contact_support"} + {"state": "item.fixedPrice", "icon": "icon-fixedPrice"} ], "card": [ {"state": "item.card.basicData", "icon": "settings"}, diff --git a/modules/supplier/front/routes.json b/modules/supplier/front/routes.json index 9a0dee48b1..9be6b7a850 100644 --- a/modules/supplier/front/routes.json +++ b/modules/supplier/front/routes.json @@ -13,7 +13,7 @@ {"state": "supplier.card.fiscalData", "icon": "account_balance"}, {"state": "supplier.card.billingData", "icon": "icon-payment"}, {"state": "supplier.card.address.index", "icon": "icon-delivery"}, - {"state": "supplier.card.account", "icon": "contact_support"}, + {"state": "supplier.card.account", "icon": "icon-accounts"}, {"state": "supplier.card.contact", "icon": "contact_phone"}, {"state": "supplier.card.log", "icon": "history"}, {"state": "supplier.card.consumption", "icon": "show_chart"} From 16c28cfa56079bdd11ba4856158783b7572558b6 Mon Sep 17 00:00:00 2001 From: alexm Date: Thu, 18 Nov 2021 12:15:37 +0100 Subject: [PATCH 17/25] fix(client): validate businessType --- e2e/paths/02-client/01_create_client.spec.js | 12 ++++-------- loopback/locale/en.json | 3 ++- loopback/locale/es.json | 5 +++-- modules/client/back/models/client.js | 9 +++++++++ modules/client/front/create/locale/es.yml | 3 ++- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/e2e/paths/02-client/01_create_client.spec.js b/e2e/paths/02-client/01_create_client.spec.js index bde4203b47..ff2aac6b9f 100644 --- a/e2e/paths/02-client/01_create_client.spec.js +++ b/e2e/paths/02-client/01_create_client.spec.js @@ -29,11 +29,11 @@ describe('Client create path', () => { it('should receive an error when clicking the create button having name and Business name fields empty', async() => { + await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson'); + await page.autocompleteSearch(selectors.createClientView.businessType, 'florist'); await page.write(selectors.createClientView.taxNumber, '74451390E'); await page.write(selectors.createClientView.userName, 'CaptainMarvel'); await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es'); - await page.autocompleteSearch(selectors.createClientView.salesPerson, 'salesPerson'); - await page.autocompleteSearch(selectors.createClientView.businessType, 'florist'); await page.waitToClick(selectors.createClientView.createButton); const message = await page.waitForSnackbar(); @@ -83,7 +83,6 @@ describe('Client create path', () => { expect(message.text).toContain('Some fields are invalid'); }); - /* Tarea #3370 it(`should attempt to create a new user with all it's data but wrong business type`, async() => { await page.clearInput(selectors.createClientView.email); await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es'); @@ -91,13 +90,10 @@ describe('Client create path', () => { await page.waitToClick(selectors.createClientView.createButton); const message = await page.waitForSnackbar(); - expect(message.text).toContain('Some fields are invalid'); - });*/ + expect(message.text).toContain('The type of business must be filled in basic data'); + }); it(`should attempt to create a new user with all it's data but wrong postal code`, async() => { - await page.clearInput(selectors.createClientView.email); - await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es'); - await page.autocompleteSearch(selectors.createClientView.businessType, 'florist'); await page.clearInput(selectors.createClientView.postcode); await page.write(selectors.createClientView.postcode, '479999'); diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 271c3fd4f2..15c65fd89a 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -118,5 +118,6 @@ "reference duplicated": "reference duplicated", "The PDF document does not exists": "The PDF document does not exists. Try regenerating it from 'Regenerate invoice PDF' option", "This item is not available": "This item is not available", - "Deny buy request": "Purchase request for ticket id [{{ticketId}}]({{{url}}}) has been rejected. Reason: {{observation}}" + "Deny buy request": "Purchase request for ticket id [{{ticketId}}]({{{url}}}) has been rejected. Reason: {{observation}}", + "The type of business must be filled in basic data": "The type of business must be filled in basic data" } \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index afa349684f..4a5448d34c 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -133,7 +133,7 @@ "reserved": "reservado", "Changed sale reserved state": "He cambiado el estado reservado de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}", "Bought units from buy request": "Se ha comprado {{quantity}} unidades de [{{itemId}} {{concept}}]({{{urlItem}}}) para el ticket id [{{ticketId}}]({{{url}}})", - "Deny buy request":"Se ha rechazado la petición de compra para el ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}", + "Deny buy request": "Se ha rechazado la petición de compra para el ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}", "MESSAGE_INSURANCE_CHANGE": "He cambiado el crédito asegurado del cliente [{{clientName}} ({{clientId}})]({{{url}}}) a *{{credit}} €*", "Changed client paymethod": "He cambiado la forma de pago del cliente [{{clientName}} ({{clientId}})]({{{url}}})", "Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})", @@ -211,5 +211,6 @@ "Can't verify data unless the client has a business type": "No se puede verificar datos de un cliente que no tiene tipo de negocio", "You don't have enough privileges to set this credit amount": "No tienes suficientes privilegios para establecer esta cantidad de crédito", "You can't change the credit set to zero from a manager": "No puedes cambiar el cŕedito establecido a cero por un gerente", - "The PDF document does not exists": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'" + "The PDF document does not exists": "El documento PDF no existe. Prueba a regenerarlo desde la opción 'Regenerar PDF factura'", + "The type of business must be filled in basic data": "El tipo de negocio debe estar rellenado en datos básicos" } \ No newline at end of file diff --git a/modules/client/back/models/client.js b/modules/client/back/models/client.js index 4cac16358f..f3591750da 100644 --- a/modules/client/back/models/client.js +++ b/modules/client/back/models/client.js @@ -55,6 +55,15 @@ module.exports = Self => { with: /^[\w|.|-]+@[\w|-]+(\.[\w|-]+)*(,[\w|.|-]+@[\w|-]+(\.[\w|-]+)*)*$/ }); + Self.validate('businessTypeFk', hasBusinessType, { + message: `The type of business must be filled in basic data` + }); + + function hasBusinessType(err) { + if (!this.businessTypeFk) + err(); + } + Self.validatesLengthOf('postcode', { allowNull: true, allowBlank: true, diff --git a/modules/client/front/create/locale/es.yml b/modules/client/front/create/locale/es.yml index 6922ba917b..31b7cd4037 100644 --- a/modules/client/front/create/locale/es.yml +++ b/modules/client/front/create/locale/es.yml @@ -7,4 +7,5 @@ Create and edit: Crear y editar You can save multiple emails: >- Puede guardar varios correos electrónicos encadenándolos mediante comas sin espacios, ejemplo: user@dominio.com, user2@dominio.com siendo el primer - correo electrónico el principal \ No newline at end of file + correo electrónico el principal +The type of business must be filled in basic data: El tipo de negocio debe estar rellenado en datos básicos From 5d2693f949ab465d84e5c584303ddef4b2938931 Mon Sep 17 00:00:00 2001 From: joan Date: Thu, 18 Nov 2021 12:23:21 +0100 Subject: [PATCH 18/25] Updated latest buys icon --- modules/entry/front/routes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/entry/front/routes.json b/modules/entry/front/routes.json index 37dda7584c..3b2a8f146d 100644 --- a/modules/entry/front/routes.json +++ b/modules/entry/front/routes.json @@ -7,7 +7,7 @@ "menus": { "main": [ {"state": "entry.index", "icon": "icon-entry"}, - {"state": "entry.latestBuys", "icon": "contact_support"} + {"state": "entry.latestBuys", "icon": "icon-lastBuy"} ], "card": [ {"state": "entry.card.basicData", "icon": "settings"}, From 924e6d063d92cbebb5313a631ef7b54563438631 Mon Sep 17 00:00:00 2001 From: carlosjr Date: Thu, 18 Nov 2021 12:42:31 +0100 Subject: [PATCH 19/25] moved getBalance modifications to correct version --- .../00-item_getBalance.sql | 0 db/dump/fixtures.sql | 34 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) rename db/changes/{10370-pickles => 10390-constitution}/00-item_getBalance.sql (100%) diff --git a/db/changes/10370-pickles/00-item_getBalance.sql b/db/changes/10390-constitution/00-item_getBalance.sql similarity index 100% rename from db/changes/10370-pickles/00-item_getBalance.sql rename to db/changes/10390-constitution/00-item_getBalance.sql diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index d52c5beef0..b460561358 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -798,23 +798,23 @@ INSERT INTO `vn`.`itemFamily`(`code`, `description`) INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenceFk`, `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`, `isFloramondo`) VALUES - (1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT', 0), - (2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT', 0), - (3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT', 0), - (4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT', 0), - (5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT', 0), - (6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT', 0), - (7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT', 0), - (8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT', 0), - (9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT', 0), - (10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT', 0), - (11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT', 0), - (12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT', 0), - (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT', 1), - (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT', 1), - (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0), - (16, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0), - (71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT', 0); + (1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT', 0), + (2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT', 0), + (3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT', 0), + (4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT', 0), + (5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT', 0), + (6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT', 0), + (7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT', 0), + (8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT', 0), + (9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT', 0), + (10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT', 0), + (11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT', 0), + (12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT', 0), + (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT', 1), + (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT', 1), + (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0), + (16, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0), + (71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT', 0); -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 From c98730e6b9b673682bac66ddea9974164fb6f652 Mon Sep 17 00:00:00 2001 From: joan Date: Thu, 18 Nov 2021 14:00:45 +0100 Subject: [PATCH 20/25] Updated styles --- front/core/components/calendar/style.scss | 4 ++-- front/core/components/chip/style.scss | 2 +- front/core/components/smart-table/table.scss | 2 +- front/core/components/table/style.scss | 2 +- front/core/directives/no-image-dark.png | Bin 0 -> 6990 bytes front/core/directives/on-error-src.js | 2 +- front/core/styles/variables.scss | 6 +++--- modules/worker/front/calendar/style.scss | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 front/core/directives/no-image-dark.png diff --git a/front/core/components/calendar/style.scss b/front/core/components/calendar/style.scss index aecc3eecbc..6a7995ea5f 100644 --- a/front/core/components/calendar/style.scss +++ b/front/core/components/calendar/style.scss @@ -86,12 +86,12 @@ align-items: center; &.today { - color: $color-font-bg; + color: $color-font; & > .day-number { border: 2px solid $color-font-link; &:hover { - background-color: lighten($color-font-link, 20%); + background-color: $color-marginal; opacity: .8 } } diff --git a/front/core/components/chip/style.scss b/front/core/components/chip/style.scss index d1632890c6..cc0554509d 100644 --- a/front/core/components/chip/style.scss +++ b/front/core/components/chip/style.scss @@ -50,7 +50,7 @@ vn-chip { &.alert, &.alert.clickable:hover, &.alert.clickable:focus { - background-color: $color-alert-medium; + background-color: lighten($color-alert, 5%); } &.message, &.message.clickable:hover, diff --git a/front/core/components/smart-table/table.scss b/front/core/components/smart-table/table.scss index 8555340116..21ac20c811 100644 --- a/front/core/components/smart-table/table.scss +++ b/front/core/components/smart-table/table.scss @@ -90,7 +90,7 @@ smart-table table { color: $color-font-bg; } &.alert { - background-color: $color-alert-medium; + background-color: lighten($color-alert, 5%); color: $color-font-bg; } &.message { diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index edb40d385b..b1ff51d6ad 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -146,7 +146,7 @@ vn-table { color: $color-font-bg; } &.alert { - background-color: $color-alert-medium; + background-color: lighten($color-alert, 5%); color: $color-font-bg; } &.message { diff --git a/front/core/directives/no-image-dark.png b/front/core/directives/no-image-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..f94f961697c229ee77d19e9a23ddc88382db8b43 GIT binary patch literal 6990 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 Date: Thu, 18 Nov 2021 14:07:05 +0100 Subject: [PATCH 21/25] Updated dark image --- front/core/directives/no-image-dark.png | Bin 6990 -> 7038 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/front/core/directives/no-image-dark.png b/front/core/directives/no-image-dark.png index f94f961697c229ee77d19e9a23ddc88382db8b43..2a20d7eb4970509bc5f8e9a2bb2b5d33fee3c260 100644 GIT binary patch literal 7038 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 literal 6990 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 Date: Thu, 18 Nov 2021 14:27:05 +0100 Subject: [PATCH 22/25] feat(ticket): default ticketAction for salesAssistant --- modules/ticket/front/basic-data/step-two/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/ticket/front/basic-data/step-two/index.js b/modules/ticket/front/basic-data/step-two/index.js index ebb93bb3d1..7ffdb8315d 100644 --- a/modules/ticket/front/basic-data/step-two/index.js +++ b/modules/ticket/front/basic-data/step-two/index.js @@ -23,7 +23,9 @@ class Controller extends Component { } loadDefaultTicketAction() { - let filter = {where: {code: 'changePrice'}}; + const isSalesAssistant = this.aclService.hasAny(['salesAssistant']); + const defaultOption = isSalesAssistant ? 'turnInMana' : 'changePrice'; + const filter = {where: {code: defaultOption}}; this.$http.get(`TicketUpdateActions`, {filter}).then(response => { return this.ticket.option = response.data[0].id; From 3eb7b4cf552d8a648edc3508fd05b3bb445c6bed Mon Sep 17 00:00:00 2001 From: carlosjr Date: Thu, 18 Nov 2021 14:49:05 +0100 Subject: [PATCH 23/25] refactor(item.filter): buildFilter switch refactor --- modules/item/back/methods/item/filter.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js index 4edb16d3da..29099c7ec2 100644 --- a/modules/item/back/methods/item/filter.js +++ b/modules/item/back/methods/item/filter.js @@ -109,13 +109,13 @@ module.exports = Self => { ? {or: [{'i.id': value}, codeWhere]} : {or: [{'i.name': {like: `%${value}%`}}, codeWhere]}; case 'id': - return {'i.id': value}; case 'isActive': - return {'i.isActive': value}; + case 'typeFk': + case 'isFloramondo': + param = `i.${param}`; + return {[param]: value}; case 'multiplier': return {'i.stemMultiplier': value}; - case 'typeFk': - return {'i.typeFk': value}; case 'categoryFk': return {'ic.id': value}; case 'buyerFk': @@ -126,8 +126,6 @@ module.exports = Self => { return {'intr.description': value}; case 'landed': return {'lb.landed': value}; - case 'isFloramondo': - return {'i.isFloramondo': value}; } }); From 9c5939b66180a68fa595ba403582d347f112fa37 Mon Sep 17 00:00:00 2001 From: joan Date: Thu, 18 Nov 2021 16:02:47 +0100 Subject: [PATCH 24/25] Updated styles --- front/core/components/field/style.scss | 4 ++-- front/core/components/smart-table/table.scss | 6 +++--- front/core/components/table/style.scss | 8 ++++---- front/core/styles/variables.scss | 4 +++- front/salix/components/summary/style.scss | 6 +++--- front/salix/styles/misc.scss | 2 +- modules/entry/front/summary/style.scss | 6 +++--- modules/monitor/front/index/orders/style.scss | 2 +- modules/monitor/front/index/style.scss | 2 +- modules/worker/front/calendar/style.scss | 5 ++--- 10 files changed, 23 insertions(+), 22 deletions(-) diff --git a/front/core/components/field/style.scss b/front/core/components/field/style.scss index c611773e35..399122b1d0 100644 --- a/front/core/components/field/style.scss +++ b/front/core/components/field/style.scss @@ -226,7 +226,7 @@ & > .container { & > .infix > .control > * { - color: $color-font; + color: $color-marginal; &::placeholder { color: $color-font-bg; @@ -235,7 +235,7 @@ & > .prepend, & > .append, & > .icons { - color: $color-font-bg-marginal; + color: $color-marginal; } } } diff --git a/front/core/components/smart-table/table.scss b/front/core/components/smart-table/table.scss index 21ac20c811..b38ca7d824 100644 --- a/front/core/components/smart-table/table.scss +++ b/front/core/components/smart-table/table.scss @@ -6,14 +6,14 @@ smart-table table { border-collapse: collapse; & > thead { - border-bottom: 2px solid $color-spacer; + border-bottom: $border; & > * > th { font-weight: normal; } } & > tfoot { - border-top: 2px solid $color-spacer; + border-top: $border; } thead, tbody, tfoot { & > * { @@ -67,7 +67,7 @@ smart-table table { } } tbody > * { - border-bottom: 1px solid $color-spacer-light; + border-bottom: $border-thin; &:last-child { border-bottom: none; diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index b1ff51d6ad..28d5a4f363 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -14,7 +14,7 @@ vn-table { & > vn-thead, & > thead { display: table-header-group; - border-bottom: 2px solid $color-spacer; + border-bottom: $border; & > * > th { font-weight: normal; @@ -32,7 +32,7 @@ vn-table { & > vn-tfoot, & > .vn-tfoot, & > tfoot { - border-top: 2px solid $color-spacer; + border-top: $border; display: table-footer-group } & > * > vn-tr, @@ -119,7 +119,7 @@ vn-table { vn-tbody > *, .vn-tbody > *, tbody > * { - border-bottom: 1px solid $color-spacer-light; + border-bottom: $border-thin; &:last-child { border-bottom: none; @@ -197,7 +197,7 @@ vn-table.scrollable > .vn-table, vn-thead vn-th, thead vn-th, thead th { - border-bottom: 2px solid $color-spacer; + border-bottom: $border; background-color: $color-bg-panel; position: sticky; z-index: 9; diff --git a/front/core/styles/variables.scss b/front/core/styles/variables.scss index bd00c9a072..c79a8590fb 100644 --- a/front/core/styles/variables.scss +++ b/front/core/styles/variables.scss @@ -108,6 +108,7 @@ $color-spacer-light: rgba(255, 255, 255, .12); $color-input-underline: rgba(255, 255, 255, .12); $color-input-underline-hover: rgba(255, 255, 255, .6); $color-shadow: rgba(0, 0, 0, .2); +$color-border: rgba(0, 0, 0, .3); $color-hightlight: rgba(255, 255, 255, .15); $color-hover-cd: rgba(255, 255, 255, .1); $color-hover-dc: .7; @@ -129,6 +130,7 @@ $color-alert-light: lighten($color-alert, 35%); // Border -$border-thin: 1px solid $color-spacer; +$border-thin: 1px solid $color-border; $border-thin-light: 1px solid $color-spacer-light; +$border: 2px solid $color-border; $shadow: 0 2px 2px 0 rgba(0, 0, 0, .3); diff --git a/front/salix/components/summary/style.scss b/front/salix/components/summary/style.scss index 2db3d961e0..6f93a61bfe 100644 --- a/front/salix/components/summary/style.scss +++ b/front/salix/components/summary/style.scss @@ -65,10 +65,10 @@ ui-view > .vn-summary { text-transform: uppercase; font-size: 1.25rem; line-height: 1; - padding: 7px; - padding-bottom: 4px; /* Bottom line-height fix */ + padding: 7px 0; + padding-bottom: 5px; /* Bottom line-height fix */ font-weight: lighter; - border-bottom: 1px solid $color-main; + border-bottom: 2px solid $color-main; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; diff --git a/front/salix/styles/misc.scss b/front/salix/styles/misc.scss index 55de5eb0c2..02bfd9f175 100644 --- a/front/salix/styles/misc.scss +++ b/front/salix/styles/misc.scss @@ -60,7 +60,7 @@ vn-bg-title { font-size: 1.25rem; } .totalBox { - border: 1px solid #CCC; + border: $border-thin; text-align: right; justify-content: center; align-items: center; diff --git a/modules/entry/front/summary/style.scss b/modules/entry/front/summary/style.scss index 1e3d3d4824..1d5b22e303 100644 --- a/modules/entry/front/summary/style.scss +++ b/modules/entry/front/summary/style.scss @@ -9,13 +9,13 @@ vn-entry-summary .summary { } tbody tr:nth-child(1) { - border-top: 1px solid $color-spacer; + border-top: $border-thin; } tbody tr:nth-child(1), tbody tr:nth-child(2) { - border-left: 1px solid $color-spacer; - border-right: 1px solid $color-spacer + border-left: $border-thin; + border-right: $border-thin } tbody tr:nth-child(3) { diff --git a/modules/monitor/front/index/orders/style.scss b/modules/monitor/front/index/orders/style.scss index d9d50360e4..64d6497c90 100644 --- a/modules/monitor/front/index/orders/style.scss +++ b/modules/monitor/front/index/orders/style.scss @@ -11,7 +11,7 @@ vn-monitor-sales-orders { color: gray; & > vn-td { - border-bottom: 2px solid $color-spacer; + border-bottom: $border; font-size: 13px; } } diff --git a/modules/monitor/front/index/style.scss b/modules/monitor/front/index/style.scss index 9eda945b56..2b193ac885 100644 --- a/modules/monitor/front/index/style.scss +++ b/modules/monitor/front/index/style.scss @@ -6,7 +6,7 @@ vn-monitor-index { padding: 12px 0 5px 0; color: gray; font-size: 1.2rem; - border-bottom: 2px solid $color-font-secondary; + border-bottom: $border; margin-bottom: 10px; & > vn-none > vn-icon { diff --git a/modules/worker/front/calendar/style.scss b/modules/worker/front/calendar/style.scss index d65c80833a..d92c54806f 100644 --- a/modules/worker/front/calendar/style.scss +++ b/modules/worker/front/calendar/style.scss @@ -11,7 +11,7 @@ vn-worker-calendar { padding: $spacing-md; & > vn-calendar { - border: 1px solid #ddd; + border: $border-thin; margin: $spacing-md; padding: $spacing-xs; max-width: 288px; @@ -38,8 +38,7 @@ vn-worker-calendar { } vn-side-menu div > .input { - border-color: rgba(0, 0, 0, 0.3); - border-bottom: 1px solid rgba(0, 0, 0, 0.3); + border-bottom: $border-thin; } .festive, From 6fdd752d63b057831cf12a205676b0c202df2c08 Mon Sep 17 00:00:00 2001 From: joan Date: Fri, 19 Nov 2021 10:18:54 +0100 Subject: [PATCH 25/25] Searchbar focus css fix --- front/core/components/field/style.scss | 25 +++++++++++++++++++++++- front/salix/components/layout/style.scss | 9 ++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/front/core/components/field/style.scss b/front/core/components/field/style.scss index 399122b1d0..ceaeda40ab 100644 --- a/front/core/components/field/style.scss +++ b/front/core/components/field/style.scss @@ -116,6 +116,7 @@ &:active, &:valid { box-shadow: 0 0 0 40px $color-bg-panel inset; + -webkit-text-fill-color: $color-primary-medium } } } @@ -198,7 +199,7 @@ } &.standout { border-radius: 1px; - background-color: rgba(255, 255, 255, .1); + background-color: rgba(161, 161, 161, 0.1); padding: 0 12px; transition-property: background-color, color; transition-duration: 200ms; @@ -208,6 +209,17 @@ & > .underline { display: none; } + & > .infix > .control > input { + &:-internal-autofill-selected { + &, + &:hover, + &:active, + &:valid { + box-shadow: 0 0 0 40px #474747 inset; + -webkit-text-fill-color: $color-font-dark + } + } + } & > .infix > .control > * { color: $color-font-dark; @@ -225,6 +237,17 @@ background-color: $color-font-dark; & > .container { + & > .infix > .control > input { + &:-internal-autofill-selected { + &, + &:hover, + &:active, + &:valid { + box-shadow: 0 0 0 40px $color-font-dark inset; + -webkit-text-fill-color: $color-font-bg + } + } + } & > .infix > .control > * { color: $color-marginal; diff --git a/front/salix/components/layout/style.scss b/front/salix/components/layout/style.scss index aa35f8d14e..36522bc3a1 100644 --- a/front/salix/components/layout/style.scss +++ b/front/salix/components/layout/style.scss @@ -23,9 +23,12 @@ vn-layout { padding-right: 16px; overflow: hidden; - & > .logo > img { - height: 32px; - display: block; + & > .logo { + outline: 0; + & > img { + height: 32px; + display: block; + } } & > .main-title { font-size: 1.56rem;