From d1214a998abd7636d862f0813634412f944ef184 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Thu, 6 Jun 2024 07:01:55 +0200 Subject: [PATCH 01/24] feat: login refs #6868 --- .../account/back/methods/account/login-app.js | 88 +++++++++++++++++++ modules/account/back/models/account.js | 1 + 2 files changed, 89 insertions(+) create mode 100644 modules/account/back/methods/account/login-app.js diff --git a/modules/account/back/methods/account/login-app.js b/modules/account/back/methods/account/login-app.js new file mode 100644 index 0000000000..18543f90e9 --- /dev/null +++ b/modules/account/back/methods/account/login-app.js @@ -0,0 +1,88 @@ +const {setDefaultHighWaterMark} = require('form-data'); +const {setLocale} = require('i18n'); + +module.exports = Self => { + Self.remoteMethodCtx('loginApp', { + description: 'Login a user with username/email and password', + accepts: [ + { + arg: 'user', + type: 'String', + description: 'The user name or email', + required: true + }, { + arg: 'password', + type: 'String', + description: 'The password' + }, { + arg: 'deviceId', + type: 'String', + description: 'Device id' + }, { + arg: 'android_id', + type: 'String', + description: 'Android id' + }, { + arg: 'versionApp', + type: 'String', + description: 'Version app' + }, { + arg: 'nameApp', + type: 'String', + description: 'Version app' + }, { + arg: 'serialNumber', + type: 'String', + description: 'Serial number' + } + + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/loginApp`, + verb: 'POST' + } + }); + + Self.loginApp = async(ctx, user, password, deviceId, android_id, versionApp, nameApp, options) => { + const models = Self.app.models; + + const login = await Self.app.models.VnUser.signIn(ctx, user, password, options); + + const userId = login.user; + + const query = + `INSERT IGNORE INTO operator (workerFk) + VALUES (?);`; + + const insertOperator = await Self.rawSql(query, [userId], options); + + const [serialNumber] = await models.DeviceProductionUser.findOne({ + where: {id: '100'} + }); + + const insertDeviceLog = await models.DeviceLog.create( + { + 'android_id': android_id, + 'userFk': userId, + 'versionApp': versionApp, + 'nameApp': nameApp, + 'serialNumber': [serialNumber] + }, + options + ); + + const queryDeviceCheck = + `CALL device_checkLogin(?, ?)`; + + const [queryDeviceCheckLogin] = await Self.rawSql(queryDeviceCheck, [userId, android_id], options); + + if (!queryDeviceCheckLogin.vIsAuthorized) + throw new UserError('User not authorized'); + + return insertDeviceLog; + }; +}; diff --git a/modules/account/back/models/account.js b/modules/account/back/models/account.js index ceb26053c6..f89d3079e5 100644 --- a/modules/account/back/models/account.js +++ b/modules/account/back/models/account.js @@ -10,6 +10,7 @@ module.exports = Self => { require('../methods/account/logout')(Self); require('../methods/account/change-password')(Self); require('../methods/account/set-password')(Self); + require('../methods/account/login-app')(Self); Self.setUnverifiedPassword = async(id, pass, options) => { const {emailVerified} = await models.VnUser.findById(id, {fields: ['emailVerified']}, options); From 5c3ce40bbdfba57fa06f7b86f0cf4eebf23484bb Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 11 Jun 2024 07:12:47 +0200 Subject: [PATCH 02/24] feat login-app refs #6868 --- .../account/back/methods/account/login-app.js | 54 ++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/modules/account/back/methods/account/login-app.js b/modules/account/back/methods/account/login-app.js index 18543f90e9..3ade88fb84 100644 --- a/modules/account/back/methods/account/login-app.js +++ b/modules/account/back/methods/account/login-app.js @@ -49,40 +49,44 @@ module.exports = Self => { Self.loginApp = async(ctx, user, password, deviceId, android_id, versionApp, nameApp, options) => { const models = Self.app.models; + const myOptions = {}; + if (typeof options == 'object') + Object.assign(myOptions, options); - const login = await Self.app.models.VnUser.signIn(ctx, user, password, options); + await models.Account.login(ctx, user, password, myOptions); - const userId = login.user; + const userId = ctx.req.accessToken.userId; - const query = - `INSERT IGNORE INTO operator (workerFk) - VALUES (?);`; + const isUserInOperator = await models.Operator.findById(userId); + if (!isUserInOperator) + await models.Operator.create({'workerFk': userId}); - const insertOperator = await Self.rawSql(query, [userId], options); + const device = await models.DeviceProduction.findById(deviceId); - const [serialNumber] = await models.DeviceProductionUser.findOne({ - where: {id: '100'} - }); + // const [serialNumber] = await models.DeviceProductionUser.findOne({ + // where: {id: '100'} + // }); - const insertDeviceLog = await models.DeviceLog.create( - { - 'android_id': android_id, - 'userFk': userId, - 'versionApp': versionApp, - 'nameApp': nameApp, - 'serialNumber': [serialNumber] - }, - options - ); + // const insertDeviceLog = await models.DeviceLog.create( + // { + // 'android_id': android_id, + // 'userFk': userId, + // 'versionApp': versionApp, + // 'nameApp': nameApp, + // 'serialNumber': [serialNumber] + // }, + // options + // ); - const queryDeviceCheck = - `CALL device_checkLogin(?, ?)`; + // const queryDeviceCheck = + // `CALL device_checkLogin(?, ?)`; - const [queryDeviceCheckLogin] = await Self.rawSql(queryDeviceCheck, [userId, android_id], options); + // const [queryDeviceCheckLogin] = await Self.rawSql(queryDeviceCheck, [userId, android_id], options); - if (!queryDeviceCheckLogin.vIsAuthorized) - throw new UserError('User not authorized'); + // if (!queryDeviceCheckLogin.vIsAuthorized) + // throw new UserError('User not authorized'); - return insertDeviceLog; + // return insertDeviceLog; + return []; }; }; From 52b82603d22d4214282eaa216945423d6274ca86 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Thu, 13 Jun 2024 10:40:37 +0200 Subject: [PATCH 03/24] feat login-app refs #6868 --- .../account/back/methods/account/login-app.js | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/modules/account/back/methods/account/login-app.js b/modules/account/back/methods/account/login-app.js index 3ade88fb84..5392f8eb2a 100644 --- a/modules/account/back/methods/account/login-app.js +++ b/modules/account/back/methods/account/login-app.js @@ -1,5 +1,4 @@ -const {setDefaultHighWaterMark} = require('form-data'); -const {setLocale} = require('i18n'); +const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('loginApp', { @@ -53,20 +52,55 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - await models.Account.login(ctx, user, password, myOptions); + const login = await models.Account.login(ctx, user, password, myOptions); const userId = ctx.req.accessToken.userId; - const isUserInOperator = await models.Operator.findById(userId); - if (!isUserInOperator) - await models.Operator.create({'workerFk': userId}); + const resultCheckLogin = + await Self.rawSql('CALL vn.device_checkLogin(?, ?);', + [userId, android_id], myOptions); - const device = await models.DeviceProduction.findById(deviceId); + const [{vIsAuthorized, vMessage}] = resultCheckLogin[0]; - // const [serialNumber] = await models.DeviceProductionUser.findOne({ - // where: {id: '100'} - // }); + if (!vIsAuthorized) + throw new UserError('Not authorized'); + const isUserInOperator = await models.Operator.findOne({ + where: { + workerFk: userId + } + }); + + if (!isUserInOperator){ + await models.Operator.create({ 'workerFk': userId }); + + const getDataUser = await models.Operator.findOne({ + where: { + workerFk: userId + } + }); + + const resultDevice = await models.DeviceProduction.findOne({ + where: { + android_id: android_id + } + }); + + if (resultDevice) + serialNumber = resultDevice.serialNumber ?? ''; + + await models.DeviceLog.create({ + 'android_id': android_id, + 'userFk': userId, + 'nameApp': nameApp, + 'versionApp': versionApp, + 'serialNumber': serialNumber + }); + + + + console.log(vIsAuthorized); + console.log(vMessage); // const insertDeviceLog = await models.DeviceLog.create( // { // 'android_id': android_id, From 9d5d62afafd846b2f64989a24fb10f1d594964ed Mon Sep 17 00:00:00 2001 From: sergiodt Date: Mon, 17 Jun 2024 13:56:58 +0200 Subject: [PATCH 04/24] feat newLogin refs #6868 --- .../account/back/methods/account/login-app.js | 111 +++++++++--------- .../methods/account/specs/login-app.spec.js | 20 ++++ modules/account/back/models/account.json | 9 +- 3 files changed, 82 insertions(+), 58 deletions(-) create mode 100644 modules/account/back/methods/account/specs/login-app.spec.js diff --git a/modules/account/back/methods/account/login-app.js b/modules/account/back/methods/account/login-app.js index 5392f8eb2a..b18226bd28 100644 --- a/modules/account/back/methods/account/login-app.js +++ b/modules/account/back/methods/account/login-app.js @@ -2,23 +2,20 @@ const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.remoteMethodCtx('loginApp', { - description: 'Login a user with username/email and password', + description: 'Login a user with username and password for app', accepts: [ { arg: 'user', type: 'String', - description: 'The user name or email', + description: 'The user name', required: true }, { arg: 'password', type: 'String', + required: true, description: 'The password' }, { - arg: 'deviceId', - type: 'String', - description: 'Device id' - }, { - arg: 'android_id', + arg: 'androidId', type: 'String', description: 'Android id' }, { @@ -29,11 +26,7 @@ module.exports = Self => { arg: 'nameApp', type: 'String', description: 'Version app' - }, { - arg: 'serialNumber', - type: 'String', - description: 'Serial number' - } + }, ], returns: { @@ -46,7 +39,7 @@ module.exports = Self => { } }); - Self.loginApp = async(ctx, user, password, deviceId, android_id, versionApp, nameApp, options) => { + Self.loginApp = async(ctx, user, password, android_id, versionApp, nameApp, options) => { const models = Self.app.models; const myOptions = {}; if (typeof options == 'object') @@ -54,14 +47,16 @@ module.exports = Self => { const login = await models.Account.login(ctx, user, password, myOptions); - const userId = ctx.req.accessToken.userId; + const {id: userId} = await models.VnUser.findOne({ + where: { + name: user + } + }); - const resultCheckLogin = + const [[{vIsAuthorized, vMessage}]] = await Self.rawSql('CALL vn.device_checkLogin(?, ?);', [userId, android_id], myOptions); - const [{vIsAuthorized, vMessage}] = resultCheckLogin[0]; - if (!vIsAuthorized) throw new UserError('Not authorized'); @@ -69,25 +64,14 @@ module.exports = Self => { where: { workerFk: userId } - }); + }, myOptions); - if (!isUserInOperator){ - await models.Operator.create({ 'workerFk': userId }); - - const getDataUser = await models.Operator.findOne({ - where: { - workerFk: userId - } - }); + if (!isUserInOperator) + await models.Operator.create({'workerFk': userId}); - const resultDevice = await models.DeviceProduction.findOne({ - where: { - android_id: android_id - } - }); - - if (resultDevice) - serialNumber = resultDevice.serialNumber ?? ''; + const serialNumber = (await models.DeviceProduction.findOne({ + where: {android_id: android_id} + }, myOptions))?.serialNumber ?? ''; await models.DeviceLog.create({ 'android_id': android_id, @@ -95,32 +79,45 @@ module.exports = Self => { 'nameApp': nameApp, 'versionApp': versionApp, 'serialNumber': serialNumber - }); + }, myOptions); + ctx.req.accessToken = {userId}; + const getDataUser = await models.VnUser.getCurrentUserData(ctx); - + const getDataOperator = await models.Operator.findOne({ + where: {workerFk: userId}, + fields: ['numberOfWagons', 'warehouseFk', 'itemPackingTypeFk', 'sectorFk', 'sector', + 'trainFk', 'train', 'labelerFk', 'printer'], + include: [ + { + relation: 'sector', + scope: { + fields: ['warehouseFk', 'description'], + } + }, { + relation: 'printer', + scope: { + fields: ['name'], + } + }, { + relation: 'train', + scope: { + fields: ['name'], + } + } - console.log(vIsAuthorized); - console.log(vMessage); - // const insertDeviceLog = await models.DeviceLog.create( - // { - // 'android_id': android_id, - // 'userFk': userId, - // 'versionApp': versionApp, - // 'nameApp': nameApp, - // 'serialNumber': [serialNumber] - // }, - // options - // ); + ] + }, myOptions); - // const queryDeviceCheck = - // `CALL device_checkLogin(?, ?)`; + const getVersion = await models.MobileAppVersionControl.getVersion(ctx, nameApp); - // const [queryDeviceCheckLogin] = await Self.rawSql(queryDeviceCheck, [userId, android_id], options); - - // if (!queryDeviceCheckLogin.vIsAuthorized) - // throw new UserError('User not authorized'); - - // return insertDeviceLog; - return []; + const combinedResult = { + ...login, + ...getDataOperator.__data, + ...getDataUser.__data, + ...getVersion, + message: vMessage, + serialNumber, + }; + return combinedResult; }; }; diff --git a/modules/account/back/methods/account/specs/login-app.spec.js b/modules/account/back/methods/account/specs/login-app.spec.js new file mode 100644 index 0000000000..527429435f --- /dev/null +++ b/modules/account/back/methods/account/specs/login-app.spec.js @@ -0,0 +1,20 @@ +const {models} = require('vn-loopback/server/server'); + +describe('Account loginApp()', () => { + fit('should throw an error when user/password is wrong', async() => { + let req = models.Account.loginApp('user', 'pass'); + + await expectAsync(req).toBeRejected(); + }); + + fit('should return data from user', async() => { + let user = 'employee'; + let password = 'nightmare'; + let androidId = 'androidid11234567890'; + let nameApp = 'warehouse'; + let versionApp = '10'; + + let req = models.Account.loginApp(user, password, androidId, nameApp, versionApp); + await expectAsync(req).toBeResolved(); + }); +}); diff --git a/modules/account/back/models/account.json b/modules/account/back/models/account.json index 6c27846966..466b2bc042 100644 --- a/modules/account/back/models/account.json +++ b/modules/account/back/models/account.json @@ -31,6 +31,13 @@ "principalId": "$everyone", "permission": "ALLOW" }, + { + "property": "loginApp", + "accessType": "EXECUTE", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }, { "property": "logout", "accessType": "EXECUTE", @@ -46,4 +53,4 @@ "permission": "ALLOW" } ] -} +} \ No newline at end of file From 0ab620b4854006a36882dcbc683fd759a94a2860 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Mon, 17 Jun 2024 16:50:00 +0200 Subject: [PATCH 05/24] feat newLogin refs #6868 --- modules/account/back/methods/account/login-app.js | 1 + modules/account/back/methods/account/specs/login-app.spec.js | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/account/back/methods/account/login-app.js b/modules/account/back/methods/account/login-app.js index b18226bd28..dc2708cbfc 100644 --- a/modules/account/back/methods/account/login-app.js +++ b/modules/account/back/methods/account/login-app.js @@ -1,3 +1,4 @@ +const {ConsoleMessage} = require('puppeteer'); const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { diff --git a/modules/account/back/methods/account/specs/login-app.spec.js b/modules/account/back/methods/account/specs/login-app.spec.js index 527429435f..90ce39f686 100644 --- a/modules/account/back/methods/account/specs/login-app.spec.js +++ b/modules/account/back/methods/account/specs/login-app.spec.js @@ -1,8 +1,9 @@ const {models} = require('vn-loopback/server/server'); describe('Account loginApp()', () => { + const ctx = {req: {accessToken: {}}}; fit('should throw an error when user/password is wrong', async() => { - let req = models.Account.loginApp('user', 'pass'); + let req = models.Account.loginApp(ctx, 'user', 'pass', 'androidid11234567890', 'warehouse', '10'); await expectAsync(req).toBeRejected(); }); @@ -14,7 +15,7 @@ describe('Account loginApp()', () => { let nameApp = 'warehouse'; let versionApp = '10'; - let req = models.Account.loginApp(user, password, androidId, nameApp, versionApp); + let req = models.Account.loginApp(ctx, user, password, androidId, nameApp, versionApp); await expectAsync(req).toBeResolved(); }); }); From c6da9e72e022c4101247b019887414b44c902693 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Mon, 17 Jun 2024 16:53:06 +0200 Subject: [PATCH 06/24] feat newLogin refs #6868 --- modules/account/back/methods/account/login-app.js | 2 +- .../back/methods/account/specs/login-app.spec.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/account/back/methods/account/login-app.js b/modules/account/back/methods/account/login-app.js index dc2708cbfc..83c727f1a1 100644 --- a/modules/account/back/methods/account/login-app.js +++ b/modules/account/back/methods/account/login-app.js @@ -1,4 +1,4 @@ -const {ConsoleMessage} = require('puppeteer'); + const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { diff --git a/modules/account/back/methods/account/specs/login-app.spec.js b/modules/account/back/methods/account/specs/login-app.spec.js index 90ce39f686..fc05cd726a 100644 --- a/modules/account/back/methods/account/specs/login-app.spec.js +++ b/modules/account/back/methods/account/specs/login-app.spec.js @@ -3,19 +3,19 @@ const {models} = require('vn-loopback/server/server'); describe('Account loginApp()', () => { const ctx = {req: {accessToken: {}}}; fit('should throw an error when user/password is wrong', async() => { - let req = models.Account.loginApp(ctx, 'user', 'pass', 'androidid11234567890', 'warehouse', '10'); + const req = models.Account.loginApp(ctx, 'user', 'pass', 'androidid11234567890', 'warehouse', '10'); await expectAsync(req).toBeRejected(); }); fit('should return data from user', async() => { - let user = 'employee'; - let password = 'nightmare'; - let androidId = 'androidid11234567890'; - let nameApp = 'warehouse'; - let versionApp = '10'; + const user = 'employee'; + const password = 'nightmare'; + const androidId = 'androidid11234567890'; + const nameApp = 'warehouse'; + const versionApp = '10'; - let req = models.Account.loginApp(ctx, user, password, androidId, nameApp, versionApp); + const req = models.Account.loginApp(ctx, user, password, androidId, nameApp, versionApp); await expectAsync(req).toBeResolved(); }); }); From ac0c3b79b4647a51c576cd88b288a03f9975f11e Mon Sep 17 00:00:00 2001 From: sergiodt Date: Mon, 15 Jul 2024 15:51:52 +0200 Subject: [PATCH 07/24] feat createLogin refs #6868 --- .../back/methods/account/handle-user.js | 111 ++++++++++++++++++ modules/account/back/models/account.js | 1 + 2 files changed, 112 insertions(+) create mode 100644 modules/account/back/methods/account/handle-user.js diff --git a/modules/account/back/methods/account/handle-user.js b/modules/account/back/methods/account/handle-user.js new file mode 100644 index 0000000000..18beb17961 --- /dev/null +++ b/modules/account/back/methods/account/handle-user.js @@ -0,0 +1,111 @@ + +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('handleUser', { + description: 'Manage various aspects related to a user with the app', + accepts: [ + { + arg: 'androidId', + type: 'String', + description: 'Android id' + }, { + arg: 'versionApp', + type: 'String', + description: 'Version app' + }, { + arg: 'nameApp', + type: 'String', + description: 'Version app' + }, + + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/handleUser`, + verb: 'POST' + } + }); + + Self.loginApp = async(ctx, android_id, versionApp, nameApp, options) => { + const models = Self.app.models; + const myOptions = {}; + if (typeof options == 'object') + Object.assign(myOptions, options); + + // const login = await models.Account.login(ctx, user, password, myOptions); + + const accessToken = ctx.req.accessToken; + let user = await models.VnUser.findById(accessToken.userId); + console.log(user.id); + + const [[{vIsAuthorized, vMessage}]] = + await Self.rawSql('CALL vn.device_checkLogin(?, ?);', + [user.id, android_id], myOptions); + + if (!vIsAuthorized) + throw new UserError('Not authorized'); + + const isUserInOperator = await models.Operator.findOne({ + where: { + workerFk: user.id + } + }, myOptions); + + if (!isUserInOperator) + await models.Operator.create({'workerFk': user.id}); + + const serialNumber = (await models.DeviceProduction.findOne({ + where: {android_id: android_id} + }, myOptions))?.serialNumber ?? ''; + + await models.DeviceLog.create({ + 'android_id': android_id, + 'userFk': user.id, + 'nameApp': nameApp, + 'versionApp': versionApp, + 'serialNumber': serialNumber + }, myOptions); + // ctx.req.accessToken = {userId}; + const getDataUser = await models.VnUser.getCurrentUserData(ctx); + + const getDataOperator = await models.Operator.findOne({ + where: {workerFk: user.id}, + fields: ['numberOfWagons', 'warehouseFk', 'itemPackingTypeFk', 'sectorFk', 'sector', + 'trainFk', 'train', 'labelerFk', 'printer'], + include: [ + { + relation: 'sector', + scope: { + fields: ['warehouseFk', 'description'], + } + }, { + relation: 'printer', + scope: { + fields: ['name'], + } + }, { + relation: 'train', + scope: { + fields: ['name'], + } + } + + ] + }, myOptions); + + const getVersion = await models.MobileAppVersionControl.getVersion(ctx, nameApp); + + const combinedResult = { + ...getDataOperator.__data, + ...getDataUser.__data, + ...getVersion, + message: vMessage, + serialNumber, + }; + return combinedResult; + }; +}; diff --git a/modules/account/back/models/account.js b/modules/account/back/models/account.js index f89d3079e5..4dd1987d58 100644 --- a/modules/account/back/models/account.js +++ b/modules/account/back/models/account.js @@ -11,6 +11,7 @@ module.exports = Self => { require('../methods/account/change-password')(Self); require('../methods/account/set-password')(Self); require('../methods/account/login-app')(Self); + require('../methods/account/handle-user')(Self); Self.setUnverifiedPassword = async(id, pass, options) => { const {emailVerified} = await models.VnUser.findById(id, {fields: ['emailVerified']}, options); From ae6963c26d9f0d3a5ef4e15661f942b304d34e79 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 16 Jul 2024 08:19:13 +0200 Subject: [PATCH 08/24] feat handleUser refs #6868 --- modules/account/back/methods/account/handle-user.js | 5 +---- modules/account/back/models/account.js | 1 - 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/account/back/methods/account/handle-user.js b/modules/account/back/methods/account/handle-user.js index 18beb17961..136ce48002 100644 --- a/modules/account/back/methods/account/handle-user.js +++ b/modules/account/back/methods/account/handle-user.js @@ -30,17 +30,14 @@ module.exports = Self => { } }); - Self.loginApp = async(ctx, android_id, versionApp, nameApp, options) => { + Self.handleUser = async(ctx, android_id, versionApp, nameApp, options) => { const models = Self.app.models; const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); - // const login = await models.Account.login(ctx, user, password, myOptions); - const accessToken = ctx.req.accessToken; let user = await models.VnUser.findById(accessToken.userId); - console.log(user.id); const [[{vIsAuthorized, vMessage}]] = await Self.rawSql('CALL vn.device_checkLogin(?, ?);', diff --git a/modules/account/back/models/account.js b/modules/account/back/models/account.js index 4dd1987d58..08a5e08119 100644 --- a/modules/account/back/models/account.js +++ b/modules/account/back/models/account.js @@ -10,7 +10,6 @@ module.exports = Self => { require('../methods/account/logout')(Self); require('../methods/account/change-password')(Self); require('../methods/account/set-password')(Self); - require('../methods/account/login-app')(Self); require('../methods/account/handle-user')(Self); Self.setUnverifiedPassword = async(id, pass, options) => { From 144cf20e7148d67d6b3c40da6b6f7ad0615d2e42 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 16 Jul 2024 10:14:19 +0200 Subject: [PATCH 09/24] feat handleUser refs #6868 --- .../account/back/methods/account/login-app.js | 124 ------------------ ...{login-app.spec.js => handle-user.spec.js} | 4 +- 2 files changed, 2 insertions(+), 126 deletions(-) delete mode 100644 modules/account/back/methods/account/login-app.js rename modules/account/back/methods/account/specs/{login-app.spec.js => handle-user.spec.js} (80%) diff --git a/modules/account/back/methods/account/login-app.js b/modules/account/back/methods/account/login-app.js deleted file mode 100644 index 83c727f1a1..0000000000 --- a/modules/account/back/methods/account/login-app.js +++ /dev/null @@ -1,124 +0,0 @@ - -const UserError = require('vn-loopback/util/user-error'); - -module.exports = Self => { - Self.remoteMethodCtx('loginApp', { - description: 'Login a user with username and password for app', - accepts: [ - { - arg: 'user', - type: 'String', - description: 'The user name', - required: true - }, { - arg: 'password', - type: 'String', - required: true, - description: 'The password' - }, { - arg: 'androidId', - type: 'String', - description: 'Android id' - }, { - arg: 'versionApp', - type: 'String', - description: 'Version app' - }, { - arg: 'nameApp', - type: 'String', - description: 'Version app' - }, - - ], - returns: { - type: 'object', - root: true - }, - http: { - path: `/loginApp`, - verb: 'POST' - } - }); - - Self.loginApp = async(ctx, user, password, android_id, versionApp, nameApp, options) => { - const models = Self.app.models; - const myOptions = {}; - if (typeof options == 'object') - Object.assign(myOptions, options); - - const login = await models.Account.login(ctx, user, password, myOptions); - - const {id: userId} = await models.VnUser.findOne({ - where: { - name: user - } - }); - - const [[{vIsAuthorized, vMessage}]] = - await Self.rawSql('CALL vn.device_checkLogin(?, ?);', - [userId, android_id], myOptions); - - if (!vIsAuthorized) - throw new UserError('Not authorized'); - - const isUserInOperator = await models.Operator.findOne({ - where: { - workerFk: userId - } - }, myOptions); - - if (!isUserInOperator) - await models.Operator.create({'workerFk': userId}); - - const serialNumber = (await models.DeviceProduction.findOne({ - where: {android_id: android_id} - }, myOptions))?.serialNumber ?? ''; - - await models.DeviceLog.create({ - 'android_id': android_id, - 'userFk': userId, - 'nameApp': nameApp, - 'versionApp': versionApp, - 'serialNumber': serialNumber - }, myOptions); - ctx.req.accessToken = {userId}; - const getDataUser = await models.VnUser.getCurrentUserData(ctx); - - const getDataOperator = await models.Operator.findOne({ - where: {workerFk: userId}, - fields: ['numberOfWagons', 'warehouseFk', 'itemPackingTypeFk', 'sectorFk', 'sector', - 'trainFk', 'train', 'labelerFk', 'printer'], - include: [ - { - relation: 'sector', - scope: { - fields: ['warehouseFk', 'description'], - } - }, { - relation: 'printer', - scope: { - fields: ['name'], - } - }, { - relation: 'train', - scope: { - fields: ['name'], - } - } - - ] - }, myOptions); - - const getVersion = await models.MobileAppVersionControl.getVersion(ctx, nameApp); - - const combinedResult = { - ...login, - ...getDataOperator.__data, - ...getDataUser.__data, - ...getVersion, - message: vMessage, - serialNumber, - }; - return combinedResult; - }; -}; diff --git a/modules/account/back/methods/account/specs/login-app.spec.js b/modules/account/back/methods/account/specs/handle-user.spec.js similarity index 80% rename from modules/account/back/methods/account/specs/login-app.spec.js rename to modules/account/back/methods/account/specs/handle-user.spec.js index fc05cd726a..621ff28aee 100644 --- a/modules/account/back/methods/account/specs/login-app.spec.js +++ b/modules/account/back/methods/account/specs/handle-user.spec.js @@ -1,9 +1,9 @@ const {models} = require('vn-loopback/server/server'); -describe('Account loginApp()', () => { +describe('Account handleUser()', () => { const ctx = {req: {accessToken: {}}}; fit('should throw an error when user/password is wrong', async() => { - const req = models.Account.loginApp(ctx, 'user', 'pass', 'androidid11234567890', 'warehouse', '10'); + const req = models.Account.handleUser(ctx, 'user', 'pass', 'androidid11234567890', 'warehouse', '10'); await expectAsync(req).toBeRejected(); }); From 7870416860504662b3a332adf90676ac69e257fb Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 16 Jul 2024 17:08:38 +0200 Subject: [PATCH 10/24] feat handleUser refs #6868 --- .../back/methods/account/handle-user.js | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/modules/account/back/methods/account/handle-user.js b/modules/account/back/methods/account/handle-user.js index 136ce48002..02b505e393 100644 --- a/modules/account/back/methods/account/handle-user.js +++ b/modules/account/back/methods/account/handle-user.js @@ -9,7 +9,13 @@ module.exports = Self => { arg: 'androidId', type: 'String', description: 'Android id' - }, { + }, + { + arg: 'deviceId', + type: 'String', + description: 'Device id' + }, + { arg: 'versionApp', type: 'String', description: 'Version app' @@ -30,9 +36,10 @@ module.exports = Self => { } }); - Self.handleUser = async(ctx, android_id, versionApp, nameApp, options) => { + Self.handleUser = async(ctx, androidId, deviceId, versionApp, nameApp, options) => { const models = Self.app.models; const myOptions = {}; + if (typeof options == 'object') Object.assign(myOptions, options); @@ -41,7 +48,7 @@ module.exports = Self => { const [[{vIsAuthorized, vMessage}]] = await Self.rawSql('CALL vn.device_checkLogin(?, ?);', - [user.id, android_id], myOptions); + [user.id, androidId], myOptions); if (!vIsAuthorized) throw new UserError('Not authorized'); @@ -55,18 +62,17 @@ module.exports = Self => { if (!isUserInOperator) await models.Operator.create({'workerFk': user.id}); - const serialNumber = (await models.DeviceProduction.findOne({ - where: {android_id: android_id} - }, myOptions))?.serialNumber ?? ''; + const whereCondition = deviceId ? {id: deviceId} : {android_id: androidId}; + const serialNumber = + (await models.DeviceProduction.findOne({where: whereCondition}, myOptions))?.serialNumber ?? ''; await models.DeviceLog.create({ - 'android_id': android_id, + 'android_id': androidId, 'userFk': user.id, 'nameApp': nameApp, 'versionApp': versionApp, 'serialNumber': serialNumber }, myOptions); - // ctx.req.accessToken = {userId}; const getDataUser = await models.VnUser.getCurrentUserData(ctx); const getDataOperator = await models.Operator.findOne({ From a82df8e2a278711b563f87be024d700d5c232149 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 16 Jul 2024 17:20:35 +0200 Subject: [PATCH 11/24] feat handleUser refs #6868 --- .../methods/account/specs/handle-user.spec.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/modules/account/back/methods/account/specs/handle-user.spec.js b/modules/account/back/methods/account/specs/handle-user.spec.js index 621ff28aee..486d9dc7a9 100644 --- a/modules/account/back/methods/account/specs/handle-user.spec.js +++ b/modules/account/back/methods/account/specs/handle-user.spec.js @@ -1,21 +1,16 @@ const {models} = require('vn-loopback/server/server'); describe('Account handleUser()', () => { - const ctx = {req: {accessToken: {}}}; - fit('should throw an error when user/password is wrong', async() => { - const req = models.Account.handleUser(ctx, 'user', 'pass', 'androidid11234567890', 'warehouse', '10'); + const ctx = {req: {accessToken: {userId: 9}}}; - await expectAsync(req).toBeRejected(); - }); - - fit('should return data from user', async() => { - const user = 'employee'; - const password = 'nightmare'; + it('should return data from user', async() => { const androidId = 'androidid11234567890'; + const deviceId = 1; const nameApp = 'warehouse'; const versionApp = '10'; - const req = models.Account.loginApp(ctx, user, password, androidId, nameApp, versionApp); - await expectAsync(req).toBeResolved(); + const data = await models.Account.handleUser(ctx, androidId, deviceId, versionApp, nameApp); + + expect(data.numberOfWagons).toBe(2); }); }); From d330529bf2d828557d6d83d92b51336417a62170 Mon Sep 17 00:00:00 2001 From: ivanm Date: Tue, 3 Sep 2024 12:33:26 +0200 Subject: [PATCH 12/24] feat: refs #7819 Delete obsolete objects --- db/dump/fixtures.before.sql | 22 +-- .../11210-greenDendro/00-firstScript.sql | 8 ++ .../11210-greenDendro/01-firstScript.sql | 1 + .../11210-greenDendro/02-firstScript.sql | 21 +++ .../11210-greenDendro/03-firstScript.sql | 135 ++++++++++++++++++ 5 files changed, 176 insertions(+), 11 deletions(-) create mode 100644 db/versions/11210-greenDendro/00-firstScript.sql create mode 100644 db/versions/11210-greenDendro/01-firstScript.sql create mode 100644 db/versions/11210-greenDendro/02-firstScript.sql create mode 100644 db/versions/11210-greenDendro/03-firstScript.sql diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql index 703c674436..e32dab52ea 100644 --- a/db/dump/fixtures.before.sql +++ b/db/dump/fixtures.before.sql @@ -2572,18 +2572,18 @@ INSERT INTO `vn`.`rate`(`dated`, `warehouseFk`, `rate0`, `rate1`, `rate2`, `rate (DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR), 1, 10, 15, 20, 25), (util.VN_CURDATE(), 1, 12, 17, 22, 27); -INSERT INTO `vn`.`dua` (id, code, awbFk__, issued, operated, booked, bookEntried, gestdocFk, customsValue, companyFk) +INSERT INTO `vn`.`dua` (id, code, issued, operated, booked, bookEntried, gestdocFk, customsValue, companyFk) VALUES - (1, '19ES0028013A481523', 1, util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 11276.95, 442), - (2, '21ES00280136115760', 2, util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1376.20, 442), - (3, '19ES00280131956004', 3, util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 3, 14268.50, 442), - (4, '19ES00280131955995', 4, util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 8242.50, 442), - (5, '19ES00280132022070', 5, util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 10012.49, 442), - (6, '19ES00280132032308', 6, util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 19914.25, 442), - (7, '19ES00280132025489', 7, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1934.06, 442), - (8, '19ES00280132025490', 8, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 3618.52, 442), - (9, '19ES00280132025491', 9, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 7126.23, 442), - (10, '19ES00280132025492', 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 4631.45, 442); + (1, '19ES0028013A481523', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 11276.95, 442), + (2, '21ES00280136115760', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1376.20, 442), + (3, '19ES00280131956004', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 3, 14268.50, 442), + (4, '19ES00280131955995', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 1, 8242.50, 442), + (5, '19ES00280132022070', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 10012.49, 442), + (6, '19ES00280132032308', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 19914.25, 442), + (7, '19ES00280132025489', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 1934.06, 442), + (8, '19ES00280132025490', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 3618.52, 442), + (9, '19ES00280132025491', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 7126.23, 442), + (10, '19ES00280132025492', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE(), 2, 4631.45, 442); INSERT INTO `vn`.`duaEntry` (`duaFk`, `entryFk`, `value`, `customsValue`, `euroValue`) VALUES diff --git a/db/versions/11210-greenDendro/00-firstScript.sql b/db/versions/11210-greenDendro/00-firstScript.sql new file mode 100644 index 0000000000..58e6450d64 --- /dev/null +++ b/db/versions/11210-greenDendro/00-firstScript.sql @@ -0,0 +1,8 @@ +ALTER TABLE util.config + CHANGE dbVersion dbVersion__ char(11) DEFAULT NULL COMMENT '@deprecated 2024-09-02 refs #7819'; + +ALTER TABLE util.config + CHANGE hasTriggersDisabled hasTriggersDisabled__ tinyint(1) DEFAULT 0 NOT NULL COMMENT '@deprecated 2024-09-02 refs #7819'; + +RENAME TABLE account.accountLog TO account.accountLog__; + ALTER TABLE account.accountLog__ COMMENT='@deprecated 2024-09-02 refs #7819'; diff --git a/db/versions/11210-greenDendro/01-firstScript.sql b/db/versions/11210-greenDendro/01-firstScript.sql new file mode 100644 index 0000000000..7870113436 --- /dev/null +++ b/db/versions/11210-greenDendro/01-firstScript.sql @@ -0,0 +1 @@ +DROP DATABASE IF EXISTS `.mysqlworkbench`; \ No newline at end of file diff --git a/db/versions/11210-greenDendro/02-firstScript.sql b/db/versions/11210-greenDendro/02-firstScript.sql new file mode 100644 index 0000000000..4cb6bbb026 --- /dev/null +++ b/db/versions/11210-greenDendro/02-firstScript.sql @@ -0,0 +1,21 @@ +DROP TABLE IF EXISTS account.mailClientAccess__; +DROP TABLE IF EXISTS account.mailSenderAccess__; +DROP TABLE IF EXISTS bi.analisis_ventas_familia_evolution__; +DROP TABLE IF EXISTS bi.live_counter__; +DROP TABLE IF EXISTS bi.partitioning_information__; +DROP TABLE IF EXISTS bi.primer_pedido__; +DROP TABLE IF EXISTS bi.tarifa_premisas__; +DROP TABLE IF EXISTS bi.tarifa_warehouse__; +DROP TABLE IF EXISTS bs.compradores__; +DROP TABLE IF EXISTS bs.salesMonthlySnapshot___; +DROP TABLE IF EXISTS bs.salesPerson__; +DROP TABLE IF EXISTS bs.vendedores_evolution__; +DROP TABLE IF EXISTS vn.botanicExport__; +DROP TABLE IF EXISTS vn.claimRma__; +DROP TABLE IF EXISTS vn.coolerPathDetail__; +DROP TABLE IF EXISTS vn.forecastedBalance__; +DROP TABLE IF EXISTS vn.routeLoadWorker__; +DROP TABLE IF EXISTS vn.routeUserPercentage__; +DROP TABLE IF EXISTS vn.ticketSms__; +DROP TABLE IF EXISTS vn.ticketTrackingState__; +DROP TABLE IF EXISTS vn.warehouseAlias__; \ No newline at end of file diff --git a/db/versions/11210-greenDendro/03-firstScript.sql b/db/versions/11210-greenDendro/03-firstScript.sql new file mode 100644 index 0000000000..b069d09821 --- /dev/null +++ b/db/versions/11210-greenDendro/03-firstScript.sql @@ -0,0 +1,135 @@ +ALTER TABLE bi.rutasBoard DROP COLUMN coste_bulto__; +ALTER TABLE bi.rutasBoard DROP COLUMN Dia__; +ALTER TABLE bi.rutasBoard DROP COLUMN km__; +ALTER TABLE bi.rutasBoard DROP COLUMN m3__; +ALTER TABLE bi.rutasBoard DROP COLUMN Matricula__; +ALTER TABLE bi.rutasBoard DROP COLUMN month__; +ALTER TABLE bi.rutasBoard DROP COLUMN Terceros__; +ALTER TABLE bi.rutasBoard DROP COLUMN Tipo__; +ALTER TABLE bi.rutasBoard DROP COLUMN warehouse_id__; +ALTER TABLE bi.rutasBoard DROP COLUMN year__; + +ALTER TABLE bs.clientDied DROP COLUMN Boss__; +ALTER TABLE bs.clientDied DROP COLUMN clientName__; +ALTER TABLE bs.clientDied DROP COLUMN workerCode__; + +ALTER TABLE bs.salesByItemTypeDay DROP COLUMN netSale__; + +ALTER TABLE vn.agency DROP FOREIGN KEY agency_FK; +ALTER TABLE vn.agency DROP COLUMN warehouseAliasFk__; + +ALTER TABLE vn.awbComponent DROP COLUMN dated__; + +ALTER TABLE vn.buy DROP COLUMN containerFk__; + +ALTER TABLE vn.chat DROP COLUMN status__; + +ALTER TABLE vn.claim DROP COLUMN rma__; + +ALTER TABLE vn.client DROP COLUMN clientTypeFk__; +ALTER TABLE vn.client DROP COLUMN hasIncoterms__; + +ALTER TABLE vn.clientType DROP COLUMN id__; + +ALTER TABLE vn.cmr DROP FOREIGN KEY cmr_fk1; +ALTER TABLE vn.cmr DROP COLUMN ticketFk__; + +ALTER TABLE vn.company DROP COLUMN sage200Company__; + +ALTER TABLE vn.country DROP FOREIGN KEY country_FK; +ALTER TABLE vn.country DROP COLUMN politicalCountryFk__; + +ALTER TABLE vn.deliveryNote DROP FOREIGN KEY albaran_FK; +ALTER TABLE vn.deliveryNote DROP COLUMN farmingFk__; + +ALTER TABLE vn.dmsType DROP COLUMN path__; + +ALTER TABLE vn.dua DROP COLUMN awbFk__; + +ALTER TABLE vn.entry DROP COLUMN isBlocked__; + +ALTER TABLE vn.expedition DROP COLUMN itemFk__; + +ALTER TABLE vn.item DROP COLUMN minQuantity__; +ALTER TABLE vn.item DROP COLUMN packingShelve__; + +ALTER TABLE vn.itemType DROP COLUMN compression__; +ALTER TABLE vn.itemType DROP COLUMN density__; +ALTER TABLE vn.itemType DROP COLUMN hasComponents__; +ALTER TABLE vn.itemType DROP COLUMN location__; +ALTER TABLE vn.itemType DROP COLUMN maneuver__; +ALTER TABLE vn.itemType DROP COLUMN profit__; +ALTER TABLE vn.itemType DROP COLUMN target__; +ALTER TABLE vn.itemType DROP COLUMN topMargin__; +ALTER TABLE vn.itemType DROP COLUMN transaction__; +ALTER TABLE vn.itemType DROP FOREIGN KEY warehouseFk5; +ALTER TABLE vn.itemType DROP COLUMN warehouseFk__; + +ALTER TABLE vn.ledgerConfig DROP COLUMN lastBookEntry__; + +ALTER TABLE vn.saleTracking DROP FOREIGN KEY saleTracking_FK_1; +ALTER TABLE vn.saleTracking DROP COLUMN actionFk__; + +ALTER TABLE vn.supplier DROP COLUMN isFarmer__; + +ALTER TABLE vn.supplierAccount DROP COLUMN description__; + +ALTER TABLE vn.ticketRequest DROP COLUMN buyerCode__; + +ALTER TABLE vn.travel DROP COLUMN agencyFk__; + +ALTER TABLE vn.warehouse DROP FOREIGN KEY warehouse_ibfk_2; +ALTER TABLE vn.warehouse DROP COLUMN aliasFk__; + +ALTER TABLE vn.worker DROP COLUMN labelerFk__; + +CREATE OR REPLACE +ALGORITHM = UNDEFINED VIEW `vn2008`.`Articles` AS +SELECT `i`.`id` AS `Id_Article`, + `i`.`name` AS `Article`, + `i`.`typeFk` AS `tipo_id`, + `i`.`size` AS `Medida`, + `i`.`inkFk` AS `Color`, + `i`.`category` AS `Categoria`, + `i`.`stems` AS `Tallos`, + `i`.`originFk` AS `id_origen`, + `i`.`description` AS `description`, + `i`.`producerFk` AS `producer_id`, + `i`.`intrastatFk` AS `Codintrastat`, + `i`.`box` AS `caja`, + `i`.`expenseFk` AS `expenseFk`, + `i`.`comment` AS `comments`, + `i`.`relevancy` AS `relevancy`, + `i`.`image` AS `Foto`, + `i`.`generic` AS `generic`, + `i`.`density` AS `density`, + `i`.`minPrice` AS `PVP`, + `i`.`hasMinPrice` AS `Min`, + `i`.`isActive` AS `isActive`, + `i`.`longName` AS `longName`, + `i`.`subName` AS `subName`, + `i`.`tag5` AS `tag5`, + `i`.`value5` AS `value5`, + `i`.`tag6` AS `tag6`, + `i`.`value6` AS `value6`, + `i`.`tag7` AS `tag7`, + `i`.`value7` AS `value7`, + `i`.`tag8` AS `tag8`, + `i`.`value8` AS `value8`, + `i`.`tag9` AS `tag9`, + `i`.`value9` AS `value9`, + `i`.`tag10` AS `tag10`, + `i`.`value10` AS `value10`, + `i`.`minimum` AS `minimum`, + `i`.`upToDown` AS `upToDown`, + `i`.`hasKgPrice` AS `hasKgPrice`, + `i`.`equivalent` AS `Equivalente`, + `i`.`isToPrint` AS `Imprimir`, + `i`.`doPhoto` AS `do_photo`, + `i`.`created` AS `odbc_date`, + `i`.`isFloramondo` AS `isFloramondo`, + `i`.`supplyResponseFk` AS `supplyResponseFk`, + `i`.`stemMultiplier` AS `stemMultiplier`, + `i`.`itemPackingTypeFk` AS `itemPackingTypeFk`, + `i`.`packingOut` AS `packingOut` +FROM `vn`.`item` `i`; \ No newline at end of file From 36cf6b1aeee927320e58e19917405d88d26f533a Mon Sep 17 00:00:00 2001 From: sergiodt Date: Tue, 3 Sep 2024 16:50:55 +0200 Subject: [PATCH 13/24] feat: refs #6868 refs# 6868 handleUser --- modules/account/back/models/account.js | 1 - .../account => worker/back/methods/device}/handle-user.js | 0 .../back/methods/device}/specs/handle-user.spec.js | 4 ++-- modules/worker/back/models/device.js | 1 + 4 files changed, 3 insertions(+), 3 deletions(-) rename modules/{account/back/methods/account => worker/back/methods/device}/handle-user.js (100%) rename modules/{account/back/methods/account => worker/back/methods/device}/specs/handle-user.spec.js (72%) diff --git a/modules/account/back/models/account.js b/modules/account/back/models/account.js index 08a5e08119..ceb26053c6 100644 --- a/modules/account/back/models/account.js +++ b/modules/account/back/models/account.js @@ -10,7 +10,6 @@ module.exports = Self => { require('../methods/account/logout')(Self); require('../methods/account/change-password')(Self); require('../methods/account/set-password')(Self); - require('../methods/account/handle-user')(Self); Self.setUnverifiedPassword = async(id, pass, options) => { const {emailVerified} = await models.VnUser.findById(id, {fields: ['emailVerified']}, options); diff --git a/modules/account/back/methods/account/handle-user.js b/modules/worker/back/methods/device/handle-user.js similarity index 100% rename from modules/account/back/methods/account/handle-user.js rename to modules/worker/back/methods/device/handle-user.js diff --git a/modules/account/back/methods/account/specs/handle-user.spec.js b/modules/worker/back/methods/device/specs/handle-user.spec.js similarity index 72% rename from modules/account/back/methods/account/specs/handle-user.spec.js rename to modules/worker/back/methods/device/specs/handle-user.spec.js index 486d9dc7a9..c4cd37e332 100644 --- a/modules/account/back/methods/account/specs/handle-user.spec.js +++ b/modules/worker/back/methods/device/specs/handle-user.spec.js @@ -1,6 +1,6 @@ const {models} = require('vn-loopback/server/server'); -describe('Account handleUser()', () => { +describe('Device handleUser()', () => { const ctx = {req: {accessToken: {userId: 9}}}; it('should return data from user', async() => { @@ -9,7 +9,7 @@ describe('Account handleUser()', () => { const nameApp = 'warehouse'; const versionApp = '10'; - const data = await models.Account.handleUser(ctx, androidId, deviceId, versionApp, nameApp); + const data = await models.Device.handleUser(ctx, androidId, deviceId, versionApp, nameApp); expect(data.numberOfWagons).toBe(2); }); diff --git a/modules/worker/back/models/device.js b/modules/worker/back/models/device.js index cda7a958fe..6a7d5dba50 100644 --- a/modules/worker/back/models/device.js +++ b/modules/worker/back/models/device.js @@ -1,6 +1,7 @@ const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { + require('../methods/device/handle-user')(Self); Self.rewriteDbError(function(err) { if (err.code === 'ER_DUP_ENTRY') return new UserError(``); From b492a1e6a8858f39f118bc0a356b14ff5f1b7860 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Wed, 11 Sep 2024 08:05:26 +0200 Subject: [PATCH 14/24] feat: refs #6868 refs# 6868 handleUser --- db/versions/11223-turquoiseLilium/00-firstScript.sql | 2 ++ modules/account/back/models/account.json | 7 ------- 2 files changed, 2 insertions(+), 7 deletions(-) create mode 100644 db/versions/11223-turquoiseLilium/00-firstScript.sql diff --git a/db/versions/11223-turquoiseLilium/00-firstScript.sql b/db/versions/11223-turquoiseLilium/00-firstScript.sql new file mode 100644 index 0000000000..9003451c4a --- /dev/null +++ b/db/versions/11223-turquoiseLilium/00-firstScript.sql @@ -0,0 +1,2 @@ +INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) +VALUES( 'Device', 'handleUser', '*', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file diff --git a/modules/account/back/models/account.json b/modules/account/back/models/account.json index 466b2bc042..fc1bbeb3d8 100644 --- a/modules/account/back/models/account.json +++ b/modules/account/back/models/account.json @@ -31,13 +31,6 @@ "principalId": "$everyone", "permission": "ALLOW" }, - { - "property": "loginApp", - "accessType": "EXECUTE", - "principalType": "ROLE", - "principalId": "$everyone", - "permission": "ALLOW" - }, { "property": "logout", "accessType": "EXECUTE", From e5161fe9e261abd6bf9b54447f659a4f31601332 Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 11 Sep 2024 13:26:40 +0200 Subject: [PATCH 15/24] fix: fixed balanceDialog amount field --- modules/client/front/balance/create/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/client/front/balance/create/index.js b/modules/client/front/balance/create/index.js index f4ff0e3aad..f1474e10c0 100644 --- a/modules/client/front/balance/create/index.js +++ b/modules/client/front/balance/create/index.js @@ -33,7 +33,6 @@ class Controller extends Dialog { } }; - this.getAmountPaid(); this.$http.get(`Clients/findOne`, {filter}) .then(res => { this.receipt.email = res.data.email; @@ -52,6 +51,7 @@ class Controller extends Dialog { set companyFk(value) { this.receipt.companyFk = value; + this.getAmountPaid(); } set description(value) { From 0feb44e404307638223a753e442dd7cd13e3110e Mon Sep 17 00:00:00 2001 From: ivanm Date: Wed, 11 Sep 2024 15:07:37 +0200 Subject: [PATCH 16/24] refactor: refs #7923 Delete Logiflora functions --- db/routines/edi/events/floramondo.sql | 8 - .../procedures/floramondo_offerRefresh.sql | 522 ------------------ .../vn/functions/entry_getForLogiflora.sql | 64 --- .../vn/functions/travel_getForLogiflora.sql | 52 -- 4 files changed, 646 deletions(-) delete mode 100644 db/routines/edi/events/floramondo.sql delete mode 100644 db/routines/edi/procedures/floramondo_offerRefresh.sql delete mode 100644 db/routines/vn/functions/entry_getForLogiflora.sql delete mode 100644 db/routines/vn/functions/travel_getForLogiflora.sql diff --git a/db/routines/edi/events/floramondo.sql b/db/routines/edi/events/floramondo.sql deleted file mode 100644 index 0a38f35375..0000000000 --- a/db/routines/edi/events/floramondo.sql +++ /dev/null @@ -1,8 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `edi`.`floramondo` - ON SCHEDULE EVERY 6 MINUTE - STARTS '2022-01-28 09:52:45.000' - ON COMPLETION NOT PRESERVE - DISABLE -DO CALL edi.floramondo_offerRefresh()$$ -DELIMITER ; diff --git a/db/routines/edi/procedures/floramondo_offerRefresh.sql b/db/routines/edi/procedures/floramondo_offerRefresh.sql deleted file mode 100644 index 18d3f8b7e1..0000000000 --- a/db/routines/edi/procedures/floramondo_offerRefresh.sql +++ /dev/null @@ -1,522 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `edi`.`floramondo_offerRefresh`() -proc: BEGIN - DECLARE vLanded DATETIME; - DECLARE vDone INT DEFAULT FALSE; - DECLARE vFreeId INT; - DECLARE vSupplyResponseFk INT; - DECLARE vLastInserted DATETIME; - DECLARE vIsAuctionDay BOOLEAN; - DECLARE vMaxNewItems INT DEFAULT 10000; - DECLARE vStartingTime DATETIME; - DECLARE vAalsmeerMarketPlaceID VARCHAR(13) DEFAULT '8713783439043'; - DECLARE vDayRange INT; - - DECLARE cur1 CURSOR FOR - SELECT id - FROM edi.item_free; - - DECLARE cur2 CURSOR FOR - SELECT srId - FROM itemToInsert; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - DECLARE EXIT HANDLER FOR SQLSTATE '45000' - BEGIN - ROLLBACK; - RESIGNAL; - END; - - DECLARE CONTINUE HANDLER FOR SQLEXCEPTION - BEGIN - DO RELEASE_LOCK('edi.floramondo_offerRefresh'); - SET @isTriggerDisabled = FALSE; - RESIGNAL; - END; - - IF 'test' = (SELECT environment FROM util.config) THEN - LEAVE proc; - END IF; - - IF !GET_LOCK('edi.floramondo_offerRefresh', 0) THEN - LEAVE proc; - END IF; - - SELECT dayRange INTO vDayRange - FROM offerRefreshConfig; - - IF vDayRange IS NULL THEN - CALL util.throw("Variable vDayRange not declared"); - END IF; - - SET vStartingTime = util.VN_NOW(); - - TRUNCATE edi.offerList; - - INSERT INTO edi.offerList(supplier, total) - SELECT v.name, COUNT(DISTINCT sr.ID) total - FROM edi.supplyResponse sr - JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID - WHERE sr.NumberOfUnits > 0 - AND sr.EmbalageCode != 999 - GROUP BY sr.vmpID; - - UPDATE edi.offerList o - JOIN (SELECT v.name, COUNT(*) total - FROM edi.supplyOffer sr - JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID - GROUP BY sr.vmpID) sub ON o.supplier = sub.name - SET o.`filter` = sub.total; - - -- Elimina de la lista de items libres aquellos que ya existen - DELETE itf.* - FROM edi.item_free itf - JOIN vn.item i ON i.id = itf.id; - - CREATE OR REPLACE TEMPORARY TABLE tmp - (INDEX (`Item_ArticleCode`)) - ENGINE = MEMORY - SELECT t.* - FROM ( - SELECT * - FROM edi.supplyOffer - ORDER BY (MarketPlaceID = vAalsmeerMarketPlaceID) DESC, - NumberOfUnits DESC LIMIT 10000000000000000000) t - GROUP BY t.srId; - - CREATE OR REPLACE TEMPORARY TABLE edi.offer (INDEX (`srID`), INDEX (`EmbalageCode`), - INDEX (`ef1`), INDEX (`ef2`), INDEX (`ef3`), INDEX (`ef4`),INDEX (`ef5`), INDEX (`ef6`), - INDEX (`s1Value`), INDEX (`s2Value`), INDEX (`s3Value`), INDEX (`s4Value`),INDEX (`s5Value`), INDEX (`s6Value`)) - ENGINE = MEMORY - SELECT so.*, - ev1.type_description s1Value, - ev2.type_description s2Value, - ev3.type_description s3Value, - ev4.type_description s4Value, - ev5.type_description s5Value, - ev6.type_description s6Value, - eif1.feature ef1, - eif2.feature ef2, - eif3.feature ef3, - eif4.feature ef4, - eif5.feature ef5, - eif6.feature ef6 - FROM tmp so - LEFT JOIN edi.item_feature eif1 ON eif1.item_id = so.Item_ArticleCode - AND eif1.presentation_order = 1 - AND eif1.expiry_date IS NULL - LEFT JOIN edi.item_feature eif2 ON eif2.item_id = so.Item_ArticleCode - AND eif2.presentation_order = 2 - AND eif2.expiry_date IS NULL - LEFT JOIN edi.item_feature eif3 ON eif3.item_id = so.Item_ArticleCode - AND eif3.presentation_order = 3 - AND eif3.expiry_date IS NULL - LEFT JOIN edi.item_feature eif4 ON eif4.item_id = so.Item_ArticleCode - AND eif4.presentation_order = 4 - AND eif4.expiry_date IS NULL - LEFT JOIN edi.item_feature eif5 ON eif5.item_id = so.Item_ArticleCode - AND eif5.presentation_order = 5 - AND eif5.expiry_date IS NULL - LEFT JOIN edi.item_feature eif6 ON eif6.item_id = so.Item_ArticleCode - AND eif6.presentation_order = 6 - AND eif6.expiry_date IS NULL - LEFT JOIN edi.`value` ev1 ON ev1.type_id = eif1.feature - AND so.s1 = ev1.type_value - LEFT JOIN edi.`value` ev2 ON ev2.type_id = eif2.feature - AND so.s2 = ev2.type_value - LEFT JOIN edi.`value` ev3 ON ev3.type_id = eif3.feature - AND so.s3 = ev3.type_value - LEFT JOIN edi.`value` ev4 ON ev4.type_id = eif4.feature - AND so.s4 = ev4.type_value - LEFT JOIN edi.`value` ev5 ON ev5.type_id = eif5.feature - AND so.s5 = ev5.type_value - LEFT JOIN edi.`value` ev6 ON ev6.type_id = eif6.feature - AND so.s6 = ev6.type_value - ORDER BY Price; - - DROP TEMPORARY TABLE tmp; - - DELETE o - FROM edi.offer o - LEFT JOIN vn.tag t1 ON t1.ediTypeFk = o.ef1 AND t1.overwrite = 'size' - LEFT JOIN vn.tag t2 ON t2.ediTypeFk = o.ef2 AND t2.overwrite = 'size' - LEFT JOIN vn.tag t3 ON t3.ediTypeFk = o.ef3 AND t3.overwrite = 'size' - LEFT JOIN vn.tag t4 ON t4.ediTypeFk = o.ef4 AND t4.overwrite = 'size' - LEFT JOIN vn.tag t5 ON t5.ediTypeFk = o.ef5 AND t5.overwrite = 'size' - LEFT JOIN vn.tag t6 ON t6.ediTypeFk = o.ef6 AND t6.overwrite = 'size' - JOIN vn.floramondoConfig fc ON TRUE - WHERE (t1.id IS NOT NULL AND CONVERT(s1Value, UNSIGNED) > fc.itemMaxSize) - OR (t2.id IS NOT NULL AND CONVERT(s2Value, UNSIGNED) > fc.itemMaxSize) - OR (t3.id IS NOT NULL AND CONVERT(s3Value, UNSIGNED) > fc.itemMaxSize) - OR (t4.id IS NOT NULL AND CONVERT(s4Value, UNSIGNED) > fc.itemMaxSize) - OR (t5.id IS NOT NULL AND CONVERT(s5Value, UNSIGNED) > fc.itemMaxSize) - OR (t6.id IS NOT NULL AND CONVERT(s6Value, UNSIGNED) > fc.itemMaxSize); - - START TRANSACTION; - - -- Actualizamos el campo supplyResponseFk para aquellos articulos que ya estan creados y reutilizamos - UPDATE IGNORE edi.offer o - JOIN vn.item i - ON i.name = o.product_name - AND i.subname <=> o.company_name - AND i.value5 <=> o.s1Value - AND i.value6 <=> o.s2Value - AND i.value7 <=> o.s3Value - AND i.value8 <=> o.s4Value - AND i.value9 <=> o.s5Value - AND i.value10 <=> o.s6Value - AND i.NumberOfItemsPerCask <=> o.NumberOfItemsPerCask - AND i.EmbalageCode <=> o.EmbalageCode - AND i.quality <=> o.Quality - JOIN vn.itemType it ON it.id = i.typeFk - LEFT JOIN vn.sale s ON s.itemFk = i.id - LEFT JOIN vn.ticket t ON t.id = s.ticketFk - AND t.shipped > (util.VN_CURDATE() - INTERVAL 1 WEEK) - LEFT JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk - LEFT JOIN edi.deliveryInformation di ON di.supplyResponseID = sr.ID - LEFT JOIN edi.putOrder po ON po.supplyResponseID = i.supplyResponseFk - AND po.OrderTradeLineDateTime > (util.VN_CURDATE() - INTERVAL 1 WEEK) - SET i.supplyResponseFk = o.srID - WHERE (sr.ID IS NULL - OR sr.NumberOfUnits = 0 - OR di.LatestOrderDateTime < util.VN_NOW() - OR di.ID IS NULL) - AND it.isInventory - AND t.id IS NULL - AND po.id IS NULL; - - CREATE OR REPLACE TEMPORARY TABLE itemToInsert - ENGINE = MEMORY - SELECT o.*, CAST(NULL AS DECIMAL(6,0)) itemFk - FROM edi.offer o - LEFT JOIN vn.item i ON i.supplyResponseFk = o.srId - WHERE i.id IS NULL - LIMIT vMaxNewItems; - - -- Reciclado de nº de item - OPEN cur1; - OPEN cur2; - - read_loop: LOOP - - FETCH cur2 INTO vSupplyResponseFk; - FETCH cur1 INTO vFreeId; - - IF vDone THEN - LEAVE read_loop; - END IF; - - UPDATE itemToInsert - SET itemFk = vFreeId - WHERE srId = vSupplyResponseFk; - - END LOOP; - - CLOSE cur1; - CLOSE cur2; - - -- Insertamos todos los items en Articles de la oferta - INSERT INTO vn.item(id, - `name`, - longName, - subName, - expenseFk, - typeFk, - intrastatFk, - originFk, - supplyResponseFk, - numberOfItemsPerCask, - embalageCode, - quality, - isFloramondo) - SELECT iti.itemFk, - iti.product_name, - iti.product_name, - iti.company_name, - iti.expenseFk, - iti.itemTypeFk, - iti.intrastatFk, - iti.originFk, - iti.`srId`, - iti.NumberOfItemsPerCask, - iti.EmbalageCode, - iti.Quality, - TRUE - FROM itemToInsert iti; - - -- Inserta la foto de los articulos nuevos (prioridad alta) - INSERT IGNORE INTO vn.itemImageQueue(itemFk, url) - SELECT i.id, PictureReference - FROM itemToInsert ii - JOIN vn.item i ON i.supplyResponseFk = ii.srId - WHERE PictureReference IS NOT NULL - AND i.image IS NULL; - - INSERT INTO edi.`log`(tableName, fieldName,fieldValue) - SELECT 'itemImageQueue','NumImagenesPtes', COUNT(*) - FROM vn.itemImageQueue - WHERE attempts = 0; - - -- Inserta si se añadiesen tags nuevos - INSERT IGNORE INTO vn.tag (name, ediTypeFk) - SELECT description, type_id FROM edi.type; - - -- Desabilita el trigger para recalcular los tags al final - SET @isTriggerDisabled = TRUE; - - -- Inserta los tags sólo en los articulos nuevos - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , ii.product_name, 1 - FROM itemToInsert ii - JOIN vn.tag t ON t.`name` = 'Producto' - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT ii.product_name IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , ii.Quality, 3 - FROM itemToInsert ii - JOIN vn.tag t ON t.`name` = 'Calidad' - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT ii.Quality IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , ii.company_name, 4 - FROM itemToInsert ii - JOIN vn.tag t ON t.`name` = 'Productor' - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT ii.company_name IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s1Value, 5 - FROM itemToInsert ii - JOIN vn.tag t ON t.ediTypeFk = ii.ef1 - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT s1Value IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s2Value, 6 - FROM itemToInsert ii - JOIN vn.tag t ON t.ediTypeFk = ii.ef2 - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT s2Value IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s3Value, 7 - FROM itemToInsert ii - JOIN vn.tag t ON t.ediTypeFk = ii.ef3 - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT s3Value IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s4Value, 8 - FROM itemToInsert ii - JOIN vn.tag t ON t.ediTypeFk = ii.ef4 - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT s4Value IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s5Value, 9 - FROM itemToInsert ii - JOIN vn.tag t ON t.ediTypeFk = ii.ef5 - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT s5Value IS NULL; - - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s6Value, 10 - FROM itemToInsert ii - JOIN vn.tag t ON t.ediTypeFk = ii.ef6 - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - WHERE NOT s6Value IS NULL; - - INSERT IGNORE INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id, IFNULL(ink.name, ik.color), 11 - FROM itemToInsert ii - JOIN vn.item i ON i.supplyResponseFk = ii.`srId` - JOIN vn.tag t ON t.`name` = 'Color' - LEFT JOIN edi.feature f ON f.item_id = ii.Item_ArticleCode - LEFT JOIN edi.`type` tp ON tp.type_id = f.feature_type_id - AND tp.`description` = 'Hoofdkleur 1' - LEFT JOIN vn.ink ON ink.dutchCode = f.feature_value - LEFT JOIN vn.itemInk ik ON ik.longName = i.longName - WHERE ink.name IS NOT NULL - OR ik.color IS NOT NULL; - - CREATE OR REPLACE TABLE tmp.item - (PRIMARY KEY (id)) - SELECT i.id FROM vn.item i - JOIN itemToInsert ii ON i.supplyResponseFk = ii.`srId`; - - CALL vn.item_refreshTags(); - - DROP TABLE tmp.item; - - SELECT MIN(LatestDeliveryDateTime) INTO vLanded - FROM edi.supplyResponse sr - JOIN edi.deliveryInformation di ON di.supplyResponseID = sr.ID - JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID - JOIN vn.floramondoConfig fc - WHERE mp.isLatestOrderDateTimeRelevant - AND di.LatestOrderDateTime > IF( - fc.MaxLatestOrderHour > HOUR(util.VN_NOW()), - util.VN_CURDATE(), - util.VN_CURDATE() + INTERVAL 1 DAY); - - UPDATE vn.floramondoConfig - SET nextLanded = vLanded - WHERE vLanded IS NOT NULL; - - -- Elimina la oferta obsoleta - UPDATE vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel tr ON tr.id = e.travelFk - JOIN vn.agencyMode am ON am.id = tr.agencyModeFk - JOIN vn.item i ON i.id = b.itemFk - LEFT JOIN edi.supplyResponse sr ON i.supplyResponseFk = sr.ID - LEFT JOIN edi.deliveryInformation di ON di.ID = b.deliveryFk - SET b.quantity = 0 - WHERE (IFNULL(di.LatestOrderDateTime,util.VN_NOW()) <= util.VN_NOW() - OR i.supplyResponseFk IS NULL - OR sr.NumberOfUnits = 0) - AND am.name = 'LOGIFLORA' - AND e.isRaid; - - -- Localiza las entradas de cada almacen - UPDATE edi.warehouseFloramondo - SET entryFk = vn.entry_getForLogiflora(vLanded + INTERVAL travellingDays DAY, warehouseFk); - - IF vLanded IS NOT NULL THEN - -- Actualiza la oferta existente - UPDATE vn.buy b - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk - JOIN vn.item i ON i.id = b.itemFk - JOIN edi.offer o ON i.supplyResponseFk = o.`srId` - SET b.quantity = o.NumberOfUnits * o.NumberOfItemsPerCask, - b.buyingValue = o.price - WHERE (b.quantity <> o.NumberOfUnits * o.NumberOfItemsPerCask - OR b.buyingValue <> o.price); - - -- Inserta el resto - SET vLastInserted := util.VN_NOW(); - - -- Inserta la oferta - INSERT INTO vn.buy ( - entryFk, - itemFk, - quantity, - buyingValue, - stickers, - packing, - `grouping`, - groupingMode, - packagingFk, - deliveryFk) - SELECT wf.entryFk, - i.id, - o.NumberOfUnits * o.NumberOfItemsPerCask quantity, - o.Price, - o.NumberOfUnits etiquetas, - o.NumberOfItemsPerCask packing, - GREATEST(1, IFNULL(o.MinimumQuantity,0)) * o.NumberOfItemsPerCask `grouping`, - 'packing', - o.embalageCode, - o.diId - FROM edi.offer o - JOIN vn.item i ON i.supplyResponseFk = o.srId - JOIN edi.warehouseFloramondo wf - JOIN vn.packaging p ON p.id - LIKE o.embalageCode - LEFT JOIN vn.buy b ON b.itemFk = i.id - AND b.entryFk = wf.entryFk - WHERE b.id IS NULL; -- Quitar esta linea y mirar de crear los packages a tiempo REAL - - INSERT INTO vn.itemCost( - itemFk, - warehouseFk, - cm3, - cm3delivery) - SELECT b.itemFk, - wf.warehouseFk, - @cm3 := vn.buy_getUnitVolume(b.id), - IFNULL((vc.standardFlowerBox * 1000) / i.packingOut, @cm3) - FROM warehouseFloramondo wf - JOIN vn.volumeConfig vc - JOIN vn.buy b ON b.entryFk = wf.entryFk - JOIN vn.item i ON i.id = b.itemFk - LEFT JOIN vn.itemCost ic ON ic.itemFk = b.itemFk - AND ic.warehouseFk = wf.warehouseFk - WHERE (ic.cm3 IS NULL OR ic.cm3 = 0) - ON DUPLICATE KEY UPDATE cm3 = @cm3, cm3delivery = IFNULL((vc.standardFlowerBox * 1000) / i.packingOut, @cm3); - - CREATE OR REPLACE TEMPORARY TABLE tmp.buyRecalc - SELECT b.id - FROM vn.buy b - JOIN warehouseFloramondo wf ON wf.entryFk = b.entryFk - WHERE b.created >= vLastInserted; - - CALL vn.buy_recalcPrices(); - - UPDATE edi.offerList o - JOIN (SELECT v.name, COUNT(DISTINCT b.itemFk) total - FROM vn.buy b - JOIN vn.item i ON i.id = b.itemFk - JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk - JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk - JOIN vn.warehouse w ON w.id = wf.warehouseFk - WHERE w.name = 'VNH' - AND b.quantity > 0 - GROUP BY sr.vmpID) sub ON o.supplier = sub.name - SET o.vnh = sub.total; - - UPDATE edi.offerList o - JOIN (SELECT v.name, COUNT(DISTINCT b.itemFk) total - FROM vn.buy b - JOIN vn.item i ON i.id = b.itemFk - JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk - JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk - JOIN vn.warehouse w ON w.id = wf.warehouseFk - WHERE w.name = 'ALGEMESI' - AND b.quantity > 0 - GROUP BY sr.vmpID) sub ON o.supplier = sub.name - SET o.algemesi = sub.total; - END IF; - - DROP TEMPORARY TABLE - edi.offer, - itemToInsert; - - SET @isTriggerDisabled = FALSE; - - COMMIT; - - -- Esto habria que pasarlo a procesos programados o trabajar con tags y dejar las familias - UPDATE vn.item i - SET typeFk = 121 - WHERE i.longName LIKE 'Rosa Garden %' - AND typeFk = 17; - - UPDATE vn.item i - SET typeFk = 156 - WHERE i.longName LIKE 'Rosa ec %' - AND typeFk = 17; - - -- Refresca las fotos de los items existentes que mostramos (prioridad baja) - INSERT IGNORE INTO vn.itemImageQueue(itemFk, url, priority) - SELECT i.id, sr.PictureReference, 100 - FROM edi.supplyResponse sr - JOIN vn.item i ON i.supplyResponseFk = sr.ID - JOIN edi.supplyOffer so ON so.srId = sr.ID - JOIN hedera.image i2 ON i2.name = i.image - AND i2.collectionFk = 'catalog' - WHERE i2.updated <= (UNIX_TIMESTAMP(util.VN_NOW()) - vDayRange) - AND sr.NumberOfUnits; - - INSERT INTO edi.`log` - SET tableName = 'floramondo_offerRefresh', - fieldName = 'Tiempo de proceso', - fieldValue = TIMEDIFF(util.VN_NOW(), vStartingTime); - - DO RELEASE_LOCK('edi.floramondo_offerRefresh'); -END$$ -DELIMITER ; diff --git a/db/routines/vn/functions/entry_getForLogiflora.sql b/db/routines/vn/functions/entry_getForLogiflora.sql deleted file mode 100644 index 57e787afa2..0000000000 --- a/db/routines/vn/functions/entry_getForLogiflora.sql +++ /dev/null @@ -1,64 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`entry_getForLogiflora`(vLanded DATE, vWarehouseFk INT) - RETURNS int(11) - NOT DETERMINISTIC - READS SQL DATA -BEGIN - - /** - * Devuelve una entrada para Logiflora. Si no existe la crea. - * - * @param vLanded Fecha de llegada al almacén - * @param vWarehouseFk Identificador de vn.warehouse - */ - - DECLARE vTravelFk INT; - DECLARE vEntryFk INT; - DECLARE previousEntryFk INT; - - SET vTravelFk = vn.travel_getForLogiflora(vLanded, vWarehouseFk); - - IF vLanded THEN - - SELECT IFNULL(MAX(id),0) INTO vEntryFk - FROM vn.entry - WHERE travelFk = vTravelFk - AND isRaid; - - IF NOT vEntryFk THEN - - INSERT INTO vn.entry(travelFk, supplierFk, commission, companyFk, currencyFk, isRaid) - SELECT vTravelFk, s.id, 4, c.id, cu.id, TRUE - FROM vn.supplier s - JOIN vn.company c ON c.code = 'VNL' - JOIN vn.currency cu ON cu.code = 'EUR' - WHERE s.name = 'KONINKLIJE COOPERATIEVE BLOEMENVEILING FLORAHOLLAN'; - - SELECT MAX(id) INTO vEntryFk - FROM vn.entry - WHERE travelFk = vTravelFk; - - END IF; - - END IF; - - SELECT entryFk INTO previousEntryFk - FROM edi.warehouseFloramondo wf - WHERE wf.warehouseFk = vWarehouseFk; - - IF IFNULL(previousEntryFk,0) != vEntryFk THEN - - UPDATE buy b - SET b.printedStickers = 0 - WHERE entryFk = previousEntryFk; - - DELETE FROM buy WHERE entryFk = previousEntryFk; - - DELETE FROM entry WHERE id = previousEntryFk; - - END IF; - - RETURN vEntryFk; - -END$$ -DELIMITER ; diff --git a/db/routines/vn/functions/travel_getForLogiflora.sql b/db/routines/vn/functions/travel_getForLogiflora.sql deleted file mode 100644 index 39c3086b79..0000000000 --- a/db/routines/vn/functions/travel_getForLogiflora.sql +++ /dev/null @@ -1,52 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`travel_getForLogiflora`(vLanded DATE, vWarehouseFk INT) - RETURNS int(11) - NOT DETERMINISTIC - READS SQL DATA -BEGIN - - /** - * Devuelve un número de travel para compras de Logiflora a partir de la fecha de llegada y del almacén. - * Si no existe lo genera. - * - * @param vLanded Fecha de llegada al almacén - * @param vWarehouseFk Identificador de vn.warehouse - */ - - DECLARE vTravelFk INT; - - IF vLanded THEN - - SELECT IFNULL(MAX(tr.id),0) INTO vTravelFk - FROM vn.travel tr - JOIN vn.warehouse wIn ON wIn.id = tr.warehouseInFk - JOIN vn.warehouse wOut ON wOut.id = tr.warehouseOutFk - JOIN vn.agencyMode am ON am.id = tr.agencyModeFk - WHERE wIn.id = vWarehouseFk - AND wOut.name = 'Holanda' - AND am.name = 'LOGIFLORA' - AND landed = vLanded; - - IF NOT vTravelFk THEN - - INSERT INTO vn.travel(landed, shipped, warehouseInFk, warehouseOutFk, agencyModeFk) - SELECT vLanded, util.VN_CURDATE(), vWarehouseFk, wOut.id, am.id - FROM vn.warehouse wOut - JOIN vn.agencyMode am ON am.name = 'LOGIFLORA' - WHERE wOut.name = 'Holanda'; - - SELECT MAX(tr.id) INTO vTravelFk - FROM vn.travel tr - JOIN vn.warehouse wIn ON wIn.id = tr.warehouseInFk - JOIN vn.warehouse wOut ON wOut.id = tr.warehouseOutFk - WHERE wIn.id = vWarehouseFk - AND wOut.name = 'Holanda' - AND landed = vLanded; - END IF; - - END IF; - - RETURN vTravelFk; - -END$$ -DELIMITER ; From 93e71638581a6d9067f09b36057e551d7b621b87 Mon Sep 17 00:00:00 2001 From: sergiodt Date: Thu, 12 Sep 2024 17:09:27 +0200 Subject: [PATCH 17/24] feat: refs #6868 refs# 6868 handleUser --- .../worker/back/methods/device/handle-user.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/modules/worker/back/methods/device/handle-user.js b/modules/worker/back/methods/device/handle-user.js index 02b505e393..87aec378e4 100644 --- a/modules/worker/back/methods/device/handle-user.js +++ b/modules/worker/back/methods/device/handle-user.js @@ -59,8 +59,12 @@ module.exports = Self => { } }, myOptions); - if (!isUserInOperator) - await models.Operator.create({'workerFk': user.id}); + if (!isUserInOperator) { + await models.Operator.create({ + 'workerFk': user.id, + 'isOnReservationMode': false + }); + } const whereCondition = deviceId ? {id: deviceId} : {android_id: androidId}; const serialNumber = @@ -103,12 +107,21 @@ module.exports = Self => { const getVersion = await models.MobileAppVersionControl.getVersion(ctx, nameApp); const combinedResult = { + ...getDataOperator.toObject(), + ...getDataUser.toObject(), + ...getVersion, + message: vMessage, + serialNumber, + }; + + const combinedResult2 = { ...getDataOperator.__data, ...getDataUser.__data, ...getVersion, message: vMessage, serialNumber, }; + console.log('conbinedResult2', combinedResult2); return combinedResult; }; }; From 2d4e6670099ef4f2ab8a38dd09923edf9e22385b Mon Sep 17 00:00:00 2001 From: sergiodt Date: Fri, 13 Sep 2024 07:02:30 +0200 Subject: [PATCH 18/24] feat: refs #6868 refs# 6868 handleUser --- modules/worker/back/methods/device/handle-user.js | 9 --------- .../worker/back/methods/device/specs/handle-user.spec.js | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/modules/worker/back/methods/device/handle-user.js b/modules/worker/back/methods/device/handle-user.js index 87aec378e4..ac4ff27045 100644 --- a/modules/worker/back/methods/device/handle-user.js +++ b/modules/worker/back/methods/device/handle-user.js @@ -113,15 +113,6 @@ module.exports = Self => { message: vMessage, serialNumber, }; - - const combinedResult2 = { - ...getDataOperator.__data, - ...getDataUser.__data, - ...getVersion, - message: vMessage, - serialNumber, - }; - console.log('conbinedResult2', combinedResult2); return combinedResult; }; }; diff --git a/modules/worker/back/methods/device/specs/handle-user.spec.js b/modules/worker/back/methods/device/specs/handle-user.spec.js index c4cd37e332..37f76b7659 100644 --- a/modules/worker/back/methods/device/specs/handle-user.spec.js +++ b/modules/worker/back/methods/device/specs/handle-user.spec.js @@ -3,7 +3,7 @@ const {models} = require('vn-loopback/server/server'); describe('Device handleUser()', () => { const ctx = {req: {accessToken: {userId: 9}}}; - it('should return data from user', async() => { + fit('should return data from user', async() => { const androidId = 'androidid11234567890'; const deviceId = 1; const nameApp = 'warehouse'; From e80fe1d0dc8a5189652a1c44ec0985e0c1afd2da Mon Sep 17 00:00:00 2001 From: sergiodt Date: Fri, 13 Sep 2024 07:10:47 +0200 Subject: [PATCH 19/24] feat: refs #6868 refs# 6868 handleUser --- modules/worker/back/methods/device/specs/handle-user.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/worker/back/methods/device/specs/handle-user.spec.js b/modules/worker/back/methods/device/specs/handle-user.spec.js index 37f76b7659..c4cd37e332 100644 --- a/modules/worker/back/methods/device/specs/handle-user.spec.js +++ b/modules/worker/back/methods/device/specs/handle-user.spec.js @@ -3,7 +3,7 @@ const {models} = require('vn-loopback/server/server'); describe('Device handleUser()', () => { const ctx = {req: {accessToken: {userId: 9}}}; - fit('should return data from user', async() => { + it('should return data from user', async() => { const androidId = 'androidid11234567890'; const deviceId = 1; const nameApp = 'warehouse'; From bbb3889154253962b6e59f102190812fb748df08 Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 13 Sep 2024 08:54:03 +0200 Subject: [PATCH 20/24] fix: sql wagonTypeTray --- db/versions/11088-bronzeAspidistra/00-firstScript.sql | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/db/versions/11088-bronzeAspidistra/00-firstScript.sql b/db/versions/11088-bronzeAspidistra/00-firstScript.sql index 5de386df11..751bbf7e32 100644 --- a/db/versions/11088-bronzeAspidistra/00-firstScript.sql +++ b/db/versions/11088-bronzeAspidistra/00-firstScript.sql @@ -1,7 +1,9 @@ +ALTER TABLE vn.collectionWagonTicket DROP FOREIGN KEY IF EXISTS collectionWagonTicket_tray; +ALTER TABLE vn.wagonConfig DROP FOREIGN KEY IF EXISTS wagonConfig_wagonTypeColor_FK; CREATE OR REPLACE TABLE vn.wagonTypeTray ( - id INT UNSIGNED auto_increment NULL, - wagonTypeFk int(11) unsigned NULL, - height INT UNSIGNED NULL, + id INT(11) UNSIGNED, + wagonTypeFk INT(11) unsigned NULL, + height INT(11) UNSIGNED NULL, wagonTypeColorFk int(11) unsigned NULL, CONSTRAINT wagonTypeTray_pk PRIMARY KEY (id), CONSTRAINT wagonTypeTray_wagonType_FK FOREIGN KEY (wagonTypeFk) REFERENCES vn.wagonType(id) ON DELETE CASCADE ON UPDATE RESTRICT, @@ -14,4 +16,4 @@ COLLATE=utf8mb3_unicode_ci; ALTER TABLE vn.wagonConfig ADD IF NOT EXISTS defaultHeight INT UNSIGNED DEFAULT 0 NULL COMMENT 'Default height in cm for a base tray'; ALTER TABLE vn.wagonConfig ADD IF NOT EXISTS defaultTrayColorFk int(11) unsigned NULL COMMENT 'Default color for a base tray'; ALTER TABLE vn.wagonConfig ADD CONSTRAINT wagonConfig_wagonTypeColor_FK FOREIGN KEY (defaultTrayColorFk) REFERENCES vn.wagonTypeColor(id); - +ALTER TABLE vn.collectionWagonTicket ADD CONSTRAINT collectionWagonTicket_tray FOREIGN KEY (trayFk) REFERENCES vn.wagonTypeTray(id); From 63dde3dd786b4f60c7638c33f4268cbcfd5646a4 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 13 Sep 2024 14:13:14 +0200 Subject: [PATCH 21/24] fix: refs #7819 Version --- db/routines/vn2008/views/Articles.sql | 1 - .../11210-greenDendro/02-firstScript.sql | 105 +++++++++--- .../11210-greenDendro/03-firstScript.sql | 156 +++--------------- 3 files changed, 105 insertions(+), 157 deletions(-) diff --git a/db/routines/vn2008/views/Articles.sql b/db/routines/vn2008/views/Articles.sql index 385bf310b5..87f1b6d5ef 100644 --- a/db/routines/vn2008/views/Articles.sql +++ b/db/routines/vn2008/views/Articles.sql @@ -41,7 +41,6 @@ AS SELECT `i`.`id` AS `Id_Article`, `i`.`hasKgPrice` AS `hasKgPrice`, `i`.`equivalent` AS `Equivalente`, `i`.`isToPrint` AS `Imprimir`, - `i`.`family` AS `Familia__`, `i`.`doPhoto` AS `do_photo`, `i`.`created` AS `odbc_date`, `i`.`isFloramondo` AS `isFloramondo`, diff --git a/db/versions/11210-greenDendro/02-firstScript.sql b/db/versions/11210-greenDendro/02-firstScript.sql index 4cb6bbb026..2603c5df5f 100644 --- a/db/versions/11210-greenDendro/02-firstScript.sql +++ b/db/versions/11210-greenDendro/02-firstScript.sql @@ -1,21 +1,84 @@ -DROP TABLE IF EXISTS account.mailClientAccess__; -DROP TABLE IF EXISTS account.mailSenderAccess__; -DROP TABLE IF EXISTS bi.analisis_ventas_familia_evolution__; -DROP TABLE IF EXISTS bi.live_counter__; -DROP TABLE IF EXISTS bi.partitioning_information__; -DROP TABLE IF EXISTS bi.primer_pedido__; -DROP TABLE IF EXISTS bi.tarifa_premisas__; -DROP TABLE IF EXISTS bi.tarifa_warehouse__; -DROP TABLE IF EXISTS bs.compradores__; -DROP TABLE IF EXISTS bs.salesMonthlySnapshot___; -DROP TABLE IF EXISTS bs.salesPerson__; -DROP TABLE IF EXISTS bs.vendedores_evolution__; -DROP TABLE IF EXISTS vn.botanicExport__; -DROP TABLE IF EXISTS vn.claimRma__; -DROP TABLE IF EXISTS vn.coolerPathDetail__; -DROP TABLE IF EXISTS vn.forecastedBalance__; -DROP TABLE IF EXISTS vn.routeLoadWorker__; -DROP TABLE IF EXISTS vn.routeUserPercentage__; -DROP TABLE IF EXISTS vn.ticketSms__; -DROP TABLE IF EXISTS vn.ticketTrackingState__; -DROP TABLE IF EXISTS vn.warehouseAlias__; \ No newline at end of file +ALTER TABLE bi.rutasBoard DROP COLUMN coste_bulto__; +ALTER TABLE bi.rutasBoard DROP COLUMN Dia__; +ALTER TABLE bi.rutasBoard DROP COLUMN km__; +ALTER TABLE bi.rutasBoard DROP COLUMN m3__; +ALTER TABLE bi.rutasBoard DROP COLUMN Matricula__; +ALTER TABLE bi.rutasBoard DROP COLUMN month__; +ALTER TABLE bi.rutasBoard DROP COLUMN Terceros__; +ALTER TABLE bi.rutasBoard DROP COLUMN Tipo__; +ALTER TABLE bi.rutasBoard DROP COLUMN warehouse_id__; +ALTER TABLE bi.rutasBoard DROP COLUMN year__; + +ALTER TABLE bs.clientDied DROP COLUMN Boss__; +ALTER TABLE bs.clientDied DROP COLUMN clientName__; +ALTER TABLE bs.clientDied DROP COLUMN workerCode__; + +ALTER TABLE bs.salesByItemTypeDay DROP COLUMN netSale__; + +ALTER TABLE vn.agency DROP FOREIGN KEY agency_FK; +ALTER TABLE vn.agency DROP COLUMN warehouseAliasFk__; + +ALTER TABLE vn.awbComponent DROP COLUMN dated__; + +ALTER TABLE vn.buy DROP COLUMN containerFk__; + +ALTER TABLE vn.chat DROP COLUMN status__; + +ALTER TABLE vn.claim DROP COLUMN rma__; + +ALTER TABLE vn.client DROP COLUMN clientTypeFk__; +ALTER TABLE vn.client DROP COLUMN hasIncoterms__; + +ALTER TABLE vn.clientType DROP COLUMN id__; + +ALTER TABLE vn.cmr DROP FOREIGN KEY cmr_fk1; +ALTER TABLE vn.cmr DROP COLUMN ticketFk__; + +ALTER TABLE vn.company DROP COLUMN sage200Company__; + +ALTER TABLE vn.country DROP FOREIGN KEY country_FK; +ALTER TABLE vn.country DROP COLUMN politicalCountryFk__; + +ALTER TABLE vn.deliveryNote DROP FOREIGN KEY albaran_FK; +ALTER TABLE vn.deliveryNote DROP COLUMN farmingFk__; + +ALTER TABLE vn.dmsType DROP COLUMN path__; + +ALTER TABLE vn.dua DROP COLUMN awbFk__; + +ALTER TABLE vn.entry DROP COLUMN isBlocked__; + +ALTER TABLE vn.expedition DROP COLUMN itemFk__; + +ALTER TABLE vn.item DROP COLUMN minQuantity__; +ALTER TABLE vn.item DROP COLUMN packingShelve__; + +ALTER TABLE vn.itemType DROP COLUMN compression__; +ALTER TABLE vn.itemType DROP COLUMN density__; +ALTER TABLE vn.itemType DROP COLUMN hasComponents__; +ALTER TABLE vn.itemType DROP COLUMN location__; +ALTER TABLE vn.itemType DROP COLUMN maneuver__; +ALTER TABLE vn.itemType DROP COLUMN profit__; +ALTER TABLE vn.itemType DROP COLUMN target__; +ALTER TABLE vn.itemType DROP COLUMN topMargin__; +ALTER TABLE vn.itemType DROP COLUMN transaction__; +ALTER TABLE vn.itemType DROP FOREIGN KEY warehouseFk5; +ALTER TABLE vn.itemType DROP COLUMN warehouseFk__; + +ALTER TABLE vn.ledgerConfig DROP COLUMN lastBookEntry__; + +ALTER TABLE vn.saleTracking DROP FOREIGN KEY saleTracking_FK_1; +ALTER TABLE vn.saleTracking DROP COLUMN actionFk__; + +ALTER TABLE vn.supplier DROP COLUMN isFarmer__; + +ALTER TABLE vn.supplierAccount DROP COLUMN description__; + +ALTER TABLE vn.ticketRequest DROP COLUMN buyerCode__; + +ALTER TABLE vn.travel DROP COLUMN agencyFk__; + +ALTER TABLE vn.warehouse DROP FOREIGN KEY warehouse_ibfk_2; +ALTER TABLE vn.warehouse DROP COLUMN aliasFk__; + +ALTER TABLE vn.worker DROP COLUMN labelerFk__; diff --git a/db/versions/11210-greenDendro/03-firstScript.sql b/db/versions/11210-greenDendro/03-firstScript.sql index b069d09821..f8157b7568 100644 --- a/db/versions/11210-greenDendro/03-firstScript.sql +++ b/db/versions/11210-greenDendro/03-firstScript.sql @@ -1,135 +1,21 @@ -ALTER TABLE bi.rutasBoard DROP COLUMN coste_bulto__; -ALTER TABLE bi.rutasBoard DROP COLUMN Dia__; -ALTER TABLE bi.rutasBoard DROP COLUMN km__; -ALTER TABLE bi.rutasBoard DROP COLUMN m3__; -ALTER TABLE bi.rutasBoard DROP COLUMN Matricula__; -ALTER TABLE bi.rutasBoard DROP COLUMN month__; -ALTER TABLE bi.rutasBoard DROP COLUMN Terceros__; -ALTER TABLE bi.rutasBoard DROP COLUMN Tipo__; -ALTER TABLE bi.rutasBoard DROP COLUMN warehouse_id__; -ALTER TABLE bi.rutasBoard DROP COLUMN year__; - -ALTER TABLE bs.clientDied DROP COLUMN Boss__; -ALTER TABLE bs.clientDied DROP COLUMN clientName__; -ALTER TABLE bs.clientDied DROP COLUMN workerCode__; - -ALTER TABLE bs.salesByItemTypeDay DROP COLUMN netSale__; - -ALTER TABLE vn.agency DROP FOREIGN KEY agency_FK; -ALTER TABLE vn.agency DROP COLUMN warehouseAliasFk__; - -ALTER TABLE vn.awbComponent DROP COLUMN dated__; - -ALTER TABLE vn.buy DROP COLUMN containerFk__; - -ALTER TABLE vn.chat DROP COLUMN status__; - -ALTER TABLE vn.claim DROP COLUMN rma__; - -ALTER TABLE vn.client DROP COLUMN clientTypeFk__; -ALTER TABLE vn.client DROP COLUMN hasIncoterms__; - -ALTER TABLE vn.clientType DROP COLUMN id__; - -ALTER TABLE vn.cmr DROP FOREIGN KEY cmr_fk1; -ALTER TABLE vn.cmr DROP COLUMN ticketFk__; - -ALTER TABLE vn.company DROP COLUMN sage200Company__; - -ALTER TABLE vn.country DROP FOREIGN KEY country_FK; -ALTER TABLE vn.country DROP COLUMN politicalCountryFk__; - -ALTER TABLE vn.deliveryNote DROP FOREIGN KEY albaran_FK; -ALTER TABLE vn.deliveryNote DROP COLUMN farmingFk__; - -ALTER TABLE vn.dmsType DROP COLUMN path__; - -ALTER TABLE vn.dua DROP COLUMN awbFk__; - -ALTER TABLE vn.entry DROP COLUMN isBlocked__; - -ALTER TABLE vn.expedition DROP COLUMN itemFk__; - -ALTER TABLE vn.item DROP COLUMN minQuantity__; -ALTER TABLE vn.item DROP COLUMN packingShelve__; - -ALTER TABLE vn.itemType DROP COLUMN compression__; -ALTER TABLE vn.itemType DROP COLUMN density__; -ALTER TABLE vn.itemType DROP COLUMN hasComponents__; -ALTER TABLE vn.itemType DROP COLUMN location__; -ALTER TABLE vn.itemType DROP COLUMN maneuver__; -ALTER TABLE vn.itemType DROP COLUMN profit__; -ALTER TABLE vn.itemType DROP COLUMN target__; -ALTER TABLE vn.itemType DROP COLUMN topMargin__; -ALTER TABLE vn.itemType DROP COLUMN transaction__; -ALTER TABLE vn.itemType DROP FOREIGN KEY warehouseFk5; -ALTER TABLE vn.itemType DROP COLUMN warehouseFk__; - -ALTER TABLE vn.ledgerConfig DROP COLUMN lastBookEntry__; - -ALTER TABLE vn.saleTracking DROP FOREIGN KEY saleTracking_FK_1; -ALTER TABLE vn.saleTracking DROP COLUMN actionFk__; - -ALTER TABLE vn.supplier DROP COLUMN isFarmer__; - -ALTER TABLE vn.supplierAccount DROP COLUMN description__; - -ALTER TABLE vn.ticketRequest DROP COLUMN buyerCode__; - -ALTER TABLE vn.travel DROP COLUMN agencyFk__; - -ALTER TABLE vn.warehouse DROP FOREIGN KEY warehouse_ibfk_2; -ALTER TABLE vn.warehouse DROP COLUMN aliasFk__; - -ALTER TABLE vn.worker DROP COLUMN labelerFk__; - -CREATE OR REPLACE -ALGORITHM = UNDEFINED VIEW `vn2008`.`Articles` AS -SELECT `i`.`id` AS `Id_Article`, - `i`.`name` AS `Article`, - `i`.`typeFk` AS `tipo_id`, - `i`.`size` AS `Medida`, - `i`.`inkFk` AS `Color`, - `i`.`category` AS `Categoria`, - `i`.`stems` AS `Tallos`, - `i`.`originFk` AS `id_origen`, - `i`.`description` AS `description`, - `i`.`producerFk` AS `producer_id`, - `i`.`intrastatFk` AS `Codintrastat`, - `i`.`box` AS `caja`, - `i`.`expenseFk` AS `expenseFk`, - `i`.`comment` AS `comments`, - `i`.`relevancy` AS `relevancy`, - `i`.`image` AS `Foto`, - `i`.`generic` AS `generic`, - `i`.`density` AS `density`, - `i`.`minPrice` AS `PVP`, - `i`.`hasMinPrice` AS `Min`, - `i`.`isActive` AS `isActive`, - `i`.`longName` AS `longName`, - `i`.`subName` AS `subName`, - `i`.`tag5` AS `tag5`, - `i`.`value5` AS `value5`, - `i`.`tag6` AS `tag6`, - `i`.`value6` AS `value6`, - `i`.`tag7` AS `tag7`, - `i`.`value7` AS `value7`, - `i`.`tag8` AS `tag8`, - `i`.`value8` AS `value8`, - `i`.`tag9` AS `tag9`, - `i`.`value9` AS `value9`, - `i`.`tag10` AS `tag10`, - `i`.`value10` AS `value10`, - `i`.`minimum` AS `minimum`, - `i`.`upToDown` AS `upToDown`, - `i`.`hasKgPrice` AS `hasKgPrice`, - `i`.`equivalent` AS `Equivalente`, - `i`.`isToPrint` AS `Imprimir`, - `i`.`doPhoto` AS `do_photo`, - `i`.`created` AS `odbc_date`, - `i`.`isFloramondo` AS `isFloramondo`, - `i`.`supplyResponseFk` AS `supplyResponseFk`, - `i`.`stemMultiplier` AS `stemMultiplier`, - `i`.`itemPackingTypeFk` AS `itemPackingTypeFk`, - `i`.`packingOut` AS `packingOut` -FROM `vn`.`item` `i`; \ No newline at end of file +DROP TABLE IF EXISTS account.mailClientAccess__; +DROP TABLE IF EXISTS account.mailSenderAccess__; +DROP TABLE IF EXISTS bi.analisis_ventas_familia_evolution__; +DROP TABLE IF EXISTS bi.live_counter__; +DROP TABLE IF EXISTS bi.partitioning_information__; +DROP TABLE IF EXISTS bi.primer_pedido__; +DROP TABLE IF EXISTS bi.tarifa_premisas__; +DROP TABLE IF EXISTS bi.tarifa_warehouse__; +DROP TABLE IF EXISTS bs.compradores__; +DROP TABLE IF EXISTS bs.salesMonthlySnapshot___; +DROP TABLE IF EXISTS bs.salesPerson__; +DROP TABLE IF EXISTS bs.vendedores_evolution__; +DROP TABLE IF EXISTS vn.botanicExport__; +DROP TABLE IF EXISTS vn.claimRma__; +DROP TABLE IF EXISTS vn.coolerPathDetail__; +DROP TABLE IF EXISTS vn.forecastedBalance__; +DROP TABLE IF EXISTS vn.routeLoadWorker__; +DROP TABLE IF EXISTS vn.routeUserPercentage__; +DROP TABLE IF EXISTS vn.ticketSms__; +DROP TABLE IF EXISTS vn.ticketTrackingState__; +DROP TABLE IF EXISTS vn.warehouseAlias__; From 6f1d962db25fd2b3f536875cedd2393ca75673c0 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 13 Sep 2024 14:39:47 +0200 Subject: [PATCH 22/24] fix: refs #7644 Update in print method --- modules/entry/back/methods/entry/print.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/entry/back/methods/entry/print.js b/modules/entry/back/methods/entry/print.js index c155c3d8b1..4d36dda7d4 100644 --- a/modules/entry/back/methods/entry/print.js +++ b/modules/entry/back/methods/entry/print.js @@ -53,6 +53,13 @@ module.exports = Self => { } if (!merger._doc) throw new UserError('The entry not have stickers'); + + await Self.rawSql(` + UPDATE buy + SET printedStickers = stickers + WHERE entryFk = ? + `, [id], options); + return [await merger.saveAsBuffer(), 'application/pdf', `filename="entry-${id}.pdf"`]; }; }; From 635eb405a29b0d571f1b67650d7e7d83734f40a6 Mon Sep 17 00:00:00 2001 From: guillermo Date: Fri, 13 Sep 2024 14:53:44 +0200 Subject: [PATCH 23/24] fix: refs #7644 Update in print method --- modules/entry/back/methods/entry/print.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/entry/back/methods/entry/print.js b/modules/entry/back/methods/entry/print.js index 4d36dda7d4..5b9de9a695 100644 --- a/modules/entry/back/methods/entry/print.js +++ b/modules/entry/back/methods/entry/print.js @@ -58,7 +58,7 @@ module.exports = Self => { UPDATE buy SET printedStickers = stickers WHERE entryFk = ? - `, [id], options); + `, [id], myOptions); return [await merger.saveAsBuffer(), 'application/pdf', `filename="entry-${id}.pdf"`]; }; From d7679fcb500a7c09e9c5ec5d9695bf8570b4b976 Mon Sep 17 00:00:00 2001 From: jgallego Date: Mon, 16 Sep 2024 09:01:47 +0200 Subject: [PATCH 24/24] feat: refs #7977 muestra las facturas sin vencimientos tambien --- .../procedures/supplier_statementWithEntries.sql | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/db/routines/vn/procedures/supplier_statementWithEntries.sql b/db/routines/vn/procedures/supplier_statementWithEntries.sql index df3b918a78..55b2712963 100644 --- a/db/routines/vn/procedures/supplier_statementWithEntries.sql +++ b/db/routines/vn/procedures/supplier_statementWithEntries.sql @@ -17,14 +17,14 @@ BEGIN * @param vOrderBy Order by criteria * @param vIsConciliated Indicates whether it is reconciled or not * @param vHasEntries Indicates if future entries must be shown -* @return tmp.supplierStatement +* @return tmp.supplierStatement */ DECLARE vBalanceStartingDate DATETIME; SET @euroBalance:= 0; SET @currencyBalance:= 0; - SELECT balanceStartingDate + SELECT balanceStartingDate INTO vBalanceStartingDate FROM invoiceInConfig; @@ -64,14 +64,14 @@ BEGIN c.code, 'invoiceIn' statementType FROM invoiceIn ii - JOIN invoiceInDueDay iid ON iid.invoiceInFk = ii.id + LEFT JOIN invoiceInDueDay iid ON iid.invoiceInFk = ii.id JOIN currency c ON c.id = ii.currencyFk WHERE ii.issued >= vBalanceStartingDate - AND ii.supplierFk = vSupplierFk + AND ii.supplierFk = vSupplierFk AND vCurrencyFk IN (ii.currencyFk, 0) AND vCompanyFk IN (ii.companyFk, 0) AND (vIsConciliated = ii.isBooked OR NOT vIsConciliated) - GROUP BY iid.id + GROUP BY iid.id, ii.id UNION ALL SELECT p.bankFk, p.companyFk, @@ -107,7 +107,7 @@ BEGIN AND vCurrencyFk IN (p.currencyFk, 0) AND vCompanyFk IN (p.companyFk, 0) AND (vIsConciliated = p.isConciliated OR NOT vIsConciliated) - UNION ALL + UNION ALL SELECT NULL, companyFk, NULL, @@ -134,7 +134,7 @@ BEGIN AND vCurrencyFk IN (se.currencyFk,0) AND vCompanyFk IN (se.companyFk,0) AND (vIsConciliated = se.isConciliated OR NOT vIsConciliated) - UNION ALL + UNION ALL SELECT NULL bankFk, e.companyFk, 'E' serial, @@ -150,7 +150,7 @@ BEGIN FALSE isBooked, c.code, 'order' - FROM entry e + FROM entry e JOIN travel tr ON tr.id = e.travelFk JOIN currency c ON c.id = e.currencyFk WHERE e.supplierFk = vSupplierFk